【问题标题】:Store "Provider" and "Terraform" version in separate TF file?将“Provider”和“Terraform”版本存储在单独的 TF 文件中?
【发布时间】:2019-04-18 22:48:40
【问题描述】:

目前,我必须在每个 Terraform 模板中定义 Terraform 版本和 Provider 版本。

我想在我的 Terraform 模板之外有一个文件,我可以在其中定义 Provider 版本和 Terraform 版本以用于目录结构中的每个模板。

我查看过使用覆盖文件 (https://www.terraform.io/docs/configuration/override.html),但似乎我必须从 override.tf 文件中的每个模板定义整个 Terraform/Provider 块。我真的很想告诉 Terraform 查看(伪文件)versions.tf,例如,为每个模板获取必要的版本。

所以这样的东西将是所需的(简化的)目录结构:

 terraform
     ├── dev
     │   └── main.tf
     ├── prod
     │   └── main.tf
     ├── stg
     │   └── main.tf
     └── versions.tf

现在只需要在versions.tf 中定义一个 Provider 版本和一个 Terraform 版本

是否可以通过这种方式将 Provider/Terraform 版本传递到模板中?

【问题讨论】:

  • 这些目录为什么不能成为工作空间?这将解决您和其他人的问题。

标签: terraform provider


【解决方案1】:

如果您不想使用Terraform Workspaces,则在每个子目录中创建一个指向versions.tf 文件的符号链接。

例如,如果您的结构是:

terraform
     ├── dev
     │   └── main.tf
     ├── prod
     │   └── main.tf
     ├── stg
     │   └── main.tf
     └── versions.tf

如果您希望每个子目录(devprodstg)指向根目录 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

然后,您可以使用 terraform 插值来执行不同的操作,具体取决于您所处理的环境,terraform 状态也会在每个工作区单独存储。

因此,如果您想在 dev 环境中工作,请切换到该环境:

terraform workspace select dev

【讨论】:

  • 我确实使用工作区,但不太确定如何解决这个问题。你能详细说明一下吗?同样,您如何使用符号链接来实现这一点?
  • @xyz1234 我已经用更多信息编辑了我的答案。
  • 感谢您的澄清。我明白你在说什么。所以听起来我必须为versions.tf中的每个模板定义我的提供程序块、terraform块、remote_state块,对吗?
猜你喜欢
  • 2022-12-18
  • 2017-02-06
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 2013-08-27
  • 2019-05-16
  • 2018-04-26
  • 2014-10-19
相关资源
最近更新 更多