【问题标题】:How to conditionally skip a part of terraform resource from being created/implemented using terrraform如何有条件地跳过使用 terraform 创建/实施的 terraform 资源的一部分
【发布时间】:2021-12-21 14:38:48
【问题描述】:

如何有条件地跳过使用 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 环境。

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

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

【问题讨论】:

  • 哪一部分应该是有条件的? virtual_network_configuration? virtual_network_type?两者都有?
  • 如果可能的话
  • 我猜对于以上 tf 代码的 virtual_network_type 就足够了。但是,我还是跳过它们。现在至少有“virtual_network_configuration”部分。

标签: azure terraform terraform-provider-azure azure-rm


【解决方案1】:

一般你会使用nulldynamic blocks

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
   }
}

【讨论】:

  • 谢谢@Marcin,它非常适合我的用例。
  • @devops-admin 没问题。很高兴它起作用了:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 2018-06-26
  • 2021-11-20
  • 1970-01-01
  • 2020-11-07
  • 2020-05-30
  • 1970-01-01
相关资源
最近更新 更多