Terraform, как интерполировать типы карт в файле template_file? - PullRequest
2 голосов
/ 19 мая 2019

Я пытаюсь передать переменную карты в файл template_file, и мне выдается эта ошибка:

vars (varsname): '' ожидаемый тип 'string', получен необратимый тип 'интерфейс map [string]{} '

    data "template_file" "app" {

        template = "${file("./app_template.tpl")}"

        vars {
                container = "${var.container-configuration}"
        }
    }

variables.tf

    variable "container-configuration" {
        description = "Configuration for container"
        type        = "map"
        default     = {
                    image          = "blahblah.dkr.ecr.us-east-2.amazonaws.com/connect"
                    container-port = "3000"
                    host-port      = "3000"
                    cpu            = "1024"
                    memory         = "2048"
                    log-group      = "test"
                    log-region     = "us-east-2a"
                  }
    }

Можно ли передать карту в файл шаблона для интерполяции?Я не нашел ничего ясного в документации.

Ответы [ 2 ]

1 голос
/ 20 мая 2019

В Terraform v0.12 появилась функция templatefile, которая поглощает основные варианты использования источника данных template_file и принимает значения любого типа:

templatefile("${path.module}/app_template.tpl", {
  container = var.container-configuration
})

Terraform v0.11 и более ранние версии не имеют средств для визуализации шаблона с нестроковыми значениями.Ограничение существует из-за природы протокола, используемого для представления значений карт в конфигурации: он может представлять карты строк только до нового протокола, который был представлен в Terraform v0.12.

0 голосов
/ 19 мая 2019

Передача карт еще не поддерживается, см. Документацию template_file .

Из этой статьи:

Все переменные должны быть примитивами.Прямые ссылки на списки или карты вызовут ошибку проверки.

Это означает, что вам нужно передавать переменные одну за другой в отдельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...