Итоговый проект — роль веб-сервера на двух узлах

Роль, которую можно отдать коллеге: она работает с первого запуска и ничего не ломает со второго

Прогресс курса Модуль 9 из 9

Что покажет проект

01

Постановка

Два веб-узла с Debian 13 должны отдавать сайт сервиса и закрытую страницу состояния для мониторинга. Всё настраивается одной ролью web из чистой системы, где есть только SSH и пользователь ansible:

  управляющий узел                      web1, web2 (Debian 13)
  ansible-playbook site.yml  ──SSH──▶   nginx :80
    роль web                              /            стартовая страница: название, версия, узел
    group_vars/web/vars.yml               /status      JSON: узел, версия, список веб-узлов —
    group_vars/web/vault.yml (Vault)                   только с паролем (401 без него)
                                          /status.json 404 — файл не отдаётся напрямую

Версия сервиса — одна переменная. Новый выпуск — правка этой переменной и прогон: страницы обновляются, nginx не перезагружается, если его конфигурация не менялась.

02

Что должно получиться

ТребованиеМодуль
Инвентарь и ansible.cfg проекта; узлы проверены по отпечаткам; pipelining01, 02, 06
Роль web: defaults с префиксом web_, meta, README с таблицей параметров; плейбук — только подключение роли06
Страницы и конфигурация nginx из шаблонов, {{ ansible_managed }}, список узлов из инвентаря04, 05
Обработчики: проверка nginx -t, затем reloaded; вызываются только изменением конфигурации05
/status под паролем: htpasswd, пароль — в vault.yml по схеме vars/vault, задачи с паролем — no_log, файл паролей с правами 064006, 07
assert на обязательный пароль с понятным сообщением06
Заголовок Server без версии nginx; прямой доступ к файлу состояния закрыт05
checks.yml — проверки без изменений; скрипт двойного прогона08
ansible-lint без замечаний08

Порядок работы

  • Сначала роль без пароля: nginx, страница, конфигурация, обработчики. Два прогона, второй — changed=0.
  • Затем Vault: ключ вне проекта, vault.yml, htpasswd и /status. Проверьте вывод с -v — пароля в нём быть не должно.
  • Затем checks.yml и скрипт двойного прогона; сломайте по одной вещи и убедитесь, что проверки это ловят.
  • В конце — линтер и README. Отдайте проект однокурснику: сможет ли он развернуть его на своих узлах только по README?
Модулю community.general.htpasswd на узле нужна библиотека python3-passlib — поставьте её той же задачей, что и nginx. На чистых узлах Debian может не быть curl: проверки пишите модулем ansible.builtin.uri, а не через shell.

Подробные требования, что сдаётся и критерии оценивания — в задании на портале.

Практические задания — на учебном портале. Задания, критерии оценивания, сдача работ и оценки преподавателя — в курсе на portal.nevabit.ru. Учётную запись выдаёт преподаватель.

Курс пройден

Вы прошли курс «Основы Ansible». Дальше — «Terraform» (создавать сами серверы кодом, а Ansible — настраивать их), «Основы CI/CD» (запускать линтер и плейбуки в конвейере) и «Кибербезопасность».

Модуль 08: Проверка и отладка Все модули Все курсы