Spec-Zone.ru › Ansible

Шаблоны (Jinja2)

Ansible использует шаблоны Jinja2 для динамических выражений и доступа к переменным и фактам. Вы можете использовать шаблоны с модулем template. Например, вы можете создать шаблон файла конфигурации, затем развернуть этот файл конфигурации в нескольких средах и предоставить правильные данные (IP-адрес, имя хоста, версия) для каждой среды. Вы также можете использовать шаблоны непосредственно в playbooks, шаблонизируя имена задач и многое другое. Вы можете использовать все стандартные фильтры и тесты, включенные в Jinja2. Ansible включает дополнительные специализированные фильтры для выбора и преобразования данных, тесты для оценки выражений шаблонов и плагины Lookup для получения данных из внешних источников, таких как файлы, 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 playbooks

Введение в playbooks

Рекомендации по playbooks

Рекомендации и советы для playbooks

Jinja2 Docs

Документация Jinja2, включает синтаксис и семантику шаблонов

Общение

У вас есть вопросы? Нужна помощь? Хотите поделиться идеями? Посетите руководство по общению Ansible

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html

Spec-Zone.ru

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