Ansible
Теория: Ad-Hoc
Ansible – консольная утилита для настройки серверов и деплоя приложений. Если смотреть в целом, то она просто выполняет запросы на удаленных серверах, автоматизируя различные рутинные операции, например, установку и обновление пакетов, первоначальную подготовку машины для кода приложения и так далее.
У Ansible несколько режимов работы. Самый простой - ad-hoc, когда запрос к серверу выполняется напрямую из командной строки, без создания дополнительных файлов. Для выполнения такого запроса нам понадобится имя сервера или его ip-адрес. В примерах этого урока используется ip-адрес 157.230.82.133, в вашем случае это будет что-то свое. Кроме этого, сервер должен быть доступен для подключения по SSH суперпользователю (root).
После выполнения этой команды, Ansible покажет ответ от сервера:
В примере выше выполняется соединение с сервером по ssh, на котором запускается команда ping. За ее запуск отвечает одноименный модуль ping входящий в состав Ansible. Модули в Ansible выполняют команды на удаленных машинах. На протяжении следующих уроков мы познакомимся с десятком других самых часто используемых модулей для работы. Один из них называется command, он позволяет выполнить произвольную команду на сервере. Проверим с ее помощью сколько времени запущен сервер (время с последней перезагрузки), за это в Ubuntu отвечает команда uptime:
Модуль command в режиме Ad-Hoc подразумевается по умолчанию, то есть его можно пропустить:
Файл инвентаризации
Указание ip-адреса напрямую в командах Ansible — не очень удобный способ управления инфраструктурой. Во-первых, придется запомнить адрес и передавать его всем остальным членам команды. Во-вторых, серверов может быть больше одного. Чтобы не указывать адрес каждый раз, Ansible предлагает создать файл инвентаризации для описания инфраструктуры. В простейшем случае в этом файле указывается список ip адресов, по одному на строчку:
Сам файл имеет формат ini, но у него нет фиксированного имени. Для удобства назовем его inventory.ini. С этим файлом запуск Ansible в Ad-hoc режиме меняется на:
Ansible не просто выполняет команды на всех серверах, но и делает это одновременно. Ошибка выполнения команды на одном из серверов не останавливает выполнение. Ansible дойдет до конца и оповестит, о том где команда выполнилась успешно, а где нет.
Файл инвентаризации хранят в git-репозитории. Обычно прямо вместе с проектом. Если проект разделен на разные репозитории, то для управления инфраструктурой создают отдельный git-репозиторий, в котором работают администраторы и возможно разработчики. Здесь уже зависит от того, есть ли в компании культура DevOps.






