我已经创建了terraform模板(azure)与两个模块。一个模块是为资源组。另一个是为vnet(它处理的NSG和路由表的创建,以及随着他们与子网的关联)。当我运行terraform apply时,它给出了路由表的错误,因为资源组还没有创建。创建的顺序显示为先创建路由表,然后创建资源组。有没有办法设置创建的顺序?在main.tf的根文件夹中,模块资源组是先调用,然后调用vnet。
xoefb8l81#
重新考虑使用两个模块创建RG和资源的想法。问自己一个简单的问题:为甚么?如果您100%确定这是正确的方法,请使用 * depends_on *:
module "rg1" { source = "./rg_module" ... } module "net1" { source = "./network_module" .... depends_on = [module.rg1] }
hpcdzsge2#
您必须使用-out选项将计划保存到文件。例如:
terraform plan -out <plan_file>
始终建议使用-out并保存计划文件。这将确保在后续应用中保留创建顺序。
xzlaal3s3#
另一种选择是使用隐式依赖关系:
output "rg_name" { value = azurerm_resource_group.root_rg.name }
resource_group_name =module.rg_module["<OPTIONAL KEY IF USING FOR EACH IN RG MODULE"].rg_name
这将创建对资源组的内部依赖性。注意,除非定义了输出值,否则不可能从资源组module引用参数(实际上是变量)。
3条答案
按热度按时间xoefb8l81#
重新考虑使用两个模块创建RG和资源的想法。问自己一个简单的问题:为甚么?
如果您100%确定这是正确的方法,请使用 * depends_on *:
hpcdzsge2#
您必须使用-out选项将计划保存到文件。例如:
始终建议使用-out并保存计划文件。这将确保在后续应用中保留创建顺序。
xzlaal3s3#
另一种选择是使用隐式依赖关系:
[假设以下模块中的变量赋值使用名称 resource_group_name 向其根源提供输入]
这将创建对资源组的内部依赖性。
注意,除非定义了输出值,否则不可能从资源组module引用参数(实际上是变量)。