Ansible
![Ansible[200]](../images/welcome.png)
Ansible — инструмент с открытым исходным кодом для автоматизации задач по управлению, настройке и обслуживанию серверов или сетевых устройств. Обычно используется для управления Linux-узлами, но Windows также поддерживается.
Разделы
- 1. База: inventory, playbooks, переменные и шаблоны — static/dynamic inventory, структура playbook и flow выполнения, модули и idempotency, переменные (group_vars/host_vars), templates (Jinja2), handlers, tags; мини‑практика (Nginx + template, PostgreSQL, пользователи и SSH) и production best practices.
- 2. Поддерживаемые playbooks — идемпотентность,
register/when/failed_when/changed_when, loop’ы,block/rescue/always, includes vs imports, facts; практики: fallback, OS‑логика, rollback. - 3. Архитектура проекта — роли (структура, defaults vs vars), организация репозитория (roles/, inventories/, group_vars/), переиспользование через Ansible Galaxy/collections; практика: разбить большой playbook на роли.
- 4. Безопасность и секреты — Ansible Vault, Vault IDs, хранение секретов (Vault vs внешние системы),
no_log; практика: шифрование паролей БД, разделение vault по окружениям. - 5. Работа с инфраструктурой — dynamic inventory, облака (AWS/GCP/Azure),
delegate_to,serialи rolling updates; практика: zero‑downtime деплой. - 6. Продвинутые техники — custom modules (Python), plugins (lookup/filter), Jinja2 advanced (filters/macros), async tasks/poll, strategy plugins; практика: свой filter plugin и async‑деплой.
- 7. CI/CD и интеграция — интеграция с GitLab CI/Jenkins, проверки (ansible-lint, molecule), Test‑driven Ansible; практика: pipeline lint → syntax check → deploy и Molecule тест роли.
- 8. Observability и Debugging — verbosity (-vvv), debug module, callback plugins, логирование, profiling playbooks; практика: flaky playbook и ускорение деплоя.
- 9. Best Practices (Middle+) — DRY vs читаемость, минимизация magic, предсказуемость выполнения, разделение логики и данных; антипаттерны (giant playbooks, хардкод, отсутствие idempotency, shell вместо модулей).