Linux Labs

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

Роли, переменные и секреты

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

Шаг 5 из 6 · лаба · 30 минсредняя

Роль не применяется

Плейбук страницы статуса вынесли в роль, чтобы ставить её на все магазины. На этой машине роль падает, а когда проходит — показывает чужой магазин. Почини роль, не трогая значения в site.yml.

Ситуация

Страница статуса нужна теперь на всех магазинах сети, и Тимур не стал копировать плейбук. Он вынес задачи плейбука магазина «Юг» в роль status_board, а для каждого магазина оставил короткий site.yml: свои заголовок и порт в vars: и строка roles:. На этой машине — магазин «Север», проект в ~/status-board. ansible-playbook site.yml здесь падает.

Задача

Почини роль roles/status_board так, чтобы site.yml сам приводил эту машину (localhost из inventory.ini) в нужное состояние:

  1. ansible-playbook site.yml проходит без ошибок.
  2. Настройки /etc/status/status.ini собраны по шаблону роли status.ini.j2 с заголовком и портом из site.yml: владелец root, группа status, права 0640.
  3. Служба lab-status запущена, включена при загрузке и отвечает: curl http://127.0.0.1:8096/ — заголовок «Магазин «Север»: статус витрины».
  4. Службу перезапускает прогон, который поменял настройки, а прогон без изменений её не трогает.
  5. Повторный запуск плейбука ничего не меняет: в итоге changed=0.

«Проверить» прогоняет плейбук сам. Сначала убирает то, что делает роль: службу lab-status с юнитом, /etc/status, /var/lib/status и пользователя status. Потом от твоего имени запускает ansible-playbook site.yml из ~/status-board дважды, правит руками строку title в /etc/status/status.ini и запускает в третий раз — служба должна перезапуститься. Последний прогон — --check --diff на копии проекта, где в site.yml другие заголовок и порт: настройки должны получить их. Поэтому всё должна делать роль — настроенное руками проверка уберёт.

Значения в site.yml, приложение и файл юнита lab-status.service роли не меняй.

Запуск: cd ~/status-board && ansible-playbook site.yml. Что в роли — find roles -type f. Интернета на машине нет.

Лаба · самостоятельно

Команды в этой лабе не даны: набирай их в терминале сам. Цели проверяются на машине после каждой команды.

Цели

0 из 5
  • ansible-playbook site.yml проходит без ошибок на машине без страницы статуса — ещё не выполнена
  • /etc/status/status.ini собран по шаблону роли со значениями из site.yml (root:status, 0640) — ещё не выполнена
  • Служба lab-status запущена, включена при загрузке и отвечает на http://127.0.0.1:8096/ заголовком из site.yml — ещё не выполнена
  • Служба перезапускается, когда прогон поменял настройки, и только тогда — ещё не выполнена
  • Повторный прогон ничего не меняет — changed=0 — ещё не выполнена
Ctrl+Enter
Запустит машину node1 · Ubuntu 24.04

Машина запускается

Подсказки

0 из 3

Цели лабы

0 из 5
  • ansible-playbook site.yml проходит без ошибок на машине без страницы статуса — ещё не выполнена
  • /etc/status/status.ini собран по шаблону роли со значениями из site.yml (root:status, 0640) — ещё не выполнена
  • Служба lab-status запущена, включена при загрузке и отвечает на http://127.0.0.1:8096/ заголовком из site.yml — ещё не выполнена
  • Служба перезапускается, когда прогон поменял настройки, и только тогда — ещё не выполнена
  • Повторный прогон ничего не меняет — changed=0 — ещё не выполнена
node1 Ubuntu 24.04

Цели лабы

0 из 5
  • ansible-playbook site.yml проходит без ошибок на машине без страницы статуса — ещё не выполнена
  • /etc/status/status.ini собран по шаблону роли со значениями из site.yml (root:status, 0640) — ещё не выполнена
  • Служба lab-status запущена, включена при загрузке и отвечает на http://127.0.0.1:8096/ заголовком из site.yml — ещё не выполнена
  • Служба перезапускается, когда прогон поменял настройки, и только тогда — ещё не выполнена
  • Повторный прогон ничего не меняет — changed=0 — ещё не выполнена
Загрузка…