【问题标题】:Should I version the .terraform folder?我应该对 .terraform 文件夹进行版本控制吗?
【发布时间】:2019-12-12 00:00:51
【问题描述】:

我开始使用 Terraform,我有一个由“terraform init/apply”创建的 .terraform 文件夹,其中包含:

  • ./plugins/linux_amd64/lock.json
  • ./plugins/linux_amd64/terraform-provider-google
  • ./plugins/modules/modules.json
  • terraform.tfstate

我应该对这些文件进行版本控制吗?我会说不...

【问题讨论】:

    标签: terraform


    【解决方案1】:

    .terraform 目录是一个本地缓存,Terraform 在其中保留了一些文件,这些文件将用于针对此配置的后续操作。它的内容不打算包含在版本控制中。

    但是,您可以通过在配置中指定某些内容来告知 Terraform 将在其中放置的内容,以确保您可以在其他系统上忠实地复制此目录:

    • 在 terraform 块中使用 required_providers 为 Google Cloud Platform 提供程序指定确切的版本约束:

      terraform {
        required_providers {
          google = "3.0.0"
        }
      }
      

      (这与.terraform/plugins 目录有关)

    • 在您调用的每个模块中(目前似乎没有,但可能在将来),确保它的 source 指的是一个确切的版本而不是一个浮动分支(对于 VCS 模块)或将 version 设置为一个确切的版本(对于来自Terraform Registry 的模块):

      module "example"
        source = "git::https://github.com/example/example.git?ref=v2.0.0"
        # ...
      }
      
      module "example"
        source  = "hashicorp/consul/aws"
        version = "v1.2.0
      }
      

      (这与.terraform/modules 目录有关)

    • 如果您使用远程后端,请将完整配置包含在 terraform 块内的 backend 块中,而不是使用 -backend-config 参数到 terraform init。

      (这与.terraform/terraform.tfstate 文件有关,该文件会记住您的活动后端配置以供以后操作)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2022-12-22
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 2021-05-17
      相关资源
      最近更新 更多