如何有条件地跳过使用terrraform创建/实现的terrraform资源的一部分



如何有条件地跳过使用terraform创建/实现的terraform资源的一部分?

# main.tf file
locals {
vnet_type = (var.vnet_type != "" ? var.vnet_type : "None")
}
data "azurerm_virtual_network" vnet {
name = "testvnet"
resource_group_name = "rest1"
}

data "azurerm_subnet" subnets {
name = "testSubnet"
resource_group_name  = "rest1"
virtual_network_name = data.azurerm_virtual_network.vnet.name
}

resource "azurerm_api_management" "apim_demo" {
name                = "test-apim"
location            = "East US"
resource_group_name = "rest1"
publisher_name      = "admin"
publisher_email     = "admin@gmail.com"
sku_name = "Developer_1"
identity {
type = "SystemAssigned"
}
# vnet_Type can be External, None or Internal
virtual_network_type = local.vnet_type
virtual_network_configuration {
subnet_id = data.azurerm_subnet.subnets.id
}
}
# variables.tf file
variable "vnet_type" {}
# terraform.tfvars file
vnet_type = "External"

我有三个(dev、stg和prod(环境,我想在其中应用下面的块/部分tf代码来dev&stg环境跳过prod环境。

我如何使用条件表达式或地形中的东西来实现上述场景?

virtual_network_type = local.vnet_type
virtual_network_configuration {
subnet_id = data.azurerm_subnet.subnets.id
}

通常您会使用null和动态块:

virtual_network_type = var.env == "prod" ? local.vnet_type : null

dynamic "virtual_network_configuration" {
for_each = var.env == "prod" ? [1] : []
content {
subnet_id = data.azurerm_subnet.subnets.id
}
}

最新更新