Общая информация про Ansible
Создателем софта стал программист Михаэль Дехан, автор программы Cobbler и один из разработчиков фреймворка для удаленного администрирования Func.
С 2012 по 2015 год продвижением продукта занималась одноименная компания Ansible Works. Затем ее поглотила корпорация Red Hat, которой теперь и принадлежит торговая марка. Базовая версия программы распространяется бесплатно.
О названии продукта
По-английски название программы звучит как Э́нсибл. Однако русскоязычные пользователи предпочитают принцип «как пишется, так и слышится» — Анси́бл.
Название взято из творчества американской писательницы-фантаста Урсулы Крёбер Ле Гуин. В изданном в 1966 году романе «Мир Роканнона» так называется средство мгновенной передачи информации во Вселенной.
Языковой статус Ansible
Часто говорят «язык Ansible», но это методически не совсем верно. На нем пишется не развернутый исходный код, а вторичные управленческие команды изменения исходного кода на удаленных веб-узлах. Можно сказать, что это язык второго уровня.
Программное обеспечение написано на Python с элементами PowerShell. Чтобы работать с Ansible, необходимо владеть этими языками программирования.
Сфера применения Ansible
По умолчанию Ansible предназначается для удаленного конфигурирования веб-узлов в среде Linux. На сетевых устройствах, администрируемых с помощью Ansible, должен быть установлен Python версии 3.0 или выше. Платформа является составной частью практически всех дистрибутивов Linux.
Программа совместима с операционными системами Solaris, FreeBSD и macOS. Теоретически с помощью Ansible можно управлять компьютерами под Windows, но так разработчики и администраторы поступают редко. Камнем преткновения становятся не системные нестыковки, а глубинные идеологические противоречия адептов Linux и Windows.
Особенности Ansible
В процессе конфигурирования пользователь Ansible создает специальные служебные файлы-плейбуки (playbooks), в которых записаны нужные параметры управляемой системы. Формат плейбуков YAML родственен формату языков разметки.
С помощью плейбуков пользователь генерирует сценарий работы подшефной системы на заданное время. Программа проверяет соответствие состояния системы на удаленном компьютере по предложенному сценарию и пытается исправить все несоответствия.
Пример плейбука:
- hosts: web-servers
tasks:
- name: Installs nginx web server
apt: pkg=nginx state=installed update_cache=true
- name: Push future default virtual host configuration
copy: src=files/site.conf dest=/etc/nginx/sites-enabled/ mode=0640
В этом примере задаются две задачи для группы серверов. Сначала необходимо установить пакет nginx, затем скопировать файл site.conf с сервера на удаленную систему в каталог /etc/nginx/sites-enabled.
Поставленные задачи решаются с помощью комплекса автоматизированных исполнительных модулей. Все они хранятся в штатном шаблонизаторе языка Python Jinja2. В этой библиотеке собраны все типичные параметры и роли, которые могут пригодиться при управлении внешними системами.
Ansible Tower
Графический интерфейс, позволяющий отслеживать выполненные изменения, называется Ansible Tower (Башня Ansible). До 2017 года продукт был платным, но потом правообладатель облегчил разработчикам жизнь, опубликовав код под бесплатной лицензией Apache.
В Ansible Tower визуализируются:
- Панель состояний
- Списки доступа
- Роли пользователей и их группировка
- Интерфейс обеспечивает непрерывное ведение журнала действий и внешний аудит.
- Список модулей
Структура Ansible включает следующие служебные модули:
- Облачное хранение данных
- Контейнеризация посредством приложений Docker, LXC
- Виртуализация через OpenStack и VMWare
- Кластеризация с помощью Consul, Kubernetes, ZooKeeper
- Выполнение консольных команд и сценариев командной строки
- Обращение к базам данных (MySQL, PostgreSQL, другие СУБД)
- Работа с файлами. Их можно копировать, синхронизировать, изменять, архивировать
- Работа с хостами и ip-адресами
- Отправка запросов через RabbitMQ
- Мониторинг локальной и внешних сетей (сервисы Nagios, Zabbix и другие)
- Взаимодействие с сетевым оборудованием и софтом
- Отсылка контрольных сообщений по e-mail и SMS
- Работа с менеджерами пакетов
- Взаимодействие с программами контроля версий (Git, Mercurial, Subversion)
- Взаимодействие с компонентами Linux/Unix
- Работа с инфраструктурными веб-сервисами (Apache, Django, JBoss, Jira)
Платформа поддерживает взаимодействие с продуктами корпорации Microsoft, в том числе с IIS, Windows Firewall и реестром Windows.
Преимущества и недостатки Ansible
Как любое узко специализированное программное обеспечение, Ansible имеет восторженных поклонников и непримиримых критиков. В качестве плюсов продукта первые отмечают:
- Понятность интерфейса и структуры, простоту изучения (при условии знания принципов системного администрирования, программирования, языка Python)
- Ansible базируется на Python, входящем в тройку самых популярных языков программирования в мире. Кроме того, он поддерживает создание модулей на других языках, главное, чтобы ответ был в формате JSON
- В отличие от конкурентов Chef, Puppet или SaltStack Ansible не требует установки на управляемый компьютер специального агента, достаточно SSH-подключения
- Удобство работы с YAML-плейбуками
- Возможность в любой момент найти нужные сведения, плейбуки, фреймворки и помощь сообщества на портале Ansible Galaxy
Для общения с зарубежными единомышленниками придется «подтянуть» английский язык.
К минусам программного обеспечения можно отнести:
- Недостаточную функциональность интерфейса Tower. Изначально предполагалась работа исключительно с командной строкой, и, несмотря на все усилия разработчиков продукта, проблемы с визуализацией остались
- Не всегда удается наладить взаимодействие с сетевым оборудованием и ПО
- Слабая совместимость с Windows
- Недостаточно опций поддержки масштабных многопользовательских проектов по сравнению с Chef и Puppet
- Относительная новизна проекта по сравнению с конкурентами
Продукт существует на рынке чуть больше 10-и лет. Он уже зарекомендовал себя как эффективный инструмент удаленного администрирования, но, по мнению ряда экспертов, подлинной «зрелости» еще не достиг.
Заключение о языке Ansible
Знание Ansible необходимо системным администраторам, разработчикам и DevOps-инженерам, которые обслуживают компьютерные сети с небольшим и средним количеством пользовательских мест, работающих под Linux. Администрирование под Windows возможно, но более трудозатратно.
При условии знания языка Python научиться создавать плейбуки и решать простые задачи с помощью Ansible можно за несколько дней. Для профессионального овладения инструментарием необходимо обучение на курсах и живая практика. На нашем сайте представлены разные программы для освоения Ansible.
Если говорить про изучение платформы с нуля, то это невозможно. До начала обучения студент уже должен обладать серьезным объемом знаний и навыков в программировании и системном администрировании.