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