Шаблонизация (Jinja2)
Ansible использует шаблонизацию Jinja2 для динамических выражений и доступа к переменным и фактам. Вы можете использовать шаблонизацию с помощью модуля template. Например, вы можете создать шаблон файла конфигурации, а затем развернуть этот файл в нескольких средах, указав для каждой из них правильные данные (IP-адрес, имя хоста, версию). Вы также можете использовать шаблонизацию непосредственно в плейбуках, например для шаблонизации имён задач. Вы можете использовать все стандартные фильтры и тесты, включённые в Jinja2. Ansible включает дополнительные специализированные фильтры для выбора и преобразования данных, тесты для вычисления выражений шаблонов, а также плагины поиска для получения данных из внешних источников, таких как файлы, API и базы данных, с целью использования в шаблонах.
Вся шаблонизация выполняется на управляющем узле Ansible до того, как задача отправляется на целевой компьютер и выполняется на нём. Такой подход сводит к минимуму требования к пакетам на целевом компьютере (jinja2 требуется только на управляющем узле). Он также ограничивает объём данных, которые Ansible передаёт целевому компьютеру. Ansible обрабатывает шаблоны на управляющем узле и передаёт целевому компьютеру только информацию, необходимую для каждой задачи, вместо того чтобы передавать все данные с управляющего узла и обрабатывать их на целевом.
Примечание
Файлы и данные, используемые модулем template, должны быть закодированы в utf-8.
Пример Jinja2
В этом примере мы хотим записать имя хоста сервера в файл /tmp/hostname.
Наша директория выглядит так:
├── hostname.yml
├── templates
└── test.j2
Наш файл hostname.yml:
---
- name: Write hostname
hosts: all
tasks:
- name: write hostname using jinja2
ansible.builtin.template:
src: templates/test.j2
dest: /tmp/hostname
Наш файл test.j2:
My name is {{ ansible_facts['hostname'] }}
См. также
- Плейбуки Ansible
-
Введение в плейбуки
- Советы по работе с плейбуками
-
Советы и рекомендации по работе с плейбуками
- Документация Jinja2
-
Документация Jinja2, включая синтаксис и семантику шаблонов
- Общение
-
Есть вопросы? Нужна помощь? Хотите поделиться идеями? Посетите руководство Ansible по общению
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks_templating.html