Перейти к содержанию

Ansible

Ansible[200]

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 вместо модулей).