Модуль template и файлы .j2
Разверните отрендерированный файл на узле
«Модуль template и файлы .j2» — бесплатный урок Ansible Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.
Статических файлов недостаточно
Модуль copy передаёт файл без изменений. Но конфигурационным файлам часто нужен порт или имя узла, различающиеся на разных серверах, поэтому статических копий недостаточно. 🤔
Познакомьтесь с модулем template
Модуль template сначала обрабатывает файл с помощью Jinja2, подставляя переменные, а затем копирует результат на узел.
- name: Deploy config
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.confСоглашение .j2
Исходные файлы шаблонов заканчиваются на .j2, что обозначает их принадлежность к Jinja2. Это соглашение, а не жёсткое правило, но ему следуют все.
src и dest
Параметр src указывает на файл .j2 на управляющем узле, а dest — на конечный путь на управляемом узле.
template:
src: app.conf.j2
dest: /etc/app/app.confГде хранятся шаблоны
По умолчанию Ansible ищет шаблоны в каталоге templates рядом с плейбуком или внутри роли. Указывать префикс пути не нужно.
templates/
nginx.conf.j2
site.ymlМинимальный шаблон
Внутри файла .j2 обычный текст остаётся без изменений, а маркеры {{ }} заменяются. Здесь переменная порта превращается в настоящее число.
listen {{ http_port }};
server_name {{ domain }};Настройте права доступа к файлу
Как и copy, template принимает параметры owner, group и mode, поэтому обработанный файл получает правильного владельца и группу.
template:
src: app.conf.j2
dest: /etc/app.conf
mode: "0644"Проверяйте перед записью
Параметр validate запускает команду проверки обработанного файла перед его установкой, поэтому некорректная конфигурация не попадёт на узел.
template:
src: sshd.j2
dest: /etc/ssh/sshd_config
validate: "sshd -t -f %s"Шаблоны идемпотентны
Если обработанный результат совпадает с файлом, уже находящимся на узле, template сообщает ok и ничего не изменяет. Его безопасно запускать снова и снова.
Уведомляйте обработчик об изменениях
Сочетайте template с notify, чтобы служба перезапускалась только при фактическом изменении конфигурационного файла. Идеальное сочетание.
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: restart nginxtemplate и copy
Используйте copy, когда файл везде одинаков, и template, когда какая-либо его часть должна зависеть от узла.
Быстрая проверка
Вам нужен конфигурационный файл, порт в котором различается на разных серверах. Какой модуль подойдёт?
Итоги
Вы познакомились с модулем template: он обрабатывает файл .j2 с помощью Jinja2, помещает его по адресу dest, устанавливает права доступа и остаётся идемпотентным. ✨
Часто задаваемые вопросы
Урок «Модуль template и файлы .j2» бесплатный?
Да — полный текст урока «Модуль template и файлы .j2» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.
Чему я научусь в уроке «Модуль template и файлы .j2»?
Разверните отрендерированный файл на узле Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ansible Academy?
Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Модуль template и файлы .j2»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ansible Academy?
Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Модуль template и файлы .j2
- Переменные и выражения в Jinja2
- Циклы и блоки if в шаблонах
- Фильтры: default, join и upper