Рейтинг:1

Ansible: заполнение шаблона, содержащего неизменяемые интерполяции

флаг au

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

Первая часть проблемы заключается в том, что полученный файл будет использоваться как еще один плейбук Ansible, поэтому исходный файл содержит другие интерполяции, и эти интерполяции должны быть сохранены как есть. В качестве примера предположим, что исходный файл содержит что-то вроде этого:

ключ1: {{ значение1 }}
ключ2: {{ значение2 }}

Значение ключ1 должен быть интерполирован моей игрой (это должно стать значением значение1 переменная), но в то же время значение2 нужно оставить как есть (оно должно быть {{ значение2 }}.

Вторая часть проблемы заключается в том, что я не могу просто изменить исходный файл и добавить обратную косую черту перед фигурными скобками, потому что этот файл обновляется другими процессами. Кроме того, поскольку файл шаблона время от времени обновляется, я не могу предсказать, какие переменные нужно пропустить после следующего обновления.Я знаю только, что мне нужно интерполировать значение1, но я не знаю, как называются остальные переменные (сегодня есть значение2 и значение3, завтра разработчики переименовали значение2 к value2_deprecated и добавил значение3 где-то).

Могу ли я попросить Ansible, что мне нужно интерполировать значение1 Только?

Спасибо.

Рейтинг:1
флаг br

Вопрос: "Шаблон содержит интерполяции, и эти интерполяции должны быть сохранены как есть."

A: Объявить переменные по умолчанию

    лбр: '{{ "{{" }}'
    рбр: '{{ "}}" }}'
    значение1: '{{ lbr }} значение1 {{ rbr }}'
    значение2: '{{ lbr }} значение2 {{ rbr }}'

и создайте шаблон

оболочка> кошка шаблон.yml.j2
ключ1: {{ значение1 }}
ключ2: {{ значение2 }}

Вопрос: "Мне нужно интерполировать только value1."

A: Переопределите значение по умолчанию, например.

    - шаблон:
        источник: шаблон.yml.j2
        место назначения: playbook.yml
      вары:
        значение1: значение1

дает

оболочка> cat playbook.yml 
ключ1: значение1
ключ2: {{ значение2 }}
флаг au
Спасибо, Владимир! Мне пришлось обновить описание проблемы, так как я не объяснил это в исходном посте: «поскольку файл шаблона время от времени обновляется, я не могу предсказать, какие переменные нужно пропустить после следующего обновления. только знаю, что мне нужно интерполировать value1, но я не знаю, как называются другие переменные (сегодня есть value2 и value3, завтра разработчики переименовали value2 в value2_deprecated и куда-то добавили value3)"
флаг br
Объяснение нормальное. Я упростил пример. Это то, что вы ищете?

Ответить или комментировать

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