В чем разница между Juju и Puppet / Chef?

80

Попытка спросить третье лицо о ключевых различиях между Juju и Puppet / Chef. Третьи лица не слишком знакомы с Джуджу и не могли сказать. Они просто заявили, что другие имеют большой импульс, и было бы трудно преодолеть их лидерство.

Будут ли те, кто ближе к Джуджу, захотят рассказать о преимуществах этого программного обеспечения и почему оно превзойдет Puppet / Chef на арене управления конфигурациями?

отметка
источник

Ответы:

48

Марк, это отличный вопрос, и я спросил его первым, когда кто-то рассказал мне о Джуджу. Вот некоторые из больших отличий.

  • Juju инкапсулирует сервисы - очарование определяет все способы, которыми сервис должен предоставлять или использовать данные конфигурации для других сервисов. То, как шарм делает это, является делом очарования. Для этого он может использовать любой инструмент от сценариев оболочки до Chef в одиночном режиме.

  • Juju организует предоставление ресурсов - juju отслеживает доступные ему ресурсы и может добавлять или удалять их по мере необходимости. В настоящее время этими ресурсами являются машины AWS EC2, облака OpenStack (например, HP Cloud), Microsoft Azure, Joyent, машины с открытым исходным кодом через MAAS и локальный поставщик LXC / KVM.

  • Juju делает обмен легким делом - любой может внести очарование в магазин Juju Charm ; эти чары проверены и проверены сообществом дзюдзю.

Вот некоторые другие сравнения, сделанные людьми по всему Интернету:

SpamapS
источник
1
Puppet также занимается описанием ресурсов, предоставлением виртуальных машин и совместным использованием модулей . Можете ли вы объяснить, как Juju делает это по-другому или лучше, или решает другую проблему?
пул
На момент получения ответа не знал о поставщике марионеточных облаков. Кукольные модули не были разделены именами в последний раз, когда я проверял, и, таким образом, возникают проблемы с совместным использованием, которые могут потребовать от пользователя изменения кода кукольного модуля, чтобы использовать его.
SpamapS
В марионетке есть пространства имен . Я не очень много использовал Puppet, но, насколько я понимаю, проблемы в основном возникают, когда два модуля пытаются управлять одной и той же логической вещью. Есть ли у Juju какой-то систематический способ предотвратить это?
пул
Пространства имен в Puppet претерпели последние изменения, чтобы упростить совместное использование рабочего автономного модуля Puppet. В прошлом требовался эквивалент глобальных переменных для связи между двумя модулями. Juju никоим образом не имеет отношения к конфигурации экземпляра, это просто посредник для оркестровки, так что нет, он не предотвратит сражение двух чар в одном файле.
SpamapS
1
Привет @SpamapS, Это касается вашего второго пункта (он же Juju оркеструет обеспечение). В кукольном коде мы можем определить отношения, используя «require», «notify» и т. Д. Разве мы не можем просто использовать эти конструкции для обеспечения оркестровки? Или Juju обеспечивает другой уровень семантики оркестровки?
Денис Веерасири
33

(Отказ от ответственности - я основатель Puppet и генеральный директор Puppet Labs)

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

Наша стратегия с Puppet состоит в том, чтобы создать лучший стек с нуля, тогда как дзюю, кажется, является особым слоем стека и оставляет другие слои другим инструментам. Таким образом, несмотря на то, что вы можете решить всю проблему с Puppet (хотя иногда с немного большим объемом работы, чем вам хотелось бы), вам нужно будет интегрировать juju с другими инструментами, чтобы сделать многое.

Действительно, juju выглядит как локальная версия CloudFormation от Amazon, хотя без графика и тому подобного. Таким образом, можно использовать с Puppet и т. Д., Но не заменить его.

Люк Канс
источник
6
Не уверен, что здесь правильно выбрано слово «punting»… это как сказать, что пакеты «собирают» программное обеспечение для autotools / scons / setup.py. Если бы пакеты пытались выполнить каждый шаг каждой сборки, у нас не было бы пакетов!
SpamapS
9

Вот еще один пример того, как Juju подходит к другим инструментам автоматизации:

Я отвечаю за облачную стратегию в Canonical, компании, стоящей за Ubuntu и Juju. Джуджу не конкурент Puppet или Chef. Juju может установить Puppet или Chef, а внутри Charm, инкапсуляции службы Juju, вы можете вызвать существующие модули Puppet или квитанции Chef.

Так что же такое Джуджу? Juju позволяет мгновенно развертывать, интегрировать и масштабировать свой стек / услуги / приложения. Мгновенные ИТ-выгоды без усилий. Либо через командную строку или графический интерфейс.

Таким образом, Juju ближе к PaaS, чем к инструменту Devops, поскольку вы можете создать свое облако (Juju - установщик OpenStack по умолчанию от Canonical), инфраструктуру, которая идет поверх него (серверы web / app / db, Hadoop, MongoDB и т. Д.), Но большинство Примечательно, что Juju позволяет развертывать приложения и сразу же интегрировать их (связь между Wordpress и MySQL автоматически установит таблицы и данные Wordpress внутри MySQL).

Также серверы приложений (java, php, node.js, scala и т. Д.) Могут работать вместе с контролем версий, поэтому возможно автоматическое развертывание и масштабирование ваших приложений. Таким образом, в отличие от PaaS, вы не ограничены конкретным программным стеком, но все же получаете преимущества мгновенного развертывания, интеграции и масштабирования. Думайте об этом как о гибком PaaS или FlexiPaaS, который мгновенно развертывает, интегрирует и масштабирует ваши программные сервисы, не будучи ограниченным или заблокированным.

Источник - Предупреждение: требуется авторизация.

Хорхе Кастро
источник
3

Проще говоря, juju инкапсулирует обнаружение сервисов, хранилище ключей и управление конфигурацией. Puppet / chef и т. Д. - чистое управление конфигурацией.

Juju основан на событиях и использует центральный «узел начальной загрузки» для отслеживания и организации событий. Кукол и шеф-повара можно сделать так, чтобы они появлялись на основе событий, однако обычно они просто запускают соответствующую работу по расписанию.

Afaik, вы не можете запустить juju в распределенном или безагентном состоянии, и это возможно в большинстве систем управления конфигурацией.

По большей части марионетка и т. Д. Являются языками, специфичными для предметной области, тогда как дзюю - это система, а не язык.

J0hnG4lt
источник