Как я устанавливал Ansible Tower и был в печали

26 января 2015

Ansible — это средство управления конфигурациями, аналогичное Chef, Puppet и Salt. Если вам нужно раскатывать deb-пакеты и конфиги по множеству машин в разных окружениях (всякие dev, stage, prod), то следует серьезно задуматься об использовании одного из этих средств. Сам по себе Ansible представляет собой CLI. Ansible Tower — это веб-интерфейс для Ansible. CLI можно использовать бесплатно, веб-морда стоит 99$ в месяц.

Недавно я решил попробовать Anible Tower. Данная заметка расскажет вам, что же из этого вышло.

Следует принять во внимание, что Ansible и Ansible Tower тянут за собой много разных зависимостей. Чтобы не засорять систему, я бы советовал держать все это хозяйство внутри какого-нибудь Vagrant. При этом Ansible Tower довольно требователен к памяти. Чтобы при работе с ним не получить кучу мистических ошибок, советую сразу выделить хотя бы 2 Гб памяти.

Для начала нам потребуется установить сам Ansible:

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

В теории, дальше можно ставить Ansible Tower, но у меня он не смог своими силами подтянуть и настроить PostgreSQL. Соответствующая ошибка:

failed: [127.0.0.1] => {"failed": true}
msg: Destination directory /etc/postgresql/9.3/main does not exist

FATAL: all hosts have already failed -- aborting

Поэтому сначала нам придется установить СУБД по данной инструкции. Впрочем, по ней PostgreSQL встает тоже со скрипом. Чтобы все завелось, мне пришлось дополнительно сказать:

sudo pg_createcluster 9.3 main --start

Вот теперь качаем Ansible Tower, распаковываем, правим файл group_vars/all. В нем нужно поменять четыре пароля — от PostgreSQL, Munin, RabbitMQ и собственно пароль от Tower. Справиться с задачей вам поможет pwgen. Теперь говорим:

./setup.sh

Tower по умолчанию слушает порт 80 на всех интерфейсах. Входим с логином admin и паролем что указали в group_vars/all. После логина Tower запросит license key. Там будет ссылка на получение free trial. Письмо приходит быстро.

Если все было сделано правильно, то теперь вы можете приступить к настройке Inventory / Project / Credential / Job Template. Все это не сложно и в деталях описано в Ansible Tower User Guide.

Примите во внимание, что хотя в Tower и есть галочки «ходить на сервер под обычным юзером, а потом говорить sudo», это не работает. Лично у меня все получилось только с юзером root. Если не ошибаюсь, на шаге Gathering Facts глупенький Tower игнорирует настройки Credential и все равно ломится на сервера, как root. В итоге получаем Authentication Failure. А еще для каких-то настроек все равно приходится заходить на машину с Tower по ssh и править yaml-файлы в vim’е. Наконец, меня очень расстроил сапорт, который не откликнулся, когда я столкнулся с проблемами при установке Tower. И что намного хуже, переписка с сапортом не индексируется поисковыми системами, поэтому о возникающих проблемах и путях их решения потенциальные клиенты вынуждены узнавать из постов вроде этого.

В общем и целом, на момент написания этих строк Ansible Tower произвел на меня впечатление исключительно сырого глюкавого продукта с негодной поддержкой. Денег, которые за него хотят, Ansible Tower совершенно точно не стоит. Поэтому я бы советовал либо работать с Ansible из консоли, либо, если вам обязательно нужен Web UI, присмотреться к альтернативным решениям, например, Chef.

А какие средства управления конфигурациями вы используете и каковы ваши впечатления от них?

Дополнение: Появился открытый проект, основанный на Ansible Tower, под названием AWX. Подробности можно найти на ansible.com, а также в тексте соответствующей новости на linux.org.ru.

Метки: .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.