Terraform模板中资源创建顺序



我已经创建了两个模块的地形模板(azure)。一个模块用于资源组。另一个是vnet(它处理NSG和路由表的创建以及它们与子网的关联)。

当我运行terraform apply时,它给出了路由表的错误,因为资源组尚未创建。创建的顺序为先创建路由表,然后创建资源组。有一种方法可以设定创造的顺序吗?基本上。在根目录下,首先调用模块资源组,然后调用vnet.

重新考虑使用两个模块创建RG和资源的想法。问你自己一个简单的问题:为什么?

如果你100%确定这是正确的方法,那么使用depends_on:

module "rg1" {
source = "./rg_module"
...
}
module "net1" {
source = "./network_module"
....
depends_on = [module.rg1]
}

另一种选择是使用隐式依赖:
-让实际定义资源组的根模块返回输出:

output "rg_name" {
value = azurerm_resource_group.root_rg.name
}

不允许修改调用根模块的资源组模块

-在创建路由表(模块)时,使用资源组模块的输出值:

[假设下面模块中的变量赋值使用名称resource_group_name]向其根源提供输入

resource_group_name  =module.rg_module["<OPTIONAL KEY IF USING FOR EACH IN RG MODULE"].rg_name

创建对资源组的内部依赖。注意,不能从资源组模块中引用参数(实际上是变量)。除非定义了输出值。

必须使用out选项将计划保存到文件中。如:

terraform plan -out <plan_file>

始终建议使用out并保存计划文件。这将确保在后续应用中保留创建顺序。

最新更新