Terraform 条件参数块

问题描述 投票:0回答:2

我创建了一个模块来部署以下

azurerm_automation_schedule
资源:

resource "azurerm_automation_schedule" "example" {
  name                    = var.aaname
  resource_group_name     = azurerm_resource_group.example.name
  automation_account_name = azurerm_automation_account.example.name
  frequency               = var.frequency              
  interval                = var.interval
  timezone                = "Australia/Perth"
  start_time              = "2014-04-15T18:00:15+02:00"
  description             = "This is an example schedule"

  monthly_occurrence {
                      day = monthly_occurrence.value.day
                      occurrence = monthly_occurrence.value.occurrence
                  }
 }

monthly_occurrence块参数的存在必须是有条件的,因为它频率为“月”时才需要,否则会抛出错误。

有没有办法有条件地创建这个 monthly_occurrence 块参数?我正在使用 terraform 0.13.5 和 azurerm 2.38.0

我尝试过 for_each 但我找不到解决方案。有什么办法可以做到吗?

azure conditional-statements terraform terraform-provider-azure
2个回答
7
投票

您可以使用 动态块 使

monthly_occurrence
有条件。例如:

resource "azurerm_automation_schedule" "example" {
  name                    = var.aaname
  resource_group_name     = azurerm_resource_group.example.name
  automation_account_name = azurerm_automation_account.example.name
  frequency               = var.frequency              
  interval                = var.interval
  timezone                = "Australia/Perth"
  start_time              = "2014-04-15T18:00:15+02:00"
  description             = "This is an example schedule"

  dynamic "monthly_occurrence" {
    for_each = var.frequency == "Month" ? [1] : []
    content {
       day = monthly_occurrence.value.day
       occurrence = monthly_occurrence.value.occurrence
    }
  }
}

2
投票

您可以通过将条件表达式动态块相结合来完成此操作,以便为每月发生的情况创建条件动态块

你会得到这样的东西:

  dynamic "monthly_occurrence" {
    for_each = var.frequency == Month ? 1 : 0
    content {
       day = monthly_occurrence.value.day
       occurrence = monthly_occurrence.value.occurrence
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.