DevOps и инфраструктура

Учебник Ansible для начинающих

20 уроков · 6 разделов · бесплатно, без регистрации

Полный курс по 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. 1 Что такое Ansible и agentless-подход

    1. Зачем нужен Ansible

      Что такое управление конфигурацией и какую боль решает Ansible: повторяемая настройка серверов вместо ручного SSH.

    2. Agentless: магия без агентов

      Почему Ansible не требует установки агента на серверы и как он работает через обычный SSH и Python.

    3. Установка и первая команда ping

      Ставим Ansible на control node, настраиваем SSH и запускаем первую ad-hoc команду ping для проверки связи.

  2. 2 Инвентарь и первые команды

    1. Инвентарь: список твоих серверов

      Что такое инвентарь Ansible, форматы INI и YAML, как перечислять хосты и зачем это нужно.

    2. Группы хостов и их вложенность

      Группируем серверы по ролям: веб, базы, балансировщики. Группы групп и группа all.

    3. Ad-hoc команды для быстрых задач

      Разовые команды без playbook: установить пакет, перезапустить сервис, собрать факты модулями ping, command, setup.

  3. 3 Playbook и задачи

    1. Первый playbook: структура YAML

      Анатомия playbook: плей, hosts, tasks, модули. Запускаем ansible-playbook и читаем вывод.

    2. Модули - кирпичики автоматизации

      Что такое модуль, FQCN, ключевые модули apt/yum, copy, file, service, user. Как читать документацию модуля.

    3. Идемпотентность - главный принцип

      Что значит идемпотентность, как модули её обеспечивают, как сделать shell-задачи безопасными через creates/when.

    4. Обработчики, условия и циклы

      Handlers и notify для перезапуска сервисов при изменениях, условие when, циклы loop для повторяющихся задач.

  4. 4 Переменные, факты и шаблоны Jinja2

    1. Переменные и их приоритет

      Где объявлять переменные: в playbook, group_vars, host_vars. Приоритет переменных и почему он важен.

    2. Факты: что Ansible знает о хосте

      Сбор фактов через setup, ansible_facts, использование фактов в условиях и шаблонах, кеширование и gather_facts.

    3. Шаблоны Jinja2: конфиги из переменных

      Модуль template, синтаксис Jinja2: переменные, условия, циклы, фильтры. Генерация конфигов под каждый хост.

  5. 5 Роли и переиспользование

    1. Зачем нужны роли

      Проблема разрастающихся playbook, идея роли как переиспользуемой единицы. Когда выносить в роль.

    2. Структура роли: каталоги по соглашению

      Стандартные каталоги роли: tasks, handlers, templates, files, defaults, vars, meta. Что куда класть.

    3. Параметры ролей и зависимости

      Передача переменных в роль, role defaults, зависимости ролей через meta, include_role и import_role.

  6. 6 Практика, Galaxy, Vault и продакшен

    1. Ansible Galaxy: готовые роли и коллекции

      Установка ролей и коллекций из Galaxy, requirements.yml с пинами версий, ansible-galaxy install.

    2. Ansible Vault: храним секреты безопасно

      Шифрование секретов через ansible-vault, encrypt_string, vault-файлы переменных, запуск с --ask-vault-pass.

    3. Тестирование и проверка перед прод

      Сухой прогон --check, --diff, проверка синтаксиса, ansible-lint, проверка идемпотентности двойным прогоном.

    4. От настройки серверов к автоматизации инфраструктуры

      Сборка боевого проекта: структура репозитория, окружения, CI/CD, и переход к провижинингу инфраструктуры.