如何使用terraform在多个区域中进行设置?
我有一个没有模块的terraform配置文件,它托管在生产环境中 目前,我正试图使用提供商别名和模块将其部署到另一个地区。但当我计划进行同样的部署时,它说我需要销毁以前的配置,并通过模块重新创建它 当我模块化这些文件时,terraform将其视为一种新的资源?我有大约35个资源,上面说35个要销毁,35个要创建。在模块化的过程中,我删除了根目录下的.terraform文件夹,并在主模块中对其进行了初始化如何使用terraform在多个区域中进行设置?,terraform,Terraform,我有一个没有模块的terraform配置文件,它托管在生产环境中 目前,我正试图使用提供商别名和模块将其部署到另一个地区。但当我计划进行同样的部署时,它说我需要销毁以前的配置,并通过模块重新创建它 当我模块化这些文件时,terraform将其视为一种新的资源?我有大约35个资源,上面说35个要销毁,35个要创建。在模块化的过程中,我删除了根目录下的.terraform文件夹,并在主模块中对其进行了初始化 这是预期的行为吗?我建议您研究terragrunt,使代码更加枯燥。与Terragrunt集
这是预期的行为吗?我建议您研究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.hcl以部署到不同的区域,而无需重新输入此信息
Terragrunt允许您在选择应用所有子terraform配置的情况下运行apply all,尽管我不建议在生产环境中使用它。是的,这是预期的行为,因为资源现在具有不同的terraform标识符。当Terraform运行plan或apply时,它会在状态文件中查找,但找不到其中列出的新标识符
您可以使用命令解决这种情况。我已经成功地使用了它,但它是一项乏味的任务,而且很容易出错。我建议通过
-backup out
选项对您的状态文件进行额外备份,并在每次运行后检查计划。非常感谢@Giulio Vian。我明白这一点:)我想知道terragrunt是否会有所帮助,因为我的terraform tfstate已经就位,terragrunt不确定我是否可以让terraform了解我的资源已经到位,不再旋转,但我真的很喜欢这个,将在terragrunt上阅读