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

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

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

Общие сведения

Ansible относится к классу инструментов инфраструктуры как кода (Infrastructure as Code, IaC) и конфигурации как кода. Основная идея — описывать желаемое состояние систем в декларативных файлах, а Ansible сам вычисляет и применяет необходимые изменения. Инструмент кроссплатформенный: поддерживает Linux, Windows, macOS, сетевые устройства и облачные среды.

Ключевые особенности:

Архитектура

Управляющий узел и инвентарь

Ansible выполняется с управляющего узла (control node), на котором установлен интерфейс командной строки ansible или ansible-playbook. Целевые машины описываются в файле инвентаря (inventory) — простом текстовом файле в формате INI или YAML, где перечислены IP-адреса или доменные имена серверов, сгруппированные по ролям (например, webservers, dbservers).

Playbook

Playbook — основной рабочий документ Ansible, YAML-файл, описывающий серию задач (tasks) для одной или нескольких групп хостов. Каждая задача вызывает модуль — отдельную единицу логики, выполняющую конкретное действие (установка пакета, копирование файла, запуск команды, изменение параметров конфигурации).

Пример минимального playbook:

```yaml

  • hosts: webservers

become: yes tasks:

apt: name: nginx state: present

service: name: nginx state: started ```

Роли

Для структурирования сложных проектов используются роли (roles) — упакованные блоки playbook с заранее определённой структурой каталогов (задачи, шаблоны, файлы, переменные, обработчики). Роли позволяют переиспользовать логику между проектами и делегировать управление разными компонентами инфраструктуры разным командам.

Модуля

Модуль — атомарная единица работы Ansible. В стандартной поставке (ansible-core) их более тысячи: управление пакетами (apt, yum, dnf), файлами (copy, template, file), сервисами (service, systemd), пользователями (user, group), сетевыми настройками и многим другим. Модули написаны на Python и выполняются на целевом узле, результат возвращается управляющему узлу в формате JSON.

Ansible Galaxy и коллекции

Ansible Galaxy — публичный репозиторий готовых ролей и коллекций (collections), созданных сообществом и вендорами. Коллекции — более новый формат упаковки, объединяющий модули, плагины, роли и playbooks в единый пакет. Официальные коллекции выпускаются для управления продуктами Amazon Web Services, Microsoft Azure, Google Cloud, Cisco, NetApp, VMware и других вендоров.

Ansible Tower и AWX

Для организаций, которым требуется веб-интерфейс, RBAC-разграничение прав, журналы запусков и интеграция с ITSM-системами, Red Hat выпускает коммерческий продукт Ansible Tower (с 2019 года — Red Hat Ansible Automation Platform). Открытая версия — AWX, доступная на GitHub под лицензией Apache 2.0. Оба продукта добавляют к возможностям Ansible REST API, очередь задач, шаблоны запуска и управление учётными данными.

Применение

Ansible применяется в нескольких основных сценариях:

  • Конфигурация серверов — массовое разворачивание одинаковой конфигурации на десятки и сотни хостов.
  • Развёртывание приложений — деплой артефактов, миграции баз данных, перезапуск сервисов.
  • Оркестровка — управление взаимодействием нескольких систем как единого целого (например, развёртывание трёхузловой кластерной инсталляции).
  • Облачная автоматизация — создание и удаление инстансов в AWS, Azure, GCP, OpenStack.
  • Сетевая автоматизация — управление коммутаторами, маршрутизаторами и брандмауэрами через специализированные модули.
  • Compliance и аудит — проверка соответствия систем политикам безопасности, сбор отчётов.

Отличия от альтернатив

В отличие от Puppet и Chef, использующих агентов на целевых узлах и модель pull, Ansible работает по модели push и не требует демона на управляемых машинах. В отличие от SaltStack, который также поддерживает push-модель, Ansible изначально делает упор на простоту YAML-синтаксиса и отсутствие дополнительных компонентов инфраструктуры (мастер-сервер, база данных).

Лицензия и сообщество

Ansible распространяется под лицензией GPLv3. Проект развивается на GitHub, где размещён исходный код ansible-core. Сообщество публикует документацию, участвует в разработке модулей и ролей, проводит ежегодную конференцию AnsibleFest.

Источники:

  • Документация проекта Ansible (docs.ansible.com)
  • Репозиторий проекта на GitHub (github.com/ansible/ansible)
  • Red Hat Ansible Automation Platform — официальная документация
  • Ansible Galaxy (galaxy.ansible.com)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru