Marionette und Hafenarbeiter können viele der gleichen Dinge tun, aber sie nähern sich ihnen auf unterschiedliche Weise.
Puppet verwaltet Dateien + Pakete + Dienste. (Trifecta genannt). Docker kapselt Binärdateien und Konfigurationsdateien in einem Container.
Zum Zeitpunkt dieses Schreibens ist Docker noch instabil und sollte nicht in der Produktion verwendet werden. Viele der APIs werden wahrscheinlich bis zur Veröffentlichung von Version 1.0 geändert.
Selbst wenn Docker stabil wird, wird es ein großes Unterfangen sein, jeden Prozess und jede Konfigurationsdatei in Docker-Container zu konvertieren.
Puppet hingegen ist ein stabiles Produkt und verfügt über ein ganzes Ökosystem an Werkzeugen (Erbe, Kollektiv, Charakter, Rasiermesser). Diese Tools können schnell und ohne Probleme implementiert werden.
Ich kann die folgenden Ressourcen nur empfehlen.
Ein Video zum Verwalten von Anwendungsstapeln mit Puppet
https://www.youtube.com/watch?v=KSo_mcJxFIA
Ein Podcast darüber, wie Hafenarbeiter und Marionette zusammenarbeiten können
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html
Ein Puppet-Blog-Artikel zur Integration in Docker
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker
Ein weiterer Blog-Artikel zu Puppet und Docker existiert nebeneinander
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist
Ein Marionettenmodul für die Interaktion mit Docker
http://docs.docker.io/use/puppet/
Eine kleine Korrektur der Devop-Terminologie. Devops ist eher eine Softwareentwicklungsmethode bei der Entwickler und Betriebe zusammenarbeiten, als ein bestimmtes Tool.
Aktualisieren
Derzeit verwendet meine Firma sowohl Puppen- als auch Hafenarbeiter. Hier ist eine großartige Präsentation auf der Puppet Conf 2014 darüber, warum Sie Puppet vs Docker verwenden würden. Gegeben von James Turnbull, einem ehemaligen Arbeitgeber von Puppetlabs und Autor des Hafenbuchs.
https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter
Auch ein gutes kurzes Video-Tutorial zu Docker von sysadmincasts.com
https://sysadmincasts.com/episodes/31-introduction-to-docker
Docker-Profis:
- Kann Instanz schnell drehen
- Einfacher zu lernen als Puppe
- Einfache Ausführung von 0 Ausfallzeiten
Docker Nachteile:
- Container haben ein Limit von 10 GB, wenn Sie das Backend von devicemapper verwenden
- Kleine Konfigurationsänderungen benötigen viel Zeit, um den Container wiederherzustellen
- Die Verwendung einer Docker-Registrierung wie hub.docker.com, quay.io kostet Geld. (Die selbst gehostete Docker-Registrierung ist äußerst fehlerhaft und hat keine GUI.)
- Kein richtiges Init-System. Einige Anwendungen spielen nicht gut.
- Keine feinkörnige Kontrolle über das Netzwerk
- Anwendungen, für die Subshells erforderlich sind (RVM + Ruby), sind sehr schwierig, um ordnungsgemäß zu funktionieren
- Windows-Hosts, SLES oder andere weniger beliebte Betriebssysteme können nicht verwaltet werden
- Derzeit ist Docker Orchestration sehr jung.
- Zur Zeit kann die Datei /etc/resolv.conf nicht zur Erstellungszeit gesetzt werden
- Verschiedene Fehler, die wir in / etc / localtime und / dev / urandom mounten müssen, um sie den Verzeichnissen localtime und urandom des Hosts zuzuordnen.
- Die Leistung ist nicht so schnell (trotz aller Behauptungen, dass Docker 99% der Geschwindigkeit von Bare-Metal-Geräten erreichen sollte, ist sie manchmal 30% langsamer als andere Geräte).
- Kleine Container haben immer noch einen Overhead von Hunderten von Megabyte. Unsere Container haben alle mehrere Gigabyte.
Marionetten-Profis:
- Einfach zu skalieren
- Funktioniert mit vorhandenen Servern (Windows, Linux, Sles)
- Schnell kleine Änderungen vornehmen
- Starke Community von anderen Puppenspielern und Modulen
- Standardisierte API zur Installation von Paketen auf allen Plattformen
Marionette Nachteile:
- Große Infrastrukturen werden sehr komplex
- Bedingte Modulabhängigkeiten erzeugen Spagetti-Code
- Mehr schweres Gewicht
Derzeit verwenden wir Puppet, um unsere Docker-Container bereitzustellen. Die Docker-Container werden für Jenkins-Builds verwendet und nach jedem Build zerstört. Es funktioniert gut und gibt uns eine konsistente Umgebung. Das bedeutet, dass wir den Code nur einmal schreiben und dann Ubuntu-, Sles- und Centos-Maschinen neu erstellen müssen. Der Wiederaufbau der Container dauert ca. 15 bis 30 Minuten und ist immer noch ein manueller Vorgang. Docker ist ideal für schnelle Test-VMs,
Kurz gesagt, Puppet eignet sich hervorragend für die Verwaltung Ihrer vorhandenen Infrastruktur. Docker ist gut, wenn Sie eine 100% ige Linux-Greenfield-Umgebung mit einem Technologie-Stack haben, der in kleinen kurzlebigen Instanzen eingeschlossen werden kann. Während sich einige der Funktionen überschneiden, schließen sie sich nicht gegenseitig aus.
Docker unterstützt Sie bei der Bereitstellung und Erstkonfiguration von Containern, führt jedoch bei der Initialisierung des Containers einmalige Befehle aus.
Puppet ist am stärksten, wenn Sie es als Daemon ausführen. Es stellt sicher, dass Ihre Konfiguration so bleibt, wie Sie es angegeben haben. Wenn Ihr Dienst beispielsweise nicht mehr ausgeführt wird, wird er erneut gestartet.
Eines der besten Dinge an (korrekt entworfenen) Manifesten der Puppenkonfiguration ist, dass sie idempotent sind ; Es soll den Zustand beschreiben, in dem Sie sein möchten, und nicht unbedingt die Schritte, um dorthin zu gelangen.
Außerdem können Sie Konfigurationen abstrahieren und parametrisieren und auf einem Server oder Container erstellte Parameter exportieren und in einem anderen verwenden (z. B. eine Liste von Knotenhostnamen für eine Überwachungsanwendung erfassen).
Ich würde sagen, dass sie definitiv verschiedenen, aber verwandten Zwecken dienen. Ich versuche derzeit, vorhandene Puppet-Manifeste zu verwenden, um Container so zu konfigurieren, dass Entwicklungsumgebungen eher wie Produktionsumgebungen aussehen.
quelle