Ansible -- беглый обзор

Бегло прошелся по докам к Ansible. Попробую сравнить с Chef и Puppet, с которыми у меня есть хороший опыт работы.

Интересная штука, но своеобразная.

Простые случаи использования

Для случаев, когда нужно установить пару пакетов, разложить несколько конфигов по местам.

  • проще чем Puppet
  • вместо ресурсов скорее правильнее говорить об операциях или командах (но при этом декларативных)
  • модули на все случаи жизни из коробки
  • не требует инсталляции на настраиваемый сервер ничего кроме Python (а он и так почти всегда есть)
  • нет серверной части (в том же понимании, как у Chef/Puppet)
  • управляющая (клиентская) часть ставится легко и почти ничего не вытягивает
  • работает по SSH
  • можно выполнить отдельную операцию с командной строки точно так же как из плейбука (аналога манифеста Puppet и кукбука Chef)
  • нет поллинга (запускается только вручную)

Это наталкивает на мысль, что его очень удобно использовать для первоначального разворачивания серверов по сравнению с Chef/Puppet. Или для какого-нибудь начала управления кучей ручных разнородных серверов, что почти то же самое.

Пожалуй, я бы для бутстрапа (без далеких планов) рекомендовал бы теперь его.

Сложные случаи использования

Для случаев, когда нужно поддерживать архитектуру с многими ролями, да еще и завязанных друг на друга.

  • ограниченный язык (похож в этом на Puppet) — сложную логику писать скорее всего непросто
  • но модули дописывать легче, и чем на Chef и тем более чем на Puppet — можно писать на любом языке, разговаривают с сервером по STDIN/STDOUT. Для Python есть библиотеки, упрощающие дело.
  • шаблоны на Jinja2 вместо ERB, что в чем-то добавляет гибкости (т.е. легко расширять, например добавить хелперов), а в чем-то уменьшает (нельзя код в шаблонах писать)
  • мне показалось, что и плагины (логирование, пост-хуки и т.п.) писать также проще чем в Puppet/Chef
  • операции выполняются сверху вниз как в Chef (а не по зависимостям как в Puppet)
  • оповещения мне показались более ограниченными по сравнению с Chef и Puppet (но ограниченными правильно) — “обычные” операции идут отдельным списком от тех, куда шлются оповещения
  • инвентарем управлять, похоже, проще чем в Chef и Puppet, можно его хранить в VCS
  • нет центрального хранилища фактов
  • нет автоматической поддержки разных OS. Т.е. вместо, например package из Chef, Puppet у нас есть apt и yum.
  • весь гемор с сертификатами клиентов теперь заменяется просто использованием соответствующего SSH-ключа
  • вместо SSH можно отдельной командой запустить супер-быстрый шифрованный канал, чтобы команды выполнялись мгновенно (привет SaltStack)
  • при желании можно вместо этого достаточно несложно дописать транспорт, скажем, через ActiveMQ/XMPP или что-то еще
  • в целом он мне показался намного более Unix-way

Что это значит?

  • Насколько просто писать сложные конфигурации — хз, нужно пробовать.
  • Пологая кривая обучения, легко, скорее всего перейти от скриптов деплоя к управлению инфраструктурой, но где-то в середине похоже крутая горка, которую многие не преодолеют (в Puppet эта горка еще круче, и за ней никакого плато уже нет), дальше снова пологая кривая.
  • Puppet использовать смысла теперь не вижу абсолютно никакого. Раньше не исключал его использование для маленьких простых случаев.
  • Серверную часть для сложных конфигураций придется собирать самим, но зато она получится какая нам нужна, и скорее всего она окажется достаточно простая (типа пары заданий в кроне и нескольких скриптов обертки). Сравни с Chef Server, который тянет RabbitMQ, CouchDB, Solr и еще какую-то кучку всего, или с Puppet, для которого серверные компоненты (базы, hiera, дашборд и т.п.) подгонять друг под друга приходится день-другой-третий.
  • Если у нас зоопарк разношерстных систем (видел такой наверное только полраза, даже меньше), наверное будет управляться не очень просто.
  • Т.к. система объединяет Orchestration с Configuration management можно ее использовать и например для деплоя, или поддержки всего жизненного цикла серверов, начиная от создания контейнера и заканчивая его удалением, причем, все это заворачивать в плейбуки. Сравни с Knife шефа или Puppet faces, которые добавляют конечно удобства, но не очень то и нужны как таковые.

Нужно будет еще когда-нибудь SaltStack и Pallet посмотреть для общего развития.

Comments