Ansible — система управления конфигурациями, написанная на языке программирования Python, с использованием декларативного языка разметки для описания конфигураций. Применяется для автоматизации настройки и развёртывания программного обеспечения. Обычно используется для управления Linux-узлами, но Windows также поддерживается. Поддерживает работу с сетевыми устройствами, на которых установлен Python версии 2.4 и выше по SSH- или WinRM[англ.]-соединению.
Ansible | |
---|---|
Тип | configuration manager[вд] и Инфраструктура как код |
Автор | Михаэль ДеХаан[вд] |
Разработчики | Red Hat и Ansible[вд] |
Написана на | Python[2], PowerShell и командная оболочка UNIX |
Операционные системы | GNU/Linux[3], BSD[вд][3], Windows[3] и macOS[3] |
Первый выпуск | 20 февраля 2012 |
Последняя версия | |
Репозиторий | github.com/ansible/ansib… |
Лицензия | GPL 3.0+[4][5] и проприетарная |
Сайт | ansible.com (англ.) |
Автор платформы — Михаэль Дехан (Michael DeHaan), ранее разработавший серверную систему развёртывания программного обеспечения Cobbler[англ.] и соавтор фреймворка удалённого администрирования Func.
Входит в состав большинства дистрибутивов Linux. Есть пакеты для Solaris, FreeBSD и macOS. Развитием и коммерциализацией платформы занималась компания Ansible, 16 октября 2015 года она была поглощена корпорацией Red Hat.
Наименование взято от вымышленной системы мгновенной гиперпространственной связи из романа Урсулы Ле Гуин «Мир Роканнона» (1966).
Архитектура
правитьНаряду с Chef, Puppet и SaltStack считается одной из наиболее популярных систем управления конфигурациями для Linux. Главное отличие Ansible от аналогов — не нужна установка агента или клиента на целевые системы.
Пользователь Ansible создаёт определённые сценарии («плейбуки», англ. playbooks) в формате YAML с описанием требуемых состояний управляемой системы. Сценарий — это описание состояния ресурсов системы, в котором она должна находиться в конкретный момент времени, включая установленные пакеты, запущенные службы, созданные файлы и многое другое. Ansible проверяет, что каждый из ресурсов системы находится в ожидаемом состоянии и пытается исправить состояние ресурса, если оно не соответствует ожидаемому.
Для выполнения задач используется система модулей. Каждая задача представляет собой имя задачи, используемый модуль и список параметров, характеризующих задачу. Система поддерживает переменные, фильтры обработки переменных (поддержка осуществляется библиотекой Jinja2), условное выполнение задач, параллелизацию, шаблоны файлов. Адреса и настройки целевых систем содержатся в файлах «инвентаря» (inventory). Поддерживается группирование. Для реализации набора сходных задач существует система ролей.
Ansible Tower
правитьAnsible Tower — графический интерфейс для управления и мониторинга работы Ansible. Является платным продуктом, однако в 2017 году, после перехода активов в RedHat, исходные коды Tower были опубликованы под свободной лицензией Apache. Новый проект получил название AWX Project, который ныне является кодовой основой для коммерческого продукта Tower[6].
В продукте организована визуальная панель состояния, ведутся списки доступа, группы и роли пользователей, обеспечивается централизованное журналирование и аудит.
Модули
правитьКатегории модулей и выполняемые ими задачи:
- Cloud: поддержка Amazon EC2, S3, Azure, Cloudstack, Digital Ocean, Rackspace, а также средств контейнеризации (Docker, LXC) и виртуализации (OpenStack, VMware);
- Clustering: поддержка Consul, ZooKeeper, Kubernetes;
- Command: выполняют консольные команды и сценарии командной строки;
- Database: поддержка СУБД MySQL, PostgreSQL, Vertica, MongoDB, Redis, Riak;
- File: работа с файлами — копирование, синхронизация, модификация, проверка, архивирование;
- Inventory: работа с именами хостов или их IP-адресами;
- Messaging: поддержка RabbitMQ;
- Monitoring: поддержка систем мониторинга DataDog, Nagios, Zabbix и ряда других;
- Network: работа с сетевым оборудованием и ПО F5 BIG-IP, Cisco IOS/NXOS, Juniper JunOS, OpenSwitch, Cumulus Linux, Mikrotik RouterOS[7];
- Notification: отсылаются сообщения в Campfire, HipChat, Jabber, Pushbullet, Slack, через e-mail и SMS;
- Packaging: работа с менеджерами пакетов apt, FreeBSD Ports, Gentoo, homebrew, pacman, opkg, Red Hat software channels, yum, xbps, zypper;
- Source Control: работа с системами контроля версий git, mercurial, subversion;
- System: работа с компонентами Linux/Unix систем — cron, iptables, LVM, SELinux, sshd, ZFS;
- Utilities: реализуют внутреннюю логику сценариев;
- Web Infrastructure: работа с Apache, Django, JBoss, Jira;
- Windows: работа с компонентами Windows, в том числе IIS, Windows Firewall, реестром.
Примечания
править- ↑ Release 2.17.5 — 2024.
- ↑ The ansible-ssh Open Source Project on Open Hub: Languages Page — 2006.
- ↑ 1 2 3 4 Free Software Directory
- ↑ https://github.com/ansible/ansible/blob/devel/COPYING (англ.)
- ↑ GNU Guix — 2012.
- ↑ The AWX project FAQ . Дата обращения: 13 апреля 2018. Архивировано 20 февраля 2018 года.
- ↑ Platform Options — Ansible Documentation . docs.ansible.com. Дата обращения: 24 июня 2021. Архивировано 24 июня 2021 года.
Литература
править- Мозер Р., Хоштейн Л. Запускаем Ansible = Ansible: Up and Running. — ДМК Пресс, 2018. — 382 с. — ISBN 978-5-97060-513-4.