我应该版本 .terraform 文件夹吗?

pol*_*loC 2 terraform

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

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

我应该版本这些文件吗?我会说不...

Mar*_*ins 7

.terraform目录是一个本地缓存,Terraform 会在其中保留一些文件,以便针对此配置进行后续操作。其内容不打算包含在版本控制中。

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

  • 使用required_providersterraform块指定谷歌云平台提供商的确切版本约束:

    terraform {
      required_providers {
        google = "3.0.0"
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    module "example"
      source = "git::https://github.com/example/example.git?ref=v2.0.0"
      # ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
    module "example"
      source  = "hashicorp/consul/aws"
      version = "v1.2.0
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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