我将通过Terraform管理数十个应用程序的CDN配置。我有一组.tf
文件,其中包含所有配置中共有的所有默认常量设置,然后每个应用程序都有自己的.tfvars
文件来保存其唯一设置。
如果我运行类似terraform apply --var-file=app1.tfvars --var-file=app2.tfvars --var-file=app3.tfvars
的文件,则仅使用最后传入的文件。
即使这样做确实有效,当我将其扩展到更多站点时,也将变得难以管理。
合并多个.tfvars
文件以填充一组常见的.tf
文件的正确方法是什么?
编辑:我应该补充一点,.tfvar
文件定义相同的变量,但具有不同的值。我需要为每个.tf
文件声明一次.tfvar
文件中定义的资源的状态。
最佳方法可能是使用GruntWork的TerraGrunt https://terragrunt.gruntwork.io/,它是Terraform的薄包装,您可以使用HCL配置文件来定义您的要求。
示例terragrunt.hcl配置:
我发现处理这种情况的最佳方法(不使用任何第三方工具)是Terraform工作区并为每个.tfvars
文件创建一个单独的工作区。这样,我可以使用相同的通用.tf
文件,并在使用每个terraform workspace select <workspace name>
文件运行terraform apply --var-file=<filename>
之前,只需使用.tfvars
交换到另一个工作区。