GitHub

Tensho

Заметки непутевого программиста

Terraform Template

30/01/2019

Небольшая заметка про шаблоны в Terraform. До terraform 0.12 шаблоны обрабатываются отдельным провайдером terraform-provider-template, который идет в качестве плагина из коробки. В будущем обработку шаблонов планируют сделать на базе templatefile встроенной функции. Итак давайте создадим пару файлов – описание конфигурации

data "template_file" "alpha" {
  template = "${file("alpha.tpl")}"
  vars = {
    x = "X"
    y = "Y"
  }
}

и непосредственно шаблон

${x} and ${y}

Можно передать переменные через аргумент vars, на которые потом сослаться в шаблоне посредством стандартного синтаксиса интерполяции.

Важно то, что интерполяция не будет выполнена до тех пор, пока не пройдет применение конфигурации с помощью terraform apply и не обновится состояние инфраструктуры.

$ terraform init
$ terraform apply
data.template_file.alpha: Refreshing state...

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
$ terraform console
> data.template_file.alpha.rendered
X and Y
> exit

Свойство rendered ресурса данных template_file как раз позволяет взять финальный результат рендеринга в виде строки.

А еще удобно эксперементировать однострочниками в таком виде:

$ echo data.template_file.alpha.rendered | terraform console
X and Y