Ansible — система автоматизации ИТ-инфраструктуры¶
Ansible — это бесплатная система автоматизации настройки серверов, развёртывания приложений и оркестрации инфраструктуры, написанная на Python. Ключевая особенность Ansible — отсутствие агентов: управление удалёнными узлами осуществляется по протоколу SSH (в Windows — через WinRM), поэтому на целевых серверах не требуется устанавливать дополнительное программное обеспечение. Проект создан Майклом ДеВеро (Michael DeHaan) в 2012 году, с 2015 года развивается компанией Red Hat.
¶Основные принципы
Ansible описывает желаемое состояние инфраструктуры декларативно: в файлах конфигурации указывается не последовательность команд, а требуемый итоговый результат. Утилита сравнивает текущее состояние системы с описанным и выполняет только те действия, которые необходимы для приведения системы к целевому состоянию (идемпотентность).
Второй принцип — простота. Язык описания — YAML, который читается как обычный текст и не требует знания сложных синтаксических конструкций. Третий принцип — архитектура «push» (отправки): управляющий узел сам инициирует подключения к управляемым серверам, в отличие от агентных систем (например, Puppet или Chef), где агент на сервере опрашивает центральный сервер.
¶Устройство и компоненты
| Компонент | Назначение |
|---|---|
| Inventory | Список управляемых узлов, описанный в INI- или YAML-формате; поддерживает динамические инвентаризации из облаков и CMDB |
| Playbook | YAML-файл, описывающий набор задач (tasks) для конкретной группы узлов |
| Module | Отдельная исполняемая единица работы (например, apt, service, user, template); в стандартной библиотеке их более тысячи |
| Role | Упакованный набор плейбуков, шаблонов, переменных и файлов для повторного использования |
| Galaxy | Публичный репозиторий готовых ролей сообщества |
| Vault | Механизм шифрования секретов (паролей, ключей) внутри YAML-файлов |
| Facts | Собираемая автоматически информация о целевом узле (ОС, версии, сетевые интерфейсы) |
¶Пример плейбука
```yaml
- hosts: webservers
become: yes tasks:
- name: Установить Nginx
apt: name: nginx state: present
- name: Запустить Nginx
service: name: nginx state: started enabled: yes ```
Такой плейбук подключается к хостам из группы webservers, устанавливает Nginx (если его нет) и гарантирует, что служба запущена и включена в автозагрузку.
¶Применение
Ansible используется для:
- Конфигурации серверов — установка пакетов, настройка ОС, управление пользователями и правами доступа.
- Развёртывания приложений — деплой кода, управление контейнерами (Docker, Podman), оркестрация Kubernetes через коллекции
kubernetes.coreиcommunity.kubernetes. - Сетевой автоматизации — управление коммутаторами и маршрутизаторами (Ansible Network Automation).
- Облаков — создание и управление ресурсами в AWS, Яндекс.Облаке, Selectel и других провайдерах.
- Безопасности и соответствия — проверка конфигураций на соответствие политикам (Compliance as Code).
В российской практике Ansible активно применяется в ИТ-отрасли, телекоммуникациях и госсекторе как часть подхода Infrastructure as Code; он входит в состав Red Hat Ansible Automation Platform — коммерческой платформы с расширенной поддержкой, сертификацией и средствами управления автоматизацией.
¶Сравнение с аналогами
| Критерий | Ansible | Puppet | Chef | SaltStack |
|---|---|---|---|---|
| Агент на узле | Не требуется | Требуется | Требуется | Не требуется (по умолчанию) |
| Язык описания | YAML | DSL (Puppet) | Ruby (DSL) | YAML/Python |
| Модель связи | Push | Pull | Pull | Push/Pull |
| Минимальная кривая обучения | Низкая | Средняя | Высокая | Средняя |
¶История
Майкл ДеВеро, ранее работавший над проектированием Puppet и создатель системы автоматизации для виртуализации, выпустил первую версию Ansible в феврале 2012 года. В 2015 году компания Red Hat приобрела Ansible, Inc. и включила продукт в свою линейку автоматизации. В 2020 году вышла Ansible 2.10, в которой модули были вынесены в отдельные коллекции (collections), а в 2021-м — Ansible Core 2.11 с новой системой версий. Развитие проекта ведётся на GitHub, где исходный код доступен по лицензии GPLv3.
¶Источники
- Ansible Documentation (docs.ansible.com)
- Red Hat Ansible Automation Platform — официальная документация
- Документация проекта на GitHub (github.com/ansible/ansible)
- DeHaan M. Ansible: Up and Running — O'Reilly Media
- Книга «Ansible для DevOps» (Jeff Geerling)
