Ansible
Ansible — система управления конфигурациями, написанная на языке программирования Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения. Обычно используется для управления Linux-узлами, но Windows также поддерживается. Поддерживает работу с сетевыми устройствами, на которых установлен Python версии 2.4 и выше по SSH или WinRM соединению.
Ansible | |
---|---|
Тип | Управление конфигурацией, системное администрирование |
Автор | Michael DeHaan |
Разработчик | Red Hat и Ansible |
Написана на | Python[1], PowerShell и Ruby |
Операционная система | кроссплатформенное программное обеспечение |
Первый выпуск | 20 февраля 2012 |
Последняя версия | |
Состояние | активное |
Лицензия | GPL 3.0+[3][4] и проприетарная |
Сайт | ansible.com (англ.) |
Автор платформы — Michael DeHaan, ранее разработавший серверную систему развертывания ПО Cobbler и соавтор фреймворка удаленного администрирования Func. Система Ansible входит в состав большинства дистрибутивов Linux. Есть пакеты для Solaris, FreeBSD и MacOS. Компания Ansible, Inc осуществляла коммерческую поддержку и сопровождение Ansible. 16 октября 2015 года Red Hat, Inc объявила о поглощении Ansible, Inc.
Словом «Ansible» названа вымышленная система мгновенной гиперпространственной связи. Эта система была в мире Игра Эндера Орсона С. Карда, само слово придумано Урсулой Ле Гуин в романе Мир Роканнона (1966).
Архитектура
Наряду с Chef, Puppet и SaltStack считается одной из наиболее популярных систем управления конфигурациями для Linux. Главное отличие Ansible от аналогов — не нужна установка агента/клиента на целевые системы.
Пользователь Ansible создаёт определённые «плейбуки» (англ. playbook, play — игра, пьеса, book — книга) в формате YAML с описанием требуемых состояний управляемой системы. «Плейбук» — это описание состояния ресурсов системы, в котором она должна находиться в конкретный момент времени, включая установленные пакеты, запущенные службы, созданные файлы и многое другое. Ansible проверяет, что каждый из ресурсов системы находится в ожидаемом состоянии и пытается исправить состояние ресурса, если оно не соответствует ожидаемому.
Для выполнения задач используется система модулей. Каждая задача представляет собой имя задачи, используемый модуль и список параметров, характеризующих задачу. Система Ansible поддерживает переменные, фильтры обработки переменных (поддержка осуществляется библиотекой Jinja2), условное выполнение задач, параллелизацию, шаблоны файлов. Адреса и настройки целевых систем содержатся в файлах «инвентаря» (inventory). Поддерживается группирование. Для реализации набора сходных задач существует система ролей.
Ansible Tower
Ansible Tower — графический интерфейс для управления и мониторинга работы Ansible. Является платным продуктом, однако в 2017 году, после приобретения Ansible, Inc. компанией RedHat, исходные коды Tower были опубликованы под свободной лицензией Apache. Новый проект получил название AWX Project, который ныне является кодовой основой для коммерческого продукта Tower[5].
Имеет следующую функциональность:
- Визуальная панель состояния
- Списки доступа, группы и роли пользователей
- Централизованное логирование и аудит
Модули
Категории модулей и выполняемые ими задачи:
- Cloud: поддержка Amazon EC2/ECS/S3, Azure, Cloudstack, Digital Ocean, Docker, LXC, OpenStack, Rackspace, 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[6]
- Notification: отсылаются сообщения в Campfire, HipChat, Jabber, Pushbullet, Slack, через email/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, реестром
Примечания
- The ansible-ssh Open Source Project on Open Hub: Languages Page — 2006.
- https://pypi.org/project/ansible/5.0.1/#history — 2021.
- https://github.com/ansible/ansible/blob/devel/COPYING (англ.)
- GNU Guix — 2012.
- THE AWX PROJECT FAQ . Дата обращения: 13 апреля 2018.
- Platform Options — Ansible Documentation . docs.ansible.com. Дата обращения: 24 июня 2021.
Литература
- Мозер Р., Хоштейн Л. Запускаем Ansible = Ansible: Up and Running. — ДМК Пресс, 2018. — 382 с. — ISBN 978-5-97060-513-4.