Что это такое
Ansible — платформа автоматизации инфраструктуры. Она описывает, что должно быть настроено на серверах и сетевых устройствах, а затем выполняет изменения через SSH без установки отдельного агента на каждом узле.
Репозиторий существует с 2012 года, основной язык — Python, лицензия — GPL-3.0. Проект связан с Red Hat и имеет большую документацию, сообщество и правила вклада.
Что внутри
Внутри — ядро ansible-core, модули, тесты, документация для разработчиков, правила кодирования, сведения о ветках и дорожная карта. Пользовательская модель строится вокруг inventory, playbook и модулей.
Пример playbook
Синтаксис YAML не подсвечивается отдельным ключом на сайте, поэтому пример показан как текст: задача описывает желаемое состояние сервера.
- hosts: web
tasks:
- name: Install nginx
package:
name: nginx
state: present
Как это используют
Ansible используют для настройки серверов, деплоя приложений, сетевой автоматизации, облачной инфраструктуры и повторяемых операционных задач. Он особенно полезен там, где изменения должны быть описаны в текстовом виде и проходить через ревью.
Сильная сторона — понятная декларативная форма. Playbook читается как список задач, а не как сложная программа, поэтому инфраструктурные изменения проще обсуждать с командой.
Детали проекта
Ansible хорош там, где инфраструктурные изменения должны быть понятны не только одному администратору. Playbook можно прочитать, обсудить в pull request и повторить на нескольких окружениях без ручного списка команд.
Отсутствие агента на управляемых узлах — важная часть дизайна. Команда работает через SSH и модули, поэтому старт часто проще, чем у систем, требующих заранее поставить постоянный сервис на каждый сервер.
Слабое место появляется при росте количества ролей и исключений. Если playbook превращается в набор условий для каждого сервера, автоматизация теряет прозрачность. Поэтому Ansible требует такой же архитектурной дисциплины, как обычный код.
Сильные стороны и ограничения
Ограничение — автоматизация усиливает и хорошие, и плохие решения. Неправильный playbook может быстро разнести ошибку на много узлов, поэтому нужны тесты, маленькие изменения и аккуратные окружения.
Ansible важен как зрелый проект инфраструктурной автоматизации: он стал одним из стандартных способов описывать операционную работу как код.