Terraform необязательная переменная вложенного объекта - PullRequest
0 голосов
/ 05 июля 2019

плохо знаком с терраформ.Использование терраформ 0.12.Я пытаюсь терраформировать наши настройки Cloudflare.

Необходимо создать несколько ресурсов одного типа (ресурс page_rule провайдера cloudflare) и передать значения ресурсу "template" с помощью config.tfvars.

Я объявил переменную типа list (object ({...})).

Нужно, чтобы некоторые параметры объекта были необязательными, поэтому, если записи не указаны в config.tfvars для некоторых изэлементы списка, ресурсы создаются без них.

Я читал о нулевых значениях переменных по умолчанию в terraform 0.12, но я не уверен, что есть способ указать значение по умолчанию для параметров объектов terraform.Все примеры, которые я видел, указывают только тип параметров.

Пример кода:

variables.tf

variable "example_page_rule"{
      type = list(object({
            cache_level = string,
            ssl = string,
            target = string    
      }))   
}

main.tf

resource "cloudflare_page_rule" "page_rule" {
        count = length(var.example_page_rule)
    cache_level = var.example_page_rule[count.index].cache_level
    ssl = var.example_page_rule[count.index].ssl
    target = var.example_page_rule[count.index].target
}

config.tfvars

page_rules = [
{
   target = "www.target-url.com",
   ssl = "flexible",
   cache_level = "simplified",
},

{
   target = "www.target-url.com",
   cache_level = "simplified"
}
]

При попытке планирования с использованием вышеуказанной конфигурации возникает ошибка: требуется значение "ssl".

Если я изменю config.tfvars на следующее, всеработает как положено config.tfvars, но я бы хотел избежать ввода нулевых значений, если это возможно.

page_rules = [
{
   target = "www.target-url.com",
   ssl = "flexible",
   cache_level = "simplified",
},

{
   target = "www.target-url.com",
   ssl = null,
   cache_level = "simplified"
}
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...