Явные зависимости - это статические ссылки, а не произвольные выражения.
depends_on = [
bigip_ltm_pool.agent_lb_443_pool,
bigip_ltm_pool.agent_lb_30443_pool,
null_resource.sync_check,
]
Здесь вам нужно перечислить исчерпывающий набор ресурсов, от которых зависит этот ресурс. Это означает, что Terraform будет ждать, пока все три из них не завершатся, прежде чем предпринимать действия для bigip_ltm_virtual_server.agent_vip
, что может быть больше зависимостей, чем строго необходимо, но эти дополнительные зависимости не должны вызывать каких-либо практических проблем, потому что этот граф зависимостей conservative означает, что он имеет все необходимые зависимости и более , а не меньше, чем необходимо.
Идиоматический способ выразить это в Terraform - использовать неявные зависимости через ссылки везде, где это необходимо. возможно. В этом случае вы можете использовать ссылки в аргументе pool
для указания зависимости от двух пулов:
resource "bigip_ltm_virtual_server" "agent_vip" {
depends_on = [null_resource.sync_check]
description = "${var.cluster_name}.${var.domain}_443"
destination = var.agent_f5_ip_address
ip_protocol = "tcp"
name = "/Common/${var.cluster_name}.${var.domain}_443"
pool = var.use_traefik ? bigip_ltm_pool.agent_lb_443_pool.name : bigip_ltm_pool.agent_lb_30443_pool.name
port = 443
profiles = ["/Common/tcp"]
source_address_translation = "automap"
translate_address = "enabled"
translate_port = "enabled"
}
Поскольку аргумент pool
относится как к bigip_ltm_pool.agent_lb_443_pool
, так и к bigip_ltm_pool.agent_lb_30443_pool
, Terraformможет вывести эти зависимости автоматически. Поэтому в depends_on
должно присутствовать только null_resource.sync_check
, предположительно потому, что у этого ресурса есть некоторый побочный эффект, который нельзя описать как поток данных между ресурсами.