Spec-Zone.ru › Ansible

Шаблонизация (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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API