Редактирование шаблона j2 с использованием ansible - PullRequest
0 голосов
/ 10 июня 2019

У меня есть вендор Ansible playbook, и мне нужно будет добавить новую строку в шаблон j2 и настроить playbook для нашего env, мне нужно будет отредактировать шаблон с помощью строки -> retention_days: {{xyz}}

Вот как выглядит оригинальный шаблон:

#cat cluster.j2
apiVersion: v1
metadata:
  name: cluster
  cluster_name: {{ my_name }}
data:
  new_image: |+
      baseImage: {{ FROM_repo }}

А вот мой сборник пьес Ansible для добавления строки.

---
- name: mydata
  hosts: localhost
  tasks:
   - name: edit files
     lineinfile:
       dest: cluster.j2
       line: " retention_days: {{ xyz }}"
       insertafter: 'new_image'

Мой конечный результат, т.е.мой шаблонный файл j2 должен иметь такую ​​же строку, как эта

retention_days: {{xyz}}

final - файл должен выглядеть следующим образом ->

#cat cluster.j2
apiVersion: v1
metadata:
  name: cluster
  cluster_name: {{ my_name }}
data:
  new_image: |+
      retention_days: {{ xyz }}
      baseImage: {{ FROM_repo }}

НадеюсьЯ не хочу, чтобы {{xyz}} обрабатывался Ansible как переменная, вместо этого считайте его строкой и добавляйте их туда ... Как я могу избежать {{и}} Пожалуйста, дайте мне знать.

Сейчас я получаю сообщение об ошибке: xyz не определено ..

MSG:

***The task includes an option with an undefined variable. The error was: 'xyz' is undefined***

1 Ответ

0 голосов
/ 10 июня 2019

Как указано в документации , вы можете использовать {% raw %} для экранирования элементов в блоке или добавления дополнительных фигурных скобок.

Например:

---
- name: mydata
  hosts: localhost
  tasks:
   - name: edit files
     lineinfile:
       dest: cluster.j2
       line: " retention_days: {% raw %}{{ xyz }}{% endraw %}"
       # or
       # line: " retention_days: {{ '{{ xyz }}' }}" 
       insertafter: 'new_image'
...