首页 > 解决方案 > 如何使用 terraform 在多个区域进行设置?

问题描述

我有一个没有模块的 terraform 配置文件,它托管在生产环境中。

目前我正在尝试使用提供者别名和模块将它部署在另一个区域。但是当我计划相同时,它说我需要销毁我以前的配置并通过模块重新创建它

当我模块化文件时,terraform 会将文件视为新资源吗?我有大约 35 个资源,它说要销毁 35 个,要创建 35 个。在模块化过程中,我删除了根目录下的 .terraform 文件夹并将其初始化主模块

这是预期的行为吗?

标签: terraform

解决方案


我建议您研究 terragrunt 以使您的代码更加枯燥。与 Terragrunt 集成后,您可以开始使用这样的层次结构:

--root
  terragrunt.hcl
     |
     --dev_account
       account.hcl
       |
       --us-east-2
       region.hcl
         |
         --services
       --us-east-1
       --us-west-2
     --uat_account
       |
       --us-east-2
         |
         --services
       --us-east-1
       --us-west-2
     --prod_account
       |
       --us-east-2
         |
         --services
       --us-east-1
       --us-west-2

Terragrunt 将允许您拥有一个模块并具有与此类似的层次结构,您将能够解析 account.hcl 和 region.hcls 以部署到不同的区域,而无需重新输入此信息。

如果您选择应用所有子 terraform 配置,Terragrunt 允许您运行 apply-all,但我不建议将其用于生产。


推荐阅读