dependens_on出错,需要静态列表表达式



所以,我有一块代码-

resource "bigip_ltm_virtual_server" "agent_vip" {
depends_on                 = [var.use_traefik ? bigip_ltm_pool.agent_lb_443_pool : bigip_ltm_pool.agent_lb_30443_pool, 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 ? "/Common/${var.cluster_name}-lbaas-agent_lb-443-pool" : "/Common/${var.cluster_name}-lbaas-agent_lb-30443-pool"
port                       = 443
profiles                   = ["/Common/tcp"]
source_address_translation = "automap"
translate_address          = "enabled"
translate_port             = "enabled"
}

当我运行地形应用程序时,它会出错,说-

Error: Invalid expression
on main.tf line 193, in resource "bigip_ltm_virtual_server" "agent_vip":
193:   depends_on                 = var.use_traefik ? [bigip_ltm_pool.agent_lb_443_pool, null_resource.sync_check] : [bigip_ltm_pool.agent_lb_30443_pool, null_resource.sync_check]
A static list expression is required.
显式依赖关系是静态引用,而不是任意表达式。
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采取行动,这可能是比严格必要的更多的依赖项,但这些额外的依赖项不应该引起任何实际问题,因为这个依赖图是保守的,这意味着它具有所需的所有依赖项和更多,而不是少于所需。

在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_poolbigip_ltm_pool.agent_lb_30443_pool,Terraform可以自动推断出这些依赖关系。因此,只有null_resource.sync_check必须出现在depends_on中,大概是因为该资源具有某种副作用,不能被描述为资源之间的数据流。

相关内容

  • 没有找到相关文章

最新更新