【问题标题】:Terraform plan after fetching terraform configuration获取 terraform 配置后的 Terraform 计划
【发布时间】:2021-08-22 15:55:53
【问题描述】:

我将 terraform 与 aws 提供程序一起使用。

看来 terraform 应该有用于更新资源的状态文件。当我将我的 terraform 配置从一台 PC 提交到 git 并从另一台 PC 获取它时,terraform plan 想要创建所有资源,尽管资源实际上是在另一台 PC 上创建的。如何在不将状态文件提交到 git 的情况下解决此问题?

【问题讨论】:

    标签: git amazon-web-services terraform


    【解决方案1】:

    Terraform 是基础设施即代码,需要管理状态文件。对于 AWS Cloud,最受欢迎的选择是 AWS S3 存储桶。 Here is more on terraform state management

    1. 创建一个 S3 存储桶来存储状态文件。
    2. 确保它具有适当的权限
    3. 在您的 Terraform 代码中,reference the S3 bucket as backend

    【讨论】:

      【解决方案2】:

      在这种情况下,您可以使用Remote State。如果您使用 AWS,则可以使用 s3 backend 将状态存储在您选择的存储桶中。来自文档的示例:

      terraform {
        backend "s3" {
          bucket = "mybucket"
          key    = "path/to/my/key"
          region = "us-east-1"
        }
      }
      

      Terraform 提供了很多关于如何设置和使用此类后端的示例和用例场景,最重要的是如何Protect Access to Workspace State

      其他后端也是可以的,例如 Terraform Cloud、Azure Blob Storage、Google Cloud Storage、阿里云 OSS 等等。

      【讨论】:

        【解决方案3】:

        管理后端状态非常重要。听起来您的 .gitignore 文件不包括您的本地状态文件?通常这些行在 .gitignore 中用于 terraform:

        # Local .terraform directories
        **/.terraform/*
        
        # .tfstate files
        *.tfstate
        *.tfstate.*
        

        如果您取出上面的状态文件行,这意味着您将在另一台 PC 上检查它们并保持相同的状态。但如前所述,远程管理您的状态文件是理想的选择。

        【讨论】:

          猜你喜欢
          • 2021-09-03
          • 1970-01-01
          • 2019-10-13
          • 2019-06-13
          • 2021-04-04
          • 2018-10-15
          • 2021-05-21
          • 1970-01-01
          • 2021-10-28
          相关资源
          最近更新 更多