Роль, которую можно отдать коллеге: она работает с первого запуска и ничего не ломает со второго
ansible-lintДва веб-узла с 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 не перезагружается, если его конфигурация не менялась.
| Требование | Модуль |
|---|---|
Инвентарь и ansible.cfg проекта; узлы проверены по отпечаткам; pipelining | 01, 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, файл паролей с правами 0640 | 06, 07 |
assert на обязательный пароль с понятным сообщением | 06 |
Заголовок Server без версии nginx; прямой доступ к файлу состояния закрыт | 05 |
checks.yml — проверки без изменений; скрипт двойного прогона | 08 |
ansible-lint без замечаний | 08 |
changed=0.vault.yml, htpasswd и /status. Проверьте вывод с -v — пароля в нём быть не должно.checks.yml и скрипт двойного прогона; сломайте по одной вещи и убедитесь, что проверки это ловят.community.general.htpasswd на узле нужна библиотека python3-passlib — поставьте её той же задачей, что и nginx. На чистых узлах Debian может не быть curl: проверки пишите модулем ansible.builtin.uri, а не через shell.Подробные требования, что сдаётся и критерии оценивания — в задании на портале.
Вы прошли курс «Основы Ansible». Дальше — «Terraform» (создавать сами серверы кодом, а Ansible — настраивать их), «Основы CI/CD» (запускать линтер и плейбуки в конвейере) и «Кибербезопасность».