Ansible - это средство управления конфигурациями. Каждый, кому приходилось настраивать большое количество серверов, не может обойтись без этого инструмента. В процессе работы системным администратором возникает множество задач по настройке той или иной системы. Это и настройка веб-серверов или серверов приложений, и настройка логирования или мониторинга, а так же настройка различных баз данных, балансировщиков и т.д. Мы, конечно, можем сделать все эти настройки в ручную. Но что делать, если настроить надо несколько серверов, а если несколько десятков или сотен? Это уже превращается в серьезную долгосрочную работу, которая не застрахована от ошибок, да и просто утомляет. И тут нас на помощь приходят системы автоматизации. В данной статье поговорим об одной из них, в лице, которой, вы найдете превосходное решения многих рутинных задач и имя ей - Ansible.
Область применения.
Ansible обычно используется для развертывания программного обеспечения, а так же для его конфигурации. Удобство работы с Ansbile заключается в том, что операции можно осуществлять в определенном порядке. Например, для настройки веб-сервров, необходимо сначала установить базу данных или, допустим, нам необходимо обновить ПО на нескольких серверах, при этом работа общей системы не должна упасть. Ansible прекрасно справится в обоих случаях. В первом не будет настраивать сервер, пока не будет установлена БД. Во втором случае, будет выводить серверы по одному из под управления балансировщика.
Так же Ansible прекрасно справляется с инициализацией новых серверов. С помощью него, вы можете развернуть ВМ в облачных системах, таких как Amazon, Azure, Digital Ocean, да и на любых облаках, поддерживающих OpenStack API.
Принцип работы.
Допустим нам надо настроить несколько серверов Nginx, под управлением ОС Debian. Для того, чтобы осуществить нашу цель, необходимо описать, что мы хотим в специальном сценарии. Этот сценарий в Ansible называется playbook и его файл имеет суффикс yml. Для начала разделим общую задачу на подзадачи:
- Установить Nginx
- Сконфигурировать Nginx
- Установить сертификат безопасности
- Запустить Nginx
Первая задача - это установка пакета Nginx. В качестве целевой ОС мы выбрали Debian, поэтому использоваться для установки будет диспетчер пакетов apt. В сценарии данная задача будет выглядеть следующим образом (пока не будем вдаваться в подробности синтаксиса):
- name: install nginx
apt: name=nginx
Ansible, видя такую строку, проделает следующие действия:
- Создаст сценарий, используя язык программирования Python, который установит Nginx
- Скопирует этот сценарий на все нужные хосты
- Запустит его на каждом хосте
- Дождется пока сценарий выполнится на всех хостах
- Перейдет к следующей строке playbook'а и повторит все предыдущие шаги
Важно учитывать следующие особенности:
- Все задачи выполняются на всех хостах одновременно
- Ansible ждет, пока одна задача не завершится на всех хостах, только после этого переходит к осуществлению следующей
- Задачи устанавливаются в установленном порядке, так как вы описали их в playbook
Преимущества Ansible
Существует много систем управления конфигурациями. В чем же особенность выбора Ansible. Давайте рассмотрим основные его преимущества перед другими системами:
Простота синтаксиса.
Несмотря на то, что про Yaml ходят разные слухи, в целом это довольно таки простой язык сценариев. Тем болле он создавался специально для того, чтобы легко восприниматься человеком. Я, например, воспринимаю его, как файл справки, который описывает действия, которые необходимы для развертывания ПО. Легко прочитать и понять.
Отсутствие дополнительного ПО на настраиваемых хостах.
Для настройки хоста с помощью Ansible не надо ничего дополнительно устанавливать. Достаточно лишь того, чтобы на них присутствовала поддержка ssh и был установлен Python.
Принудительная настройка.
Ansible использует технологию принудительной настройки. Процесс внесения изменений выглядит следующим образом:
- Вы вносите изменения в сценарий
- Вы запускаете новый сценарий
- Ansible подключается к серверам и выполняет свою работу.
В отличии от других систем, таких как Puppet или Chef, в которых после внесения изменения сценария, необходимо ждать, когда агент на настраиваемом хосте сам придет к вашему сценарию и перечитает конфигурацию. После этого только новые настройки применятся. Таким образом, можно контролировать время обновления хостов.
Работа с небольшим количеством хостов.
Ansible прекрасно справляется с настройкой одного хоста так же прекрасно, как и с сотней или тысячей.
Встроенные модули.
Ansible имеет большую библиотеку модулей. Благодаря им, вы обладаете практически неограниченными возможностями при настройке сервера. Это и установка приложений, и перезапуск служб, и копирование или удаление файлов.
Идемпотентность.
Идемпотентность - это свойство объектов или операций к объекту при повторном применении давать один и тот же результат, что и при одинарном. Например, при выполнении примера выше, если ansible обнаружит установленный nginx, то ничего делать не будет. Если не обнаружит, то установит. В любом случае, результат будет одинаковым. На целевом хосте, после отработки playbook'а nginx будет присутствовать.
Заключение
В этой статье, познакомились с таким средством автоматизации, как Ansible. Рассмотрели основные преимущества этой системы и принципы ее работы. Далее подробнее узнаем как установить ее себе на ПК, и каким образом с ней работать. Подписывайтесь на мой каналы в VK, Telegramm или заходите на мой сайт roadit.ru, чтобы не пропустить выход новых статей. Давайте вместе пройдем в этот прекрасный мир под названием "It технологии"