Terraform 条件参数块

4
我已创建一个模块来部署下面的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的块参数必须是有条件的,因为只有在频率为"Month"时才需要它,否则会抛出错误。是否有一种方法可以有条件地创建这个monthly_occurrence块参数? 我正在使用terraform 0.13.5和azurerm 2.38.0。
我尝试过使用for_each,但是没有找到解决方案。 是否有其他方法可以做到这一点?
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
    }
  }

for_each 需要一个列表,所以你很可能是想说 var.frequency == Month ? [1] : [0] - pjboro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接