0Pricing
Ansible Academy · Урок

Модуль 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 nginx

template и 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 — локальная установка не требуется.

Все уроки этого курса

  1. Модуль template и файлы .j2
  2. Переменные и выражения в Jinja2
  3. Циклы и блоки if в шаблонах
  4. Фильтры: default, join и upper
← Назад к Ansible Academy