понедельник, 24 февраля 2014 г.

Внедряем Ansible.

Ansible - простая в использовании система управления конфигурациями серверов. Я тестировал pupet и chef, но в моих условиях (управление рабочими станциями) их использование превращалось в ад. Некоторое время назад искал систему с работой через ssh, но нашел только какую-то монструозную немецкую поделку, полностью на php и с интерфейсом из детсада. К тому же с нетривиальной установкой и настройкой. И вот недавно попалась статья на Хабре http://habrahabr.ru/post/211306/
Проникшись, я снес так и незаработавший паппет и установил героя - Ansible.
Как обычно я не буду тщательно расписывать установку и настройку, в сети уже полно манов на русском, да и официальная документация подробнейшая, правда уже на английском.
Остановлюсь на граблях, с которыми столкнулся:
1) Работа с шеллом удаленной системы.
Возможно я не очень хорошо знаю apt или yum, но если у вас имеются какие-то вопросы с установленным ПО, вы долго будете соображать - почему не фурычит Ansible? В частности, у меня в убунте был добавлен ППА wine, но не был скопирован сертификат репозитория. Соответсвенно, несмотря на ключ -y в apt все равно выскакивал запрос на обновление пакетов из этого репозитория. Ansible при этом просто ждет окончания установки до бесконечности. Аналогичная проблемам была с каким-то запросом насчет установки нового grub.
Так что если Ansible долго не возвращает ответ - идите на клиентскую систему.

2) Список хостов.
В документации черным побелому написано:
Edit (or create) /etc/ansible/hosts and put one or more remote systems in it, for which you have your SSH key in authorized_keys:
Это означает, что прежде чем приступать к управлению через Ansible, нужно каким-то образом получить запись о клиенте в файл authorized_keys. Я просто логинился к лиенту по ssh руками.
Может кто подскажет, каким образом создать эти записи обо всех хостах в сети автоматически?

3) Авторизация на хостах происходит либо по rsa ключу (долго и муторно рассылаем его по клиентам), либо с запросом пароля (раскоментировать опцию ask_pass      = True
 в файле /etc/ansible/ansible.cfg, если вы работаете под рутом) или прописать в инвентарном файле опции подключения (192.168.0.36 ansible_ssh_user=root ansible_ssh_pass=пароль_рута в файле /etc/ansible/hosts, например).

Пока все. Если найду что-нибудь интересненькое - сообщу в комментах либо отдельным постом.
А вообще Ansible просто чудо! Я в нее влюбился, особенно после puppet.