Linux Labs

Автоматизация: Git и Ansible / Ступень 5 из 6

Плейбук: задачи, обработчики, шаблоны

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 6 · на машине · 7 мин

Шаблон и прогон на пробу

Конфиг на разных машинах отличается парой значений. Их выносят в переменные, а файл собирают из шаблона.

Модуль template работает как copy, но берёт файл-шаблон с расширением .j2 и подставляет в него переменные: {{ shop_name }} заменяется значением (в Вики). Переменные плея задают в разделе vars; ключ -e имя=значение в командной строке задаёт значение поверх vars. Если в шаблоне templates/index.html.j2 строка <h1>{{ shop_name }}</h1>, такой плей положит на машину страницу «Магазин у дома»:

yaml
  vars:
    shop_name: Магазин у дома
  tasks:
    - name: Страница
      template:
        src: templates/index.html.j2
        dest: /srv/shop/index.html

Что изменит прогон, смотрят до него: ansible-playbook site.yml --check --diff. --check — пробный запуск: модули сравнивают, но ничего не меняют, а отчёт показывает, что поменялось бы. --diff печатает разницу файлов: строка с - — как сейчас, с + — как станет. Задачи shell и command в --check не выполняются и попадают в skipped: что они сделали бы, Ansible не знает (в Вики).

Упражнение · сделать

Вынеси порт в переменную

Порт сайта должен задаваться переменной shop_port плея. В ~/ansible-lab собери конфиг nginx из шаблона templates/shop.conf.j2 с этой переменной и поставь порт 8082. Перед прогоном посмотри, что он изменит, не меняя машину. После прогона сайт отвечает на http://127.0.0.1:8082/, а следующий прогон ничего не меняет.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Собрать конфиг из шаблона с переменной порта ещё не выполнена
  • Перевести сайт на порт 8082 так, чтобы следующий прогон ничего не менял ещё не выполнена

Цели шага

0 из 2
  • Собрать конфиг из шаблона с переменной порта — ещё не выполнена
  • Перевести сайт на порт 8082 так, чтобы следующий прогон ничего не менял — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Собрать конфиг из шаблона с переменной порта — ещё не выполнена
  • Перевести сайт на порт 8082 так, чтобы следующий прогон ничего не менял — ещё не выполнена
Загрузка…