Was sind die Grenzen von Puppet im Vergleich zu Ansible?

16

Ich möchte die Unterschiede zwischen Puppet und Ansible verstehen, insbesondere die Art der Puppet-Einschränkungen im Vergleich zu Ansible.

Gibt es Dinge, die Sie in Puppet nicht tun können, aber in Ansible? Mit anderen Worten, warum ziehen einige Leute von Puppet zu Ansible?

Kenorb
quelle
Ich habe meine Antwort hiervon gut getrennt gehalten. Einer der Gründe könnte sein, dass all das Geld, das Redhat in sie investiert hat.
5.

Antworten:

19

Natürlich gibt es auch hier verschiedene Vor- und Nachteile für Puppet, Ansible, Chef und Ihr Lieblingswerkzeug . Also werde ich versuchen, mich von der Meinung fernzuhalten und zu teilen, was in Ansible eigentlich großartig ist.

Die Hauptfunktion, die Ansible über die anderen stellt, besteht darin, dass kein benutzerdefinierter / zusätzlicher Agent auf den Zielknoten ausgeführt werden muss, sondern nur auf SSH-Verbindungen basiert. Ja, es werden immer noch ein SSH-Server, Python und eine Reihe von Python-Bibliotheken auf den Knoten benötigt, und wenn Ihre Distribution (oder, zum Glück, es gibt einige Windows-Knoten) nicht mit ihnen ausgeliefert wird, wird es ein bisschen sein schmerzhaft zu bootstrap. Aber das ist unwahrscheinlich und bringt Sie vielleicht sogar dazu, noch einmal über Ihre Distribution nachzudenken.

Das vereinfacht die Überwachung, verbraucht keine zusätzlichen Ressourcen und zwingt das System nicht dazu, einen Daemon als Root auszuführen, und fühlt sich im Allgemeinen besser in der UNIX-Philosophie. Chefkoch hat chef-solo, Puppet kann ohne Master ausgeführt werden, aber beide arbeiten "in die andere Richtung", indem sie klonen bzw. über Hooks. Während bei Ansible eine Zusammenführung im Quell-Repository die Bereitstellung auf eine Weise auslösen kann, mit der wir alle vertraut sind, sei es in Jenkins, im Git-Master oder in einem anderen Tool wie beispielsweise Rundeck.

ᴳᵁᴵᴰᴼ
quelle
Erwähnenswert ist, dass das Push-Modell einen Nachteil hat, wenn Sie Ihre SSH-Konfiguration mit Ansible verwechselt haben und nicht mehr auf Ihrem Computer arbeiten. Marionette oder Chefkoch können an einem Crontab-Job arbeiten, so dass sie das System nicht mehr beeinträchtigen als den Python-Code überhaupt
Tensibai
1
Ein Hinweis zu Agenten: Ich wurde von einem Sicherheitsteam, das Chef und Puppet abgelehnt hatte, sogar in einer Konfiguration ohne Master für Ansible in einer HSE (Hochsicherheitsumgebung) zugelassen. Agentless ist in einigen Fällen ein Gewinnfaktor.
Woodland Hunter
2
Wenn Sie Ihr SSH-Setup unterbrechen, haben Sie auf jeden Fall Probleme jenseits von Ansible. Es ist eine gute DevOps-Praxis, SSH-Änderungen in verschiedenen Umgebungen zu testen, bevor sie in Produktion gehen, und es ist auch möglich, zu überprüfen, ob die SSH-Konfiguration beim Schreiben korrekt ist - das Ansible- templateModul macht dies recht einfach.
RichVel
Ich habe gehört, dass die Leute argumentierten, Ansibles agentenlose Architektur sei besser für die Verwaltung von z. B. Routern geeignet, auf denen beispielsweise kein Puppet-Agent installiert werden konnte. Aber kommen solche Geräte mit Python-Interpreten? Vielleicht auch nicht. Ist Python wirklich eine wichtige Voraussetzung für jede von Ansible verwaltete Komponente?
Drux
9

Nein, Menschen, die von Puppet zu Ansible (oder umgekehrt) wechseln, haben nichts damit zu tun, was mit beiden Werkzeugen erreicht werden kann oder nicht. Marionette / Koch / Ansible - das ist meistens Geschmackssache.

Ansible basiert beispielsweise auf Python, und Python-Entwickler fühlen sich in der Regel besser damit vertraut (DSL muss nicht erlernt werden) oder mit Ruby (für den Chef). Einfacher für Python-Entwickler, auch Ansible zu erweitern.

Aber im Grunde sind sie sich alle sehr ähnlich, was das angeht, was Sie erreichen können. Einige haben relative Stärken in einigen Bereichen und Schwächen in anderen Bereichen, aber in der Regel wird die Wahl zwischen ihnen durch Stil / Kultur / Vorlieben des Teams getroffen.

Assaf Lavie
quelle
7

Bis Puppet 4.0 gab es keine einfache Möglichkeit, Anwendungen, die auf mehrere Server oder Dienste verteilt waren, zu orchestrieren , da es schwierig war, Aktionen in Puppet zu bestellen, was eine Designentscheidung war . Ansible war besser darin, die Schritte zu orchestrieren und zu ordnen, insbesondere auf mehreren Servern. Dies war insbesondere bei Anwendungen von Bedeutung, bei denen die falsche Reihenfolge der Schritte dazu führen kann, dass Fehler durch Wiederholung dieser Schritte nicht mehr behoben werden können, bis eine endgültige Konsistenz erreicht ist.

Das ist kein Thema mehr und die Unterscheidungen sind weitgehend präferenzbasiert.

Jiri Klouda
quelle
2
Die Wahl des Puppendesigns war einer der Gründe, warum Chefkoch angefangen hat, und der Hauptgrund, warum ich vor einigen Jahren zu Chefkoch für unsere Infrastruktur und unser CD-System gewechselt bin.
Tensibai
2
Puppet Orchestration ist nur eine (kommerzielle) Funktion von Puppet Enterprise, während die Orchestration in Ansible in der Open-Source-Version ausgeführt wird. Generell ist Ansible viel einfacher zu installieren und zu erlernen als Puppet - nachdem ich beides evaluiert habe, benutze ich jetzt Ansible. Es gibt auch andere Unterschiede, es ist also nicht nur eine Frage der persönlichen Präferenz.
RichVel
1
Ich verwende Ansible sowohl in meinem früheren als auch in meinem aktuellen Job, aber es hat seine eigenen Probleme. Je öfter ich Ansible benutze, desto mehr bin ich daran interessiert, eine andere Alternative zu lernen. Ich bevorzuge diese Alternative, um Python nicht für die Modulentwicklung zu verwenden und eine aktive Open-Source-Community zu haben. Es dauert fast ein Jahr, bis die Pull-Anforderungen für Ansible überprüft wurden. Bei diesem Tempo könnte es auch proprietär sein.
Jiri Klouda
1
Viele Leute beschweren sich über den Marionettenagenten, aber wenn Sie sich in der Cloud befinden und Ihre Autoscaling-Gruppe nicht das Image Ihres VM wiederherstellen möchten, ist es gut, dass sich VM mit dem Marionettenmeister verbindet. Ich sehe kein Problem damit habe einen kleinen Agenten.
c4f4t0r