在terraform中使用depends_on实现资源引用的动态依赖

问题描述 投票:0回答:1

我需要根据条件将 depends_on 与多个资源绑定。

我使用 for_each 在资源级别为相同类型创建多个资源。

现在,我想使用基于其他属性值的 depends_on 属性来引用其他资源,如下所示

depends_on = each.value.backend_address_pool? [azurerm_lb.load_balancer, azurerm_lb_backend_address_pool.pool_address] :[ azurerm_lb.load_balancer ]

但 Terraform 不允许这样做,因为它需要静态列表。我试过:

  1. 检查依赖属性是否为空。
  2. 使用 concat 函数生成列表。

我该如何表达这种依赖性?

terraform
1个回答
0
投票

您可能不需要必须表达这种依赖性,这是幸运的,因为Terraform的工作方式确保

depends_on
值必须是静态的(即在调用任何代码之前必须完全了解它们并且不能动态计算它们) 。这是因为 Terraform 要求在完成任何计算之前完全理解依赖树。

但是,

depends_on
通常是隐式的。如果 azurerm_lb_backend_address_pool.pool_address 为 true,则可能您正在引用
each.value.backend_address_pool
的资源中创建一些更改,并且可能您正在以任何方式引用资源块中的某处
azurerm_lb.load_balancer
。在这种情况下——太棒了!隐式依赖树是正确的。无需纠正。
    

© www.soinside.com 2019 - 2024. All rights reserved.