Необязательный блок на основе переменной

Я пишу своего рода модуль-оболочку для azurerm_storage_account.

azurerm_storage_account имеет необязательный блок

static_website {
  index_document = string
  error_404_document = string
}

Я хочу установить его на основе переменной, и я не совсем уверен, как это сделать? Условные операторы на самом деле не работают для блоков (например, static_website = var.disable ? null : { .. })

Или блоки работают таким образом, что если бы я установил index_document и error_404_document на null, это было бы то же самое, что не устанавливать static_website блок вообще?

[email protected]

[email protected]


person Edgar.A    schedule 26.08.2020    source источник


Ответы (1)


Я думаю, вы можете использовать для этого динамический блок. Обычно, когда disable равно true, static_website не создается. В противном случае будет построен один static_website блок.

Например, модифицированный код может быть:

  dynamic "static_website" {

    for_each = var.disable == true ? toset([]) : toset([1])

    content {
        index_document = string
        error_404_document = string
    }
  } 

Вы также можете попробовать splat, чтобы проверить, имеет ли disable значение или имеет значение null:

  dynamic "static_website" {

    for_each = var.disable[*]

    content {
        index_document = string
        error_404_document = string
    }
  } 

В приведенных выше примерах вам может потребоваться настроить условия в зависимости от того, какие значения var.disable действительно могут иметь.

person Marcin    schedule 26.08.2020