Учебник Ansible для начинающих
Полный курс по Ansible - самому популярному инструменту управления конфигурацией серверов. От идеи «настройка серверов как воспроизводимый код» до боевого прод-проекта: agentless-подход через SSH, инвентарь и группы, playbook и модули, центральная тема идемпотентности, переменные и факты, шаблоны Jinja2, роли и переиспользование, Galaxy, Vault и переход к автоматизации инфраструктуры.
Каждый урок - 700+ слов с ASCII-диаграммами и запускаемыми Python-врезками, которые показывают логику Ansible изнутри: как устроена идемпотентная операция check-then-act, как раскрываются группы инвентаря, как накладываются переменные и рендерятся шаблоны. Примеры playbook'ов на YAML, команды на bash, шаблоны Jinja2 - всё как в реальной работе.
Курс «Ansible: автоматизация серверов» состоит из 6 разделов и 20 уроков: Что такое Ansible и agentless-подход, Инвентарь и первые команды, Playbook и задачи, Переменные, факты и шаблоны Jinja2, Роли и переиспользование и Практика, Galaxy, Vault и продакшен. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Что такое Ansible и agentless-подход
- Зачем нужен Ansible
Что такое управление конфигурацией и какую боль решает Ansible: повторяемая настройка серверов вместо ручного SSH.
- Agentless: магия без агентов
Почему Ansible не требует установки агента на серверы и как он работает через обычный SSH и Python.
- Установка и первая команда ping
Ставим Ansible на control node, настраиваем SSH и запускаем первую ad-hoc команду ping для проверки связи.
- Зачем нужен Ansible
2 Инвентарь и первые команды
- Инвентарь: список твоих серверов
Что такое инвентарь Ansible, форматы INI и YAML, как перечислять хосты и зачем это нужно.
- Группы хостов и их вложенность
Группируем серверы по ролям: веб, базы, балансировщики. Группы групп и группа all.
- Ad-hoc команды для быстрых задач
Разовые команды без playbook: установить пакет, перезапустить сервис, собрать факты модулями ping, command, setup.
- Инвентарь: список твоих серверов
3 Playbook и задачи
- Первый playbook: структура YAML
Анатомия playbook: плей, hosts, tasks, модули. Запускаем ansible-playbook и читаем вывод.
- Модули - кирпичики автоматизации
Что такое модуль, FQCN, ключевые модули apt/yum, copy, file, service, user. Как читать документацию модуля.
- Идемпотентность - главный принцип
Что значит идемпотентность, как модули её обеспечивают, как сделать shell-задачи безопасными через creates/when.
- Обработчики, условия и циклы
Handlers и notify для перезапуска сервисов при изменениях, условие when, циклы loop для повторяющихся задач.
- Первый playbook: структура YAML
4 Переменные, факты и шаблоны Jinja2
- Переменные и их приоритет
Где объявлять переменные: в playbook, group_vars, host_vars. Приоритет переменных и почему он важен.
- Факты: что Ansible знает о хосте
Сбор фактов через setup, ansible_facts, использование фактов в условиях и шаблонах, кеширование и gather_facts.
- Шаблоны Jinja2: конфиги из переменных
Модуль template, синтаксис Jinja2: переменные, условия, циклы, фильтры. Генерация конфигов под каждый хост.
- Переменные и их приоритет
5 Роли и переиспользование
- Зачем нужны роли
Проблема разрастающихся playbook, идея роли как переиспользуемой единицы. Когда выносить в роль.
- Структура роли: каталоги по соглашению
Стандартные каталоги роли: tasks, handlers, templates, files, defaults, vars, meta. Что куда класть.
- Параметры ролей и зависимости
Передача переменных в роль, role defaults, зависимости ролей через meta, include_role и import_role.
- Зачем нужны роли
6 Практика, Galaxy, Vault и продакшен
- Ansible Galaxy: готовые роли и коллекции
Установка ролей и коллекций из Galaxy, requirements.yml с пинами версий, ansible-galaxy install.
- Ansible Vault: храним секреты безопасно
Шифрование секретов через ansible-vault, encrypt_string, vault-файлы переменных, запуск с --ask-vault-pass.
- Тестирование и проверка перед прод
Сухой прогон --check, --diff, проверка синтаксиса, ansible-lint, проверка идемпотентности двойным прогоном.
- От настройки серверов к автоматизации инфраструктуры
Сборка боевого проекта: структура репозитория, окружения, CI/CD, и переход к провижинингу инфраструктуры.
- Ansible Galaxy: готовые роли и коллекции