Терраформируйте, условно выполните некоторые строки кода в файле шаблона

#terraform #terraform-provider-aws

Вопрос:

В terraform есть ли способ условно выполнить некоторые строки кода в файле шаблона? Например:

У меня есть файл test.sh.tpl, определенный как показано ниже, который вызывается из main.tf

#!/bin/bash echo ${test_key} > /opt/test_key.свойства

В приведенном выше значении «test_key» присваивается из переменной

Теперь я хочу выполнить приведенный выше код только в том случае, если значение ${test_key} не пустое. Я пробовал это, но не работает, даже значение существует

{ если ${test_key} != «» }

echo ${test_key} > /opt/test_key.свойства

{ окончание }

Ответ №1:

вероятно, потому, что вы пропали без вести %

 %{ if ${test_key} != "" }

echo ${test_key} > /opt/test_key.properties

%{ endif }
 

https://www.terraform.io/docs/language/expressions/strings.html

Комментарии:

1. Попробовал это, вызов функции «файл шаблона» не удался:./test.sh.tpl:3,7-8: Недопустимый символ; Этот символ не используется в языке., и 2 других диагностических (- ов).

2. если вы заполняете файл tpl, вы можете следовать приведенному ниже примеру. потому что довольно легко добавить условие if в сценарий оболочки registry.terraform.io/providers/hashicorp/template/latest/docs/…

3. Также недопустимо говорить if ${test_key}` … ${ предназначен для переключения из буквального режима в режим интерполяции, но мы уже if находимся здесь в режиме, поэтому можем (и должны) просто сказать %{ if test_key != "" }