我在 VMSS AZURE Terraform 中定義網路介面我想要的是禁用或啟用負載均衡器后端地址池 id 如果 $app != "api" 換句話說,如果 app 是 api 那么只添加該引數并附加池 id。
此外,如何啟用或禁用整個資源可以說我想禁用或啟用整個網路介面塊。
提前感謝您的幫助。
load_balancer_backend_address_pool_ids = [var.backend_address_pool_id] #enable only when var.app is api.
network_interface {
name = "${var.app}-vmss-nic"
primary = true
ip_configuration {
name = "internal"
primary = true
subnet_id = var.pvt_subnet_1_id
load_balancer_backend_address_pool_ids = [var.backend_address_pool_id]
}
}
uj5u.com熱心網友回復:
這可以通過使用三元運算子 [1] 和dynamic塊 [2] 與for_each網路介面的元引數 [3] 的組合來完成。為此,您將執行以下操作:
dynamic "network_interface" {
for_each = var.app == "api" ? [1] : [0]
content {
name = "${var.app}-vmss-nic"
primary = true
ip_configuration {
name = "internal"
primary = true
subnet_id = var.pvt_subnet_1_id
load_balancer_backend_address_pool_ids = [var.backend_address_pool_id]
}
}
}
[1] https://developer.hashicorp.com/terraform/language/expressions/conditionals
[2] https://developer.hashicorp.com/terraform/language/expressions/dynamic-blocks
[3] https://developer.hashicorp.com/terraform/language/meta-arguments/for_each
uj5u.com熱心網友回復:
您需要對此進行測驗,但您可以執行類似的操作
load_balancer_backend_address_pool_ids = var.app == "api" ? [var.backend_address_pool_id] : null
或者提供者不支持 null 并且只需要一個空串列
load_balancer_backend_address_pool_ids = var.app == "api" ? [var.backend_address_pool_id] : []
uj5u.com熱心網友回復:
當我遇到這種情況時,我總是使用這種結構:
dynamic "azure_devops_repo" {
for_each = var.azure_devops_repo == null ? {} : var.azure_devops_repo
iterator = devops
content {
account_name = devops.value.account_name
branch_name = devops.value.branch_name
project_name = devops.value.project_name
repository_name = devops.value.repository_name
root_folder = devops.value.root_folder
tenant_id = lookup(devops.value, "tenant_id", null)
}
}
如您所見,這就像一個可選塊!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/522654.html
標籤:天蓝色地形terraform-provider-azure
