繁体   English   中英

Terraform模板中的资源创建顺序

[英]Order of resource creation in Terraform template

我用两个模块创建了 terraform 模板(天蓝色)。 一个模块用于资源组。 另一个用于 .net(它处理 NSG 和路由表的创建以及它们与 su.net 的关联)。

当我运行 terraform apply 时,它给出了路由表错误,因为尚未创建资源组。 创建顺序显示为首先创建路由表,然后是资源组。 有没有办法设置创建顺序? 在根目录下的main.tf中,先调用模块资源组,再调用.net。

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

如果您 100% 确定这是正确的方法,请使用depends_on

module "rg1" {
  source = "./rg_module"
  ...
}

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

您必须使用 -out 选项将计划保存到文件中。 喜欢:

terraform plan -out <plan_file>

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

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

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

-调用根模块的资源组模块没有修改

-创建路由表(模块)时,使用资源组模块中的output 值

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

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

这会创建对资源组的内部依赖。

请注意,除非定义了 output 个值,否则无法从资源组模块中引用参数(实际上是变量)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM