service:ansible
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
service:ansible [05.09.2025 14:18] – [ansible-lint] viacheslav | service:ansible [02.10.2025 06:46] (текущий) – [Windows] viacheslav | ||
---|---|---|---|
Строка 499: | Строка 499: | ||
==== Шаблоны Jinja2 ==== | ==== Шаблоны Jinja2 ==== | ||
+ | <WRAP round tip 60%> | ||
+ | Чтобы избавить себя от возни с лишними строками и отступами в формируемом файле, нужно добавить в шаблон .j2 | ||
+ | <code python> | ||
+ | #jinja2: lstrip_blocks: | ||
+ | </ | ||
+ | |||
+ | > First, I’ll give you an easy, by far more preferable, way of taming whitespace and then we’ll dig into the more involving methods. | ||
+ | > So here it comes: | ||
+ | > //Always render with trim_blocks and lstrip_blocks options enabled.// | ||
+ | > That’s it, the big secret is out. Save yourself trouble and tell Jinja2 to apply trimming and stripping to all of the blocks. | ||
+ | [[https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
Это движок для подстановки переменных или для динамического формирования конфигурационных файлов. Ссылка на переменную идёт в любом файле yaml в двойных фигурных скобках. | Это движок для подстановки переменных или для динамического формирования конфигурационных файлов. Ссылка на переменную идёт в любом файле yaml в двойных фигурных скобках. | ||
<code yaml> | <code yaml> | ||
Строка 578: | Строка 593: | ||
https:// | https:// | ||
https:// | https:// | ||
+ | |||
+ | === Условия === | ||
+ | В зависимости от значения '' | ||
+ | |||
+ | Задача | ||
+ | <code yaml> | ||
+ | - name: demo the template | ||
+ | hosts: localhost | ||
+ | gather_facts: | ||
+ | vars: | ||
+ | setting: a_val | ||
+ | feature: | ||
+ | enabled: true | ||
+ | another_setting: | ||
+ | tasks: | ||
+ | - name: pause with render | ||
+ | pause: | ||
+ | prompt: "{{ lookup(' | ||
+ | </ | ||
+ | Шаблон | ||
+ | <code python> | ||
+ | setting = {{ setting }} | ||
+ | {% if feature.enabled %} | ||
+ | feature = True | ||
+ | {% else %} | ||
+ | feature = False | ||
+ | {% endif %} | ||
+ | another_setting = {{ another_setting }} | ||
+ | </ | ||
+ | |||
+ | == Встроенное условие == | ||
+ | <code yaml> | ||
+ | - name: demo the template | ||
+ | hosts: localhost | ||
+ | gather_facts: | ||
+ | vars: | ||
+ | api: | ||
+ | v2: true | ||
+ | tasks: | ||
+ | - name: pause with render | ||
+ | debug: | ||
+ | msg: "API = cinder{{ ' | ||
+ | </ | ||
+ | Выведет '' | ||
+ | |||
+ | === Цикл с фильтрацией элементов === | ||
+ | Если в data_dirs есть список значений, | ||
+ | <code yaml> | ||
+ | - name: demo the template | ||
+ | hosts: localhost | ||
+ | gather_facts: | ||
+ | vars: | ||
+ | data_dirs: | ||
+ | - Ыыы | ||
+ | - Зьзьзь | ||
+ | - Жжжжж | ||
+ | - ЪУЪ | ||
+ | tasks: | ||
+ | - name: pause with render | ||
+ | pause: | ||
+ | prompt: "{{ lookup(' | ||
+ | </ | ||
+ | |||
+ | Шаблон с отсевом значения ''/'', | ||
+ | <code python># data dirs | ||
+ | {% for dir in data_dirs if dir != "/" | ||
+ | {% if loop.first -%} | ||
+ | data_dir = {{ dir }}{{ ',' | ||
+ | {% else -%} | ||
+ | {{ dir }}{{ ',' | ||
+ | {% endif -%} | ||
+ | {% else -%} | ||
+ | # no data dirs found | ||
+ | {% endfor -%} | ||
+ | </ | ||
+ | |||
+ | Способы доступа к индексу цикла | ||
+ | ^Переменная ^Описание ^ | ||
+ | |loop.index |Текущая итерация данного цикла (начиная с 1) | | ||
+ | |loop.index0 |Текущая итерация данного цикла (начиная с 0) | | ||
+ | |loop.revindex |Общее число итераций до окончания данного цикла (начиная с 1) | | ||
+ | |loop.revindex0 |Общее число итераций до окончания данного цикла (начиная с 0) | | ||
+ | |loop.first |Булево True если это первая итерация | | ||
+ | |loop.last |Булево True если это последняя итерация | | ||
+ | |loop.first |Общее число элементов в данной последовательности | | ||
+ | https:// | ||
+ | |||
==== Динамические переменные ==== | ==== Динамические переменные ==== | ||
Используются для нескольких ОС, где разные пути к конфигам и один и тот же пакет называется по-разному, | Используются для нескольких ОС, где разные пути к конфигам и один и тот же пакет называется по-разному, | ||
Строка 798: | Строка 900: | ||
Особый подход, | Особый подход, | ||
- | Inventory. | + | Inventory.\\ |
<code ini> | <code ini> | ||
[server1] | [server1] | ||
server1.example.com ansible_connection=winrm ansible_port=5985 ansible_winrm_transport=ntlm | server1.example.com ansible_connection=winrm ansible_port=5985 ansible_winrm_transport=ntlm | ||
</ | </ | ||
+ | <WRAP round important 80%> | ||
+ | Если возникает ошибка '' | ||
+ | Если используется WinRM HTTPS (порт 5986), то бывает полезным добавить опцию '' | ||
+ | </ | ||
+ | |||
+ | Пример ad-hoc | ||
+ | <code bash> | ||
+ | ansible all -i ' | ||
+ | </ | ||
+ | |||
Пример задачи. Для Windows лучше оборачивать переменные с путями в одинарные кавычки, | Пример задачи. Для Windows лучше оборачивать переменные с путями в одинарные кавычки, | ||
Строка 1434: | Строка 1546: | ||
[[https:// | [[https:// | ||
[[https:// | [[https:// | ||
- | [[https:// | + | [[https:// |
+ | [[https:// | ||
service/ansible.1757081917.txt.gz · Последнее изменение: — viacheslav