Открыть сервисСервис

Ansible — система автоматизации ИТ-инфраструктуры

Ansible — это бесплатная система автоматизации настройки серверов, развёртывания приложений и оркестрации инфраструктуры, написанная на Python. Ключевая особенность Ansible — отсутствие агентов: управление удалёнными узлами осуществляется по протоколу SSH (в Windows — через WinRM), поэтому на целевых серверах не требуется устанавливать дополнительное программное обеспечение. Проект создан Майклом ДеВеро (Michael DeHaan) в 2012 году, с 2015 года развивается компанией Red Hat.

Основные принципы

Ansible описывает желаемое состояние инфраструктуры декларативно: в файлах конфигурации указывается не последовательность команд, а требуемый итоговый результат. Утилита сравнивает текущее состояние системы с описанным и выполняет только те действия, которые необходимы для приведения системы к целевому состоянию (идемпотентность).

Второй принцип — простота. Язык описания — YAML, который читается как обычный текст и не требует знания сложных синтаксических конструкций. Третий принцип — архитектура «push» (отправки): управляющий узел сам инициирует подключения к управляемым серверам, в отличие от агентных систем (например, Puppet или Chef), где агент на сервере опрашивает центральный сервер.

Устройство и компоненты

КомпонентНазначение
InventoryСписок управляемых узлов, описанный в INI- или YAML-формате; поддерживает динамические инвентаризации из облаков и CMDB
PlaybookYAML-файл, описывающий набор задач (tasks) для конкретной группы узлов
ModuleОтдельная исполняемая единица работы (например, apt, service, user, template); в стандартной библиотеке их более тысячи
RoleУпакованный набор плейбуков, шаблонов, переменных и файлов для повторного использования
GalaxyПубличный репозиторий готовых ролей сообщества
VaultМеханизм шифрования секретов (паролей, ключей) внутри YAML-файлов
FactsСобираемая автоматически информация о целевом узле (ОС, версии, сетевые интерфейсы)

Пример плейбука

```yaml

  • hosts: webservers

become: yes tasks:

apt: name: nginx state: present

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 — коммерческой платформы с расширенной поддержкой, сертификацией и средствами управления автоматизацией.

Сравнение с аналогами

КритерийAnsiblePuppetChefSaltStack
Агент на узлеНе требуетсяТребуетсяТребуетсяНе требуется (по умолчанию)
Язык описанияYAMLDSL (Puppet)Ruby (DSL)YAML/Python
Модель связиPushPullPullPush/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)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru