Terraform中如何为for_each资源配置动态条件depends_on依赖
Terraform for_each 场景下动态设置 depends_on
Terraform 的 depends_on 要求依赖列表在计划阶段可确定,但可以通过列表操作函数实现动态生成依赖集合,以下是两种可行方案:
方案一:使用 concat 结合条件判断
通过 concat 拼接固定依赖和条件性依赖,当条件不满足时传入空列表,最终得到对应实例的依赖集合:
depends_on = concat( [azurerm_lb.load_balancer], # 若 backend_address_pool 属性存在/为真,则添加后端地址池依赖,否则传入空列表 each.value.backend_address_pool ? [azurerm_lb_backend_address_pool.pool_address] : [] )
方案二:使用 flatten 处理嵌套列表
利用 flatten 将嵌套列表展开为一维,同样通过条件判断决定是否包含额外依赖:
depends_on = flatten([ azurerm_lb.load_balancer, each.value.backend_address_pool ? azurerm_lb_backend_address_pool.pool_address : [] ])
注意事项
如果 azurerm_lb_backend_address_pool 本身也是通过 for_each 创建的多实例资源,需要对应引用匹配的实例,比如:
azurerm_lb_backend_address_pool.pool_address[each.key]
确保依赖的是与当前实例对应的后端地址池资源。
内容的提问来源于stack exchange,提问作者KaranEK
相关产品推荐
相关产品推荐

