维护多个Terraform模块的状态文件

时间:2019-11-10 07:51:25

标签: terraform azure-aks

我正在为我的生产基础结构构建一个平台。我的模块目录结构如下  main.tf
 variable.tf
 terraform.tfvars
  |----->AKS/main.tf
  |----->Mysql/main.tf
  |----->Kafka/main.tf

我在设计上述结构的状态文件时遇到了问题。在构建AKS时,我们必须手动运行/脚本来创建状态文件(“此后,我们将无法使用Terraform自身创建此存储帐户和blob容器)。

有什么方法可以在部署完整的堆栈时在所有模块级别定义状态文件,而无需在子模块中运行以下命令。

az storage container create --name terraform-state --account-name mytf --account-key xxxxx

1 个答案:

答案 0 :(得分:0)

为每个状态文件创建存储容器不是正确的选择。

我能想到的两种解决方案:

  • 用户terraform workspace -h:这是一种合理的组织方式。
  • 在执行terraform init时,动态传递后端密钥,如下所示,这样您就可以通过特定名称创建状态文件。

      

    terrain初始化backend-config = backend.tfvars   backend-config =“ key = $ {AKS | Mysql | Kafka | any-variable}。{any-variable} .tfstate”