Каковы ограничения Puppet по сравнению с Ansible?

17

Я хотел бы понять разницу между Puppet и Ansible, особенно какие ограничения Puppet имеет по сравнению с Ansible.

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

kenorb
источник
Я держал свой ответ в стороне от этого, одной из причин может быть все деньги, которые redhat вкладывает в него.
ᴳᵁᴵᴰᴼ

Ответы:

20

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

Основная возможность, которая ставит Ansible над остальными, заключается в том, что нет необходимости полагаться на какой-либо настраиваемый / дополнительный агент, работающий на целевых узлах, а основываться только на ssh-соединениях. Да, для этого по-прежнему требуются ssh-сервер, Python и несколько библиотек Python на узлах, и если ваш дистрибутив (или, к счастью, есть несколько оконных узлов) не поставляется с ними, он будет немного больно до начальной загрузки. Но это маловероятно и может даже заставить вас снова подумать о своем дистрибутиве.

Это упростит мониторинг, не потребляет дополнительных ресурсов, не заставит систему все время запускать демона в качестве пользователя root и в целом будет лучше в философии UNIX. Шеф-повар chef-solo, Puppet может работать без хозяина, но они оба работают "в другом направлении", клонируя и используя крючки соответственно. Хотя с Ansible слияние в исходном репозитории может инициировать развертывание таким образом, который нам всем удобен, будь то в Jenkins, в git master или в каком-нибудь другом инструменте, например, Rundeck.

ᴳᵁᴵᴰᴼ
источник
Стоит отметить, что если вы испортили свою конфигурацию ssh с ansible, то вы заблокированы на своей машине, это недостаток push-модели. Puppet или chef могут работать над заданием crontab, поэтому они не будут влиять на систему больше, чем на код Python вообще
Tensibai
1
Примечание для агентов: я был одобрен для работы с Ansible в HSE (среда с высокой степенью безопасности) группой безопасности, которая отказалась от Chef и Puppet, даже в конфигурации без хозяина. Безагентный является выигрышным фактором в некоторых случаях.
Лесной Охотник
2
Если вы нарушите настройку SSH, у вас возникнут проблемы за пределами Ansible в любом случае. Хорошей практикой DevOps является тестирование таких вещей, как изменения SSH в различных средах, до того, как они попадут в производство, а также можно проверить правильность конфигурации SSH в процессе ее написания - templateмодуль Ansible делает это довольно легко.
RichVel
Я слышал, что люди утверждали, что безагентная архитектура Ansible делает ее более подходящей для управления, например, маршрутизаторами, где, например, вы не можете установить агент Puppet. Но такие устройства поставляются с интерпретаторами Python? Возможно, нет, так действительно ли Python является строгим требованием для каждого компонента, управляемого Ansible?
Друкс
10

Нет, люди, переезжающие из Puppet в Ansible (или наоборот), не имеют ничего общего с тем, что может или не может быть достигнуто с помощью любого инструмента. Кукольный / Шеф-повар / Ansible - это в основном дело вкуса.

Например, Ansible основан на Python, и разработчики Python обычно чувствуют себя с ним как дома (не нужно изучать DSL) или Ruby (для Chef)). Разработчикам Python проще расширять Ansible.

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

Ассаф Лави
источник
8

До Puppet 4.0 не было простого способа организации приложений, распределенных по нескольким серверам или сервисам, поскольку было сложно специально упорядочить действия в Puppet, который был выбором дизайна . Ansible лучше организовывал и упорядочивал шаги, особенно на нескольких серверах. Это было особенно важно в приложениях, где неправильный порядок шагов может привести к ошибкам, которые невозможно исправить путем повторения этих шагов, пока не будет достигнута согласованность.

Это больше не проблема, и поэтому различия в значительной степени основаны на предпочтениях.

Иржи Клауда
источник
2
Выбор дизайна кукол был одной из причин, по которой Chef начал, и главным, что я сделал, перешел к Chef для нашей инфраструктуры и системы CD несколько лет назад.
Тенсибай
2
Оркестровка Puppet - это только коммерческая функция Puppet Enterprise, тогда как оркестровка в Ansible представлена ​​в версии с открытым исходным кодом. Как правило, Ansible намного проще в установке и изучении, чем Puppet - после некоторой оценки обоих я сейчас использую Ansible. Есть и другие различия, так что это не просто вопрос личных предпочтений.
RichVel
1
Я использую Ansible как на своей прежней, так и на нынешней работе, но у нее есть свои проблемы. Чем больше я использую Ansible, тем больше я заинтересован в изучении другой альтернативы. Я бы предпочел эту альтернативу не использовать Python для разработки модулей и иметь активное жизненно важное сообщество с открытым исходным кодом. Из запросов на извлечение Ansible уходит почти год, чтобы их пересмотреть. В таком случае, это может быть так же и проприетарным.
Иржи Клауда
1
Многие люди жалуются на агента Puppet, но когда вы находитесь в облаке и вы автоматически масштабируете группу, и вы не хотите перестраивать образ вашего VM, хорошо, что VM подключается к мастеру Puppet, я не вижу никаких проблем с есть маленький агент.
c4f4t0r