Was ist der Unterschied zwischen Juju und Puppet / Chef?

80

Habe versucht, Dritte nach den wichtigsten Unterschieden zwischen Juju und Puppet / Chef zu fragen . Dritte sind mit Juju nicht allzu vertraut und können es nicht sagen. Sie gaben einfach an, dass die anderen viel Schwung haben und es schwierig wäre, ihren Vorsprung zu überwinden.

Wären diejenigen, die Juju am nächsten stehen, bereit, die Vorteile dieser Software hervorzuheben, und warum wird sie Puppet / Chef in der Konfigurationsverwaltung überholen?

Kennzeichen
quelle

Antworten:

48

Mark, das ist eine großartige Frage, und das war die erste, die ich gefragt habe, als mir jemand von Juju erzählt hat. Hier sind einige der großen Unterschiede.

  • Juju kapselt Services - Ein Charm definiert alle Möglichkeiten, die der Service benötigt, um Konfigurationsdaten für andere Services bereitzustellen oder von diesen zu nutzen. Wie ein Zauber das macht, ist Sache des Zaubers. Es kann jedes Werkzeug von Shell-Skripten bis hin zu Chef im Solo-Modus verwenden, um dies zu tun.

  • Juju orchestriert die Bereitstellung - Juju verfolgt die verfügbaren Ressourcen und kann sie nach Bedarf hinzufügen oder entfernen. Derzeit handelt es sich bei diesen Ressourcen um AWS EC2-Computer, OpenStack-Clouds (wie HP Cloud), Microsoft Azure, Joyent, Bare-Metal-Computer über MAAS und einen lokalen LXC / KVM-Anbieter.

  • Juju macht das Teilen einfach - jeder kann einen Charme zum Juju Charm Store beisteuern ; Diese Reize werden von der Juju-Community überprüft und begutachtet.

Hier sind einige andere Vergleiche, die Menschen im Internet angestellt haben:

SpamapS
quelle
1
Puppet beschäftigt sich auch mit der Beschreibung von Ressourcen, der Bereitstellung von VMs und dem Teilen von Modulen . Können Sie erklären, wie Juju es anders oder besser macht oder ein anderes Problem löst?
Poolie
Zum Zeitpunkt dieser Antwort war Puppet Cloud Provisioner nicht bekannt. Puppet-Module wurden bei der letzten Überprüfung nicht mit einem Namensabstand versehen und weisen daher Freigabeprobleme auf, bei denen ein Benutzer möglicherweise den Code eines Puppet-Moduls ändern muss, um ihn verwenden zu können.
SpamapS
In Puppet gibt es Namensräume . Ich habe Puppet nicht viel benutzt, aber ich verstehe, dass Probleme meistens auftreten, wenn zwei Module tatsächlich versuchen, dieselbe logische Sache zu verwalten. Hat Juju eine systematische Möglichkeit, dies zu verhindern?
Poolie
Die Namespaces in Puppet wurden kürzlich geändert, um die gemeinsame Nutzung eines funktionierenden eigenständigen Puppet-Moduls zu vereinfachen. In der Vergangenheit benötigte man das Äquivalent globaler Variablen, um zwischen zwei Modulen zu kommunizieren. Juju befasst sich in keiner Weise mit der Konfiguration der Instanz, sondern dient lediglich als Moderator für die Orchestrierung. Nein, es wird nicht verhindern, dass sich zwei Reize um eine einzelne Datei streiten.
SpamapS
1
Hallo @SpamapS, Dies betrifft Ihren zweiten Punkt (auch bekannt als Juju Orchestrates Provisioning). In puppet können wir Beziehungen mit "require", "notify" usw. definieren. Können wir diese Konstrukte nicht einfach zur Orchestrierungsbereitstellung verwenden? Oder bietet Juju eine andere Ebene der Orchestrierungssemantik?
Denis Weerasiri
33

(Haftungsausschluss - Ich bin der Gründer von Puppet und CEO von Puppet Labs)

Ich kenne Juju nicht sonderlich gut, aber soweit ich das beurteilen kann, sitzen sie auf verschiedenen Ebenen. Puppet beherrscht das Verhalten und die Fähigkeiten von Maschinen selbst hervorragend, während juju sich in erster Linie mit Maschinensätzen befasst und weitgehend darüber entscheidet, wie sich die Maschinen gegenüber externen Tools wie Puppet oder Shell-Skripten auf eine bestimmte Weise verhalten.

Unsere Strategie mit Puppet ist es, den besten Stapel von Grund auf zu bauen, während Juju eine bestimmte Schicht des Stapels zu sein scheint und andere Schichten anderen Werkzeugen überlassen. Während Sie also das gesamte Problem mit Puppet lösen können (wenn auch manchmal mit etwas mehr Arbeit, als Sie vielleicht möchten), müssen Sie Juju in andere Tools integrieren, um vieles zu erledigen.

In Wirklichkeit scheint juju eine On-Premise-Version von CloudFormation von Amazon zu sein, allerdings ohne Grafik und so weiter. Also mit Puppet etc. verwendbar, aber kein Ersatz dafür.

Luke Kanies
quelle
6
Ich bin mir nicht sicher, ob punting hier das richtige Wort ist. Das ist, als würde man sagen, dass Pakete punt sind, wenn man die Software unter autotools / scons / setup.py erstellt. Wenn Pakete versuchen würden, jeden Schritt jedes Builds auszuführen, hätten wir keine Pakete!
SpamapS
9

Hier ist eine andere Ansicht, wie Juju mit anderen Automatisierungswerkzeugen zusammenpasst:

Ich bin verantwortlich für die Cloud-Strategie bei Canonical, dem Unternehmen hinter Ubuntu und Juju. Juju ist kein Konkurrent von Puppet oder Chef. Juju kann Puppet oder Chef installieren und innerhalb eines Charms, Jujus Verkapselung eines Dienstes, können Sie Ihre vorhandenen Puppet-Module oder Chef-Belege aufrufen.

Also, was ist Juju? Mit Juju können Sie Ihren IT-Stack / Ihre Dienste / Anwendungen sofort bereitstellen, integrieren und skalieren. Sofortige IT-Gewinne ohne die Schmerzen. Entweder über die Kommandozeile oder die GUI.

Daher ist Juju dem PaaS-Tool näher als dem Devops-Tool, da Sie Ihre Cloud erstellen können (Juju ist das Standard-OpenStack-Installationsprogramm von Canonical) und die Infrastruktur, die darauf aufbaut (Web- / App- / DB-Server, Hadoop, MongoDB usw.) Bemerkenswerterweise ermöglicht Juju die Bereitstellung und sofortige Integration von Anwendungen (durch Hinzufügen einer Beziehung zwischen Wordpress und MySQL werden Wordpress-Tabellen und -Daten automatisch in MySQL erstellt).

Auch App-Server (Java, PHP, Node.js, Scala usw.) können mit der Versionskontrolle zusammenarbeiten, sodass eine automatische Bereitstellung und Skalierung Ihrer Apps möglich ist. Im Gegensatz zu PaaS sind Sie also nicht auf einen bestimmten Software-Stack beschränkt, sondern profitieren von den Vorteilen der sofortigen Bereitstellung, Integration und Skalierung. Stellen Sie sich ein flexibles PaaS oder FlexiPaaS vor, mit dem Sie Ihre Softwaredienste sofort implementieren, integrieren und skalieren können, ohne dass Einschränkungen oder Einschränkungen auftreten.

Quelle - Warnung: Anmeldung erforderlich.

Jorge Castro
quelle
3

Im einfachsten Sinne kapselt juju die Serviceerkennung, einen Schlüsselwertspeicher und das Konfigurationsmanagement. Puppet / Chef etc. sind reine Konfigurationsverwaltung.

Juju ist ereignisbasiert und verwendet einen zentralen "Bootstrap-Knoten", um Ereignisse zu verfolgen und zu orchestrieren. Marionette und Chefkoch können so eingestellt werden, dass sie ereignisbasiert erscheinen. In der Regel wird der entsprechende Job jedoch nur nach einem Zeitplan ausgeführt.

Afaik, Sie können juju nicht in einem verteilten oder agentenlosen Zustand ausführen, und dies ist mit den meisten Konfigurationsverwaltungssystemen möglich.

Zum größten Teil sind Puppentheater usw. domänenspezifische Sprachen, während Juju ein System ist, keine Sprache.

J0hnG4lt
quelle