Terraform 商店「;供应商;及;“地形”;版本在单独的TF文件中?
目前,我必须在每个Terraform模板中定义Terraform版本和提供程序版本 我希望在我的Terraform模板之外有一个文件,在这里我可以定义提供者版本和Terraform版本,以用于目录结构中的每个模板 我已经研究过使用覆盖文件(),但似乎我必须从Terraform 商店「;供应商;及;“地形”;版本在单独的TF文件中?,terraform,provider,Terraform,Provider,目前,我必须在每个Terraform模板中定义Terraform版本和提供程序版本 我希望在我的Terraform模板之外有一个文件,在这里我可以定义提供者版本和Terraform版本,以用于目录结构中的每个模板 我已经研究过使用覆盖文件(),但似乎我必须从override.tf文件中的每个模板定义整个Terraform/Provider块。我真的很想告诉Terraform查看(伪文件)versions.tf,例如,获取每个模板所需的版本 这样的目录结构就是理想的(简化的)目录结构: terr
override.tf
文件中的每个模板定义整个Terraform/Provider块。我真的很想告诉Terraform查看(伪文件)versions.tf,例如,获取每个模板所需的版本
这样的目录结构就是理想的(简化的)目录结构:
terraform
├── dev
│ └── main.tf
├── prod
│ └── main.tf
├── stg
│ └── main.tf
└── versions.tf
现在只需要在versions.tf中定义一个提供者版本和一个地形版本
是否可以通过这种方式将提供程序/地形版本传递到模板中?如果不想使用,请在每个子目录中创建一个符号链接,指向版本.tf
文件
例如,如果您的结构是:
terraform
├── dev
│ └── main.tf
├── prod
│ └── main.tf
├── stg
│ └── main.tf
└── versions.tf
如果希望每个子目录(dev
,prod
,stg
)指向根terraform
目录上的versions.tf
文件,请在每个子目录中创建一个符号链接:
ln -sf terraform/versions.tf terraform/dev/versions.tf
ln -sf terraform/versions.tf terraform/prod/versions.tf
ln -sf terraform/versions.tf terraform/stg/versions.tf
您的最终结构将是:
terraform
├── dev
│ └── main.tf
│ └── versions.tf -> ../versions.tf
├── prod
│ └── main.tf
│ └── versions.tf -> ../versions.tf
├── stg
│ └── main.tf
│ └── versions.tf -> ../versions.tf
└── versions.tf
使用Terraform工作区,而不是为您正在使用的每个“环境”都有一个子目录,因此只有一个目录,如:
terraform
├── main.tf
└── versions.tf
以及通过以下操作创建的每个环境的工作区:
terraform workspace new dev
然后使用地形插值执行不同的操作,具体取决于您所处的环境,地形状态也会在每个工作空间中单独存储
因此,如果您想在dev
环境中工作,请切换到该环境:
terraform workspace select dev
这些目录不能成为工作区有什么原因吗?这将解决您和其他人的问题。我确实使用工作区,但不太确定如何解决此问题。你能详细说明一下吗?类似地,你如何通过符号链接实现这一点?@xyz1234我已经用更多信息编辑了我的答案。谢谢你的澄清。我明白你的意思。所以听起来我必须为versions.tf中的每个模板定义我的提供者块、地形块、远程状态块,对吗?