Chef gegen Puppe
Puppet und Chef haben sich beide erheblich weiterentwickelt - es genügt zu sagen, dass es längst überfällig ist, diese beiden Schwergewichte wieder aufzugreifen. In diesem Artikel werfen wir einen neuen Blick auf ihre Kernkomponenten sowie auf neue Ökosystem-Tools und Integrationen, die sie weiterhin als führende IT-Automatisierungsplattformen für Unternehmen positionieren.
Einige frühere Unterscheidungsmerkmale - wie der jeweilige deklarative/prozedurale Ansatz jeder Plattform und die zugrunde liegende Programmiersprache - wurden bis zum Überdruss diskutiert. Und da beide Lösungen immer leistungsfähiger und komplexer werden, sind diese Unterschiede in der Tat weniger relevant. Für die Zwecke dieses Vergleichs konzentrieren wir uns stattdessen darauf, wie gut sie die IT- und Continuous-Delivery-Herausforderungen lösen, mit denen Unternehmen heute konfrontiert sind.
Chefkoch
Die bloße Bezeichnung eines Tools als DevOps-Lösung macht es nicht zu einer solchen. Es muss die aktuellen IT-Herausforderungen beim Aufbau/Management von Hochgeschwindigkeitsorganisationen angehen und gleichzeitig die ständige Verbesserung und Zusammenarbeit zwischen den Gruppen erleichtern. Tools - als entscheidende Akteure des Wandels - sind sowohl für das Technologiemanagement als auch für die Gestaltung der Kultur von entscheidender Bedeutung:
"Die Werkzeuge, die wir verwenden, verstärken das Verhalten; Das Verhalten verstärkt das Tool. Wenn Sie also Ihr Verhalten ändern möchten, ändern Sie Ihre Werkzeuge. ”
- Adam Jacob, CTO, Chefkoch
Chef erweitert diesen Begriff weiter, indem er Martial Arts als Metapher für DevOps verwendet, insbesondere für Kung-Fu. Im Folgenden finden Sie eine Aufschlüsselung von Chefs spezieller Schule des DevOps Kung-Fu:
In der Tat sind viele der oben hervorgehobenen Grundsätze (z. B. Sammeln von Metriken, kontinuierliche Integration und Bereitstellung, Durchlaufen von Anwendungen und Infrastruktur durch denselben Workflow) in Chef 15 manifest.
Funktionen und Highlights von Chef
Auf der Basisebene ist Chef ein Tool für Automatisierung, Bereitstellung und Konfigurationsmanagement. Die Plattform setzt sich aus folgenden Komponenten zusammen:
- Chef Server: Der Haupthub, an dem Chef Systemkonfigurationsinformationen und -richtlinien (d. h. Rezepte und Rezeptbücher) weitergibt und speichert. Die Chef-Verwaltungskonsole ist die Web-Benutzeroberfläche für Chef Server.
- Chef-Client: Der Chef-Client wird auf jedem verwalteten Knoten installiert und führt Konfigurationsaufgaben auf dem lokalen Computer aus.
- Chef Workstation: Ermöglicht es bestimmten Workstations, Rezeptbücher zu erstellen/zu testen/zu pflegen und sie auf den Chef Server hochzuladen. Workstations werden auch verwendet, wenn das Chef Development Kit-Paket verwendet wird.
- Chef Analytics: eine Plattform, die Aktionen und Ausführungsverlauf, Echtzeitberichte und Benachrichtigungen zu Chef-Automatisierungsaktivitäten bereitstellt.
- Chef Supermarket: ein Open-Source-Verzeichnis von Kochbüchern, die von der Community beigesteuert wurden
Kontinuierliche Bereitstellung mit Chef Automate
Traditionelle Vergleiche zwischen Puppet und Chef stellen letzteres in der Regel als entwicklerfreundlicher dar, wobei Favoriten wie die Chef's Knife Plugin Architecture und das Chef Developer Kit (Chef DK) hauptsächlich für Entwickler verwendet werden. Auf der ChefConf 2015 wurde ein neues DevOps-Workflow-Produkt vorgestellt: Chef Delivery, eine Reihe von Tools, die der Plattform noch mehr entwicklerfreundliche Funktionen wie umfassende Codebasis-Änderungshistorien, Metriken und Berechtigungsmanagement hinzufügen. Seitdem hat Chef diese Automatisierung und kontinuierliche Bereitstellung in Chef Automate integriert, eine Plattform, die alle Infrastrukturautomatisierungstools von Chef zusammenführt.
Zu den automatisierten Test- und Continuous-Integration/Delivery-Tools von Chef Automate gehören Funktionen wie eine gemeinsame Workflow-Pipeline, Kollaborationsfunktionen und erweiterte Analysen sowie Ökosystem-Integrationen mit AWS, Azure und Docker, um nur einige zu nennen. Obwohl diese Verbesserungen zweifellos ein Segen für die Entwickler-Community von Chef sind, haben die Bestrebungen von Chef wohl wenig damit zu tun, ein entwicklerzentriertes Automatisierungstool zu werden, sondern mehr mit dem Aufbau einer umfassenden Plattform für das DevOps-Pipeline-Management.
Verbesserte Sicherheit mit Chef Vault
Kunden- und/oder Community-Anpassungen werden oft so weit verbreitet und integral, dass sie ihren Weg in echte Produktversionen finden. Dies ist sicherlich der Fall bei Chef Vault, einem Projekt, das von Nordstrom gestartet wurde, um die inhärenten Sicherheitsmechanismen der Plattform zu verbessern. Chef kann sensible Daten (z. B. SSL-Zertifikatsschlüssel, Datenbankpasswörter) nativ in verschlüsselten "Data Bags" speichern - Repositorys mit Schlüssel-Wert-Paaren - für einen sicheren und einfachen Zugriff. Die Verwaltung dieser Data Bags ist jedoch ein langwieriger und fehleranfälliger Prozess. Chef Vault bietet eine zusätzliche Sicherheitsebene, die eine einfachere Verwaltung dieser verschlüsselten Datenpakete ermöglicht.
Chef-Schwachstellen
Laut der CVE-Datenbank (Common Vulnerabilities and Exposures) weist Chef insgesamt 3 gemeldete Sicherheitslücken mit mittlerem Schweregrad auf:
- CVE-2011-5098
- CVE-2011-5097
- CVE-2010-5142
Chef führt außerdem eine fortlaufende Liste von Sicherheitshinweisen, die Kunden geeignete Richtlinien zur Behebung von Sicherheitsmängeln der Plattform bieten.
Chef Cybersecurity-Risikoprofil

Wir haben einen Blick auf die Website von Chef geworfen, um zu sehen, ob wir potenzielle Cybersicherheitsrisiken entdecken können, die zu Datenlecks oder Datenschutzverletzungen führen könnten.
Es überrascht nicht, dass Chef, ein relativ hochentwickeltes Technologieunternehmen, eine respektable B-Sicherheitsbewertung (770/950) erhält.
Zu den größten Risiken gehört eine unsichere SSL/TLS-Version, die sie anfällig für Man-in-the-Middle-Angriffe macht. Ein Mangel an DMARC und DNSSEC.
Erfahren Sie mehr über die Risikofaktoren für die chef.io Website oder holen Sie sich kostenlos Ihre eigene Sicherheitsbewertung.
Marionette
Wie bereits erwähnt, wird Puppet im Vergleich zu Chef als eine eher betriebs- und systemadministratororientierte Lösung angesehen, obwohl diese rollenbasierten Unterscheidungen mit jeder Version weniger relevant werden. DevOps-Praktiker - sowohl Entwickler als auch Betriebsmitarbeiter - sind bestrebt, optimale Bedingungen für die kontinuierliche Integration/Bereitstellung zu schaffen. Tooling wird daher zunehmend auf der Grundlage seiner Fähigkeit bewertet, diese Ziele effektiv und effizient im Kontext der individuellen Anforderungen eines Unternehmens zu erreichen. Nichtsdestotrotz hat Puppet im Laufe der Jahre erhebliche Vorteile als Erstanbieter genossen, und obwohl sowohl Chef als auch Puppet seit den Anfängen der IT-Automatisierung Kopf an Kopf Marktführer sind, verfügt letzteres über eine längere kommerzielle Erfolgsbilanz und eine größere Installationsbasis.
Derzeit wird Puppet in Version 6.11 häufig in einer Client/Server-Konfiguration bereitgestellt, bei der verwaltete Knoten ihre Konfigurationen regelmäßig mit dem Server synchronisieren. Berichte (z. B. Ergebnisse von Automatisierungsläufen, Fehler/Ausnahmen) und andere Informationen werden von den Clients zur aggregierten Analyse und Verarbeitung an den Server zurückgesendet. Die folgende Grafik zeigt eine grundlegende Darstellung des Datenflusses von Puppet:

Marionetten-Funktionen und -Highlights
Bei der Puppet-Automatisierung wird der gewünschte Zustand einer Umgebung erzwungen, wie er in Puppet-Manifesten definiert ist - Dateien mit vordefinierten Informationen (z. B. Ressourcen), die den Zustand eines Systems beschreiben. Die Kernkomponenten, aus denen Puppet besteht, lauten wie folgt:
- Puppet Server - der zentrale Server, der Puppet-Knoten (Agenten) verwaltet
- Puppet Agent - Client-Software, die auf verwalteten Knoten installiert ist und die Kommunikation und Synchronisierung mit dem Puppetmaster ermöglicht
- Puppet Enterprise Console - eine Web-GUI zur Analyse von Berichten und zur Steuerung von Infrastrukturressourcen
- PuppetDB - Datenspeicherdienst für Puppet, die von Puppet erzeugten Daten
Zu den weiteren Schlüsselkomponenten, die es wert sind, erwähnt zu werden, gehören MCollective, ein Framework zur Unterstützung der Serverorchestrierung oder der parallelen Auftragsausführung, und Hiera - ein hierarchisches Schlüssel-Wert-Suchprogramm zum Bereitstellen knotenspezifischer Konfigurationsdaten für Puppet (um Site-spezifische Daten aus Manifesten fernzuhalten). Puppet hat MCollective, Hiera und eine Vielzahl anderer Open-Source-Projekte in seine Plattform integriert, um eine umfassende Automatisierung und Verwaltung geschäftskritischer Unternehmensinfrastrukturen zu ermöglichen. Viele von der Community beigesteuerte Add-ons sind auch auf Puppet Forge verfügbar - einer umfangreichen Bibliothek von Open-Source-Modulen zur Erweiterung der Funktionen und Fähigkeiten der Plattform.

Aktualisierungen des Puppet-Knoten-Managers
>Der Node Manager von Puppet ermöglicht die Erstellung von Regeln für Knotenattribute, was eine einfachere und effizientere Knotenverwaltung ermöglicht. Mit dem Node Manager können Knoten basierend auf ihrem Job und nicht auf dem Namen verwaltet werden, sodass nicht jeder Knoten manuell klassifiziert werden muss. Zu den neuen Updates gehören leistungsstarke Bereitstellungsfunktionen für Docker-Container, AWS-Infrastruktur und Bare-Metal-Maschinen.
Einführung in den Puppet Code Manager
Puppet ist seit seiner Gründung eine tragende Säule der DevOps-Bewegung und erfüllt weiterhin die Anforderungen des Unternehmens an die kontinuierliche Integration/Bereitstellung. Das Konzept von "Infrastructure-as-Code" beinhaltet die Verwendung von Best Practices für die Softwareentwicklung zur Verwaltung von Infrastrukturkonfigurationen und Bereitstellungsdetails, einschließlich Codeüberprüfung, Versionskontrolle und kollaborativer Entwicklung. Und wie Chef hat sich auch die Plattform von Puppet als Reaktion auf den wachsenden Bedarf an einem umfassenden Mechanismus zur Verwaltung der Continuous-Delivery-Pipeline weiterentwickelt.
Der Puppet Code Manager ist seit Puppet Enterprise 3.8 verfügbar und bietet eine konsistente, automatisierte Möglichkeit, Puppet-Code in einem Continuous-Delivery-Framework zu ändern, zu überprüfen, zu testen und zu bewerben. Basierend auf R10K - einem universellen Toolset für die Bereitstellung von Puppet-Umgebungen und -Modulen durch Anbindung an ein Versionskontrollsystem - beschleunigt Puppet Code Manager die Bereitstellung der Infrastruktur, indem es sie zu einem testbaren und programmatischen Prozess macht. Und durch die einfache Integration mit Git für die Versionskontrolle verwischt diese neueste Ergänzung der Puppet-Plattform die Grenze zwischen Software und Infrastruktur weiter.
Software-Defined Networking (SDN)
SDN ist ein neues Paradigma für Netzwerke, das die Netzwerksteuerung und -weiterleitung von der physischen Infrastruktur entkoppelt und so ein agiles Management von Netzwerkressourcen in sich schnell verändernden Umgebungen ermöglicht. So wie Cloud Computing es der IT ermöglicht, Rechen- und Speicherinstanzen schnell bei Bedarf hochzufahren, ersetzt SDN starre (und manchmal manuelle) Netzwerkvorgänge durch dynamisch bereitgestellte Netzwerkdienste und -ressourcen.
Dieses neue Modell für Netzwerke steht im Einklang mit Puppets Befürwortung von "Infrastruktur als Code". "Aus diesem Grund hat das Unternehmen bedeutende strategische Initiativen und Partnerschaften zur Unterstützung von SDN ergriffen. So kündigte Puppet Labs kürzlich eine Partnerschaft mit Arista Networks - einem führenden Entwickler von SDN-Switches - an, um die Automatisierung der SDN-Gerätelinie des Anbieters zu unterstützen. Diese und andere ähnliche Partnerschaften (z. B. Cumulus Networks, Dell, Cisco) werden Puppet gegenüber konkurrierenden Anbietern positiv positionieren, sobald SDN-Technologien eine breite Akzeptanz finden.
Puppet-Sicherheit und Schwachstellen
Keine Software ist ohne Schwachstellen, und Puppet hat sicherlich seine eigenen. Das Unternehmen unterhält aktiv ein Repository mit Puppet-Sicherheitsoffenlegungen, wobei eine vollständige Liste der gemeldeten Schwachstellen über die CVE-Datenbank verfügbar ist. Zum Zeitpunkt der Erstellung dieses Artikels wurden im gesamten Ökosystem von Puppet 79 Schwachstellen dokumentiert, mit einem durchschnittlichen Schweregrad von mittel, und die meisten davon betrafen Open-Source-Puppet und Puppet Enterprise. Chef unterhält keine CVE-Datenbank für alle seine Produkte. Das einzige Produkt, für das CVEs ausgestellt wurden, Chef, enthält 3 CVEs aus dem Jahr 2012.
Puppet Cybersecurity-Risikoprofil

Die Gesamtrisikobewertung von Puppet, gemessen am Upguard Cybersecurity Rating, liegt bei A (903/950), viel höher als die B-Bewertung von Chef.
Der Teufel steckt jedoch im Detail, wenn es um Fehlkonfigurationen geht, und Puppet öffnet sich und seine Kunden mit seiner nachsichtigen SPF-Filterung für E-Mail-Spoofing-gestützte Phishing- und Spear-Phishing-Kampagnen.
Wie Chef verwendet auch es DNSSEC nicht.
Erfahren Sie mehr über die Risikofaktoren für die puppet.com Website oder holen Sie sich kostenlos Ihre eigene Sicherheitsbewertung.
Chef vs Puppet: DSL-Unterschiede und Benutzerfreundlichkeit
Während Chef und Puppet im Design viel näher sind als radikal unterschiedliche Konfigurationsmanagement-Tools wie Ansible. Der erste große Unterschied besteht darin, dass Tools wie Ansible auf einer agentenlosen Architektur basieren, während sowohl Chef als auch Puppet eine agentenbasierte Master-Agent- oder Puppet-Slave-Architektur verwenden. Bei Ansible werden Änderungen des Konfigurationsmanagements von jedem Arbeitscomputer über SSH und nicht von Clients auf den Knoten weitergegeben. Der zweite große Unterschied zu diesen anderen Tools ist die Verwendung der Programmiersprache Ruby, auf der Chef und Puppet basieren. Im täglichen Gebrauch werden Sie jedoch subtile Unterschiede zwischen Chef und Puppet feststellen, die zum großen Teil darauf zurückzuführen sind, dass jede Plattform eine einzigartige domänenspezifische Sprache verwendet, um das Konfigurationsmanagement zu automatisieren.
Zunächst einmal sieht die Chef DSL syntaktisch wie Ruby aus, tatsächlich handelt es sich um eine Standard-Ruby-DSL mit speziellen Funktionen und Schlüsselwörtern, die hinzugefügt wurden, um die Infrastruktur- und Anwendungskonfiguration auf Betriebssystemplattformen wie Linux, Windows und mehr zu handhaben. Da Sie mit der Chef-DSL neben dem Aufrufen der Chef-spezifischen Funktionen und der Verwendung von Chef-spezifischen Schlüsselwörtern auch normalen Ruby-Code schreiben können, bietet sie eine niedrigere Lernkurve für die DevOps-Teams, die Ruby regelmäßig für ihre Arbeit verwenden. Zum Beispiel wird es wahrscheinlich weniger als einen einzigen Nachmittag und ein paar schnelle Google-Suchen in Anspruch nehmen, um einen Ruby-Entwickler mit Chef zum Laufen zu bringen. Dies ist bei Puppet nicht der Fall, da es eine DSL verwendet, die zwar deklarativ ist, aber weit von der Standard-Ruby-Syntax abweicht.
Um diese beiden bei der Arbeit zu sehen, betrachten Sie das folgende Codebeispiel, in dem der Apache-Webserver installiert wird.
Chefkoch:
Paket "apache2" do
Aktion :Installieren
Ende
Marionette:
Klasse Apache {
Paket { 'Apache':
name=> $apachename,
sicherstellen=> anwesend,
}
}
Die DSL-Unterschiede sind oberflächlich, wenn man sich einfache Anwendungsfälle anschaut, aber sie führen zu unterschiedlichen eingebrannten Effekten. Chef zum Beispiel ist in der Regel sehr flexibel, da Sie mit den Standard-Ruby-Helfern und -Funktionen alles erreichen können, was Sie wollen. Die ganze Ausdruckskraft von Ruby steht Ihnen zur Verfügung. Dies hat sowohl Vor- als auch Nachteile, insbesondere dass Sie unnötige Komplexität einführen, die für die Betreuer Ihrer Chef-Rezepte möglicherweise schwer zu entwirren ist.
Die DSL von Puppet hat die Stärke, dass sie die meisten Aufgaben einfach hält und es im Allgemeinen einen sicheren Weg gibt, Dinge zu erledigen. Der Nachteil ist, dass Sie, wenn Ihr Team komplexe Konfigurationen zu bewältigen hat, mit den Einschränkungen der DSL zu kämpfen haben. Es wurde festgestellt, dass Chef's DSL für Ruby-Entwickler freundlich ist, während Puppets DSL freundlicher und näher an Systemadministratoren ist, die möglicherweise eine Konfigurationssprache bevorzugen, die nicht weit von XML oder anderen deklarativen Konfigurationsdateien entfernt ist. Diese Ansicht bleibt wahr, obwohl beide Plattformen, wie bereits erwähnt, im Wesentlichen die gleichen Aufgaben erfüllen.
Chef vs Puppet: Unterstützung für Microservices und Containerisierung
Die Popularität der Containerisierung und Tools wie Docker und Kubernetes haben sich auf die Art und Weise ausgewirkt, wie Anwendungen bereitgestellt werden. Da sich Anwendungen von einer monolithischen Architektur zu granularen Microservices entwickelt haben, wurde die Rolle traditioneller Konfigurationsmanagement-Tools in Frage gestellt. Schließlich bringen Containerisierungsplattformen wie Google Kubernetes Engine und Amazon ECS Tools für die Konfiguration von Containern in der Cloud mit.
Chef hat sich die Containerisierung zu eigen gemacht und Tools entwickelt, um die Erstellung und Bereitstellung von containerisierten Anwendungen zu unterstützen. Das Open-Source-Tool Chef Habitat, das auf Github verfügbar ist, bietet Ihnen ein vollständiges Tool für das Management des App-Lebenszyklus, das gut mit Docker, Kubernetes und anderen Containerisierungstools zusammenarbeitet. Die Vielseitigkeit von Habitat ermöglicht es, traditionelle Anwendungen, wie z. B. ältere Java- oder Python-Anwendungen, ebenso einfach zu erstellen und bereitzustellen wie granulare Microservices, indem eine plan.sh Datei verwendet wird, die alle Details enthält, die für die Erstellung Ihrer Anwendung erforderlich sind. Habitat lässt sich gut in traditionelle DevOps-Tools wie Jenkins integrieren und auf einer Vielzahl von Plattformen bereitstellen, darunter Red Hat Linux, andere Linux-Distributionen, Mac, Windows und Unix. Die in Habitat verfügbaren Paketexportformate werden in Zukunft erweitert, aber Docker ist bereits enthalten. Die vollständige Liste enthält:
- Hafenarbeiter
- ACI
- Mesos
- Teer
- cloudfoundry
Puppet verfügt auch über integrierte Mechanismen, die es Systemadministratoren erleichtern, containerisierte Anwendungen zu verwalten und bereitzustellen. Puppet verfügt über mehrere unterstützte Module für die Installation und Verwaltung von Docker, einschließlich des Herunterladens und Konfigurierens von Docker-Images. Die neueste Version des Puppet-Docker-Moduls, die in Puppet Forge verfügbar ist, ermöglicht das Ausführen und Verwalten von Docker-Containern mithilfe von Puppet-Code. Das Docker-Modul von Puppet unterstützt die folgenden Betriebssysteme:
- RedHatLinux
- Fenster
- Ubuntu
- Debian
- Centos
Testautomatisierung für Chef- und Puppet-Code
Zu den guten Code-Practices gehört, dass Sie Ihren Code frühzeitig und häufig testen, wobei die testgetriebene Entwicklung in allen Bereichen der Technologiebranche beliebt ist. Die Verlagerung der Infrastrukturkonfiguration auf Infrastructure-as-Code (IaC), die durch DevOps-Tools wie Chef und Puppet erleichtert wird, bedeutet, dass es einen größeren Spielraum für das Ausführen von einfachen Tests gibt, um alle Änderungen zu überprüfen, die in Ihrer Infrastruktur eingeführt werden.
Das Entwicklungskit von Puppet, das PDK, bietet Tools für Komponententests sowie für die Validierung der Syntax Ihrer Puppet-Codedateien, einschließlich Ihrer metadata.json Datei, die alle Metadaten des Moduls im JSON-Format verfolgt. Puppet verwendet Standardtools wie RSpec und Cucumber, um Ihren Puppet-Code zu testen.
Chef hingegen unterstützt alle oben genannten Funktionen und enthält auch leistungsstarke Tools zum Testen der Korrektheit und Konformität Ihres Infrastrukturcodes. Das erste dieser Tools ist ChefSpec, ein Framework, das die Funktionen von RSpec erweitert, um das Testen Ihrer Rezepte als Teil eines simulierten Chef Infra Client-Laufs zu ermöglichen. Eine Vielzahl von Beispielen ist im ChefSpec Github-Repository verfügbar, um Ihnen den Einstieg zu erleichtern.
Ein weiteres umfassendes Testtool für Chef-Rezepte ist Kitchen, das Integrationstests Ihrer Chef-Rezeptbücher und Ihres Infrastrukturcodes ermöglicht, mit einer Treiber-Plugin-Architektur, die Ihren Code auf Virtualisierungs- und Containerisierungstools wie Vagrant und Docker sowie auf Cloud-Plattformen testet.
Kitchen bietet sogar Unterstützung für Integrationstests, Konfigurationsmanagement-Code, der von anderen Konfigurationsmanagement-Tools wie Ansible und Saltstack ausgeführt wird. Für diese Anwendungsfälle werden spezielle Provisioner benötigt, die als Open-Source-Bibliotheken auf Github verfügbar sind. Das Ökosystem für Chef-Integrationstests und Compliance-Tests ist viel funktionsreicher als das von Puppet. Zum Ökosystem von Chef gehört auch Chef Automate, ein Tool auf Unternehmensebene, mit dem Sie die Einhaltung von Sicherheitsvorschriften automatisieren und die Automatisierung Ihrer Infrastruktur von einem einzigen Dashboard aus verwalten können.
Wann sollte man sich für Chef statt Puppet entscheiden?
Nachdem wir nun gesehen haben, wie diese beiden Plattformen unter der Haube funktionieren und wie sie viele der gleichen Dinge erreichen, ein Wort zur Auswahl der richtigen Plattform für die Anforderungen Ihres Teams. Ein Tool passt besser zu einer bestimmten Umgebung und zu einer Reihe von Anforderungen als zu einer anderen, und das ist etwas, worüber Sie ernsthaft nachdenken müssen, bevor Sie die Auswahl für Ihr Team treffen.
Zu Beginn können Sie Chef in Umgebungen auswählen, in denen Sie komplexe Konfigurationsverwaltungsszenarien berücksichtigen möchten, z. B. die Bereitstellung auf mehreren Zielen in der Cloud und auf Virtualisierungsplattformen. Das Design von Chef eignet sich gut für Szenarien, in denen Sie die volle Leistung der Programmiersprache Ruby benötigen, um Ihre Rezepte zu codieren, ohne dass es Einschränkungen gibt, um Dinge auf eine bestimmte Weise zu tun.
Das Chef-Ökosystem, insbesondere Chef Habitat, bietet Ihnen alles, was Sie brauchen, wenn es darum geht, Ihre Anwendungen so zu erstellen, dass sie auf nahezu jedem System ausgeführt werden, das Sie im Sinn haben, und dies wird dazu beitragen, Ihre Containerisierungs-Workflows mit Docker oder Kubernetes zu vereinfachen. Chef bietet hervorragende Unterstützung für die Open-Source-Community und andere Tools, die Ihr Unternehmen verwenden kann, wie z. B. Kubernetes, Nagios, Docker und mehr. Integrationen sind für Cloud-Plattformen wie Rackspace verfügbar, wobei Amazon EC2 durch die Integration von Chef-Servern über den AWS OpsWorks for Chef Automate-Service noch einen Schritt weiter geht. Als Zeichen seines Open-Source-Engagements kündigte der CEO von Chef im April 2019 in einem Blogbeitrag an, dass Chef alle seine Produkte Open Source machen wird. Sobald Ihr Team Chef einmal beherrscht, werden Sie weiterhin die Früchte ernten, indem Sie das Know-how von Chef in seinem umfassenden Open-Source-Ökosystem nutzen.
Wann sollte man sich für Puppet statt Chef entscheiden?
Puppet mit seinem deklarativen Stil spricht Organisationen an, die ein zuverlässiges und einfach zu bedienendes Tool für das Konfigurationsmanagement suchen. Dieser philosophische Unterschied hebt sich deutlich von einem Tool wie Chef ab, das zwar genauso leistungsfähig ist, aber viel mehr programmatischen Aufwand erfordert, da es reines Ruby und die Chef DSL verwendet. Die Entscheidung, Chef zu verwenden, führt zu einer steileren Lernkurve für Nicht-Ruby-Entwickler. Der deklarative Stil des Konfigurationsmanagements bringt zahlreiche Stärken mit sich, darunter die einfache Wartung und die Konsistenz der Konfigurationsimplementierung im gesamten Team.
Puppet hat diese Vorteile mit anderen deklarativen CM-Tools wie Ansible gemeinsam, das das YAML-Format zum Erstellen von Konfigurationsplaybooks in einem deklarativen Stil verwendet. Wenn Ihr DevOps-Team aus einer großen Anzahl von Systemadministratoren besteht, die wahrscheinlich besser mit deklarativen Konfigurationsdateien vertraut sind, ist die Verwendung von Puppet besser für Ihr Team geeignet. Puppet ist ein viel eigenwilligeres Konfigurationsmanagement-Tool als Chef und sollte wohl besser in sehr großen Teams funktionieren, in denen Puppet von vornherein integrierte Einschränkungen für den Codestil auferlegt.
Zusammenfassung
Chef und Puppet bauen ihre Automatisierungsplattformen weiter aus, um den Anforderungen des DevOps-fähigen Unternehmens gerecht zu werden, mit neuen Funktionen wie Chef Delivery und dem Puppet Code Manager, die dazu beitragen, die Pipeline für kontinuierliche Integration/Bereitstellung zu rationalisieren. Beide Anbieter schmieden Partnerschaften, die letztendlich - wie Chef es ausdrücken würde - definieren können, welcher DevOps-Schule ein bestimmtes Unternehmen angehört. In der Vergangenheit haben sich die beiden Unternehmen mit Microsoft zusammengetan, um ihre Plattformen in Azure zu integrieren, und Puppet - kein Unbekannter als First Mover - war schon früh dabei, wichtige Allianzen mit führenden SDN-Anbietern einzugehen, um sich günstig zu positionieren, wenn sich die Technologie durchsetzt. Wenn Ihr Unternehmen also plant, SDN einzuführen, könnte Puppet in dieser Hinsicht ein stärkerer Kandidat sein.
Sicherheit ist heutzutage ein unternehmensweites Anliegen und sollte bei der Bewertung von Technologien berücksichtigt werden. Chef hat mit Chef Vault erhebliche Fortschritte bei der Verbesserung der Sicherheit seiner Plattform gemacht, obwohl die 3 veröffentlichten CVE-Schwachstellen im Vergleich zu den 79 von Puppet sicherlich verblassen. Es ist interessant, dass Puppet Labs CVEs für Anbietersoftware wie Ruby erneut ausstrahlt, während Chef dies nicht tut, obwohl beide Produkte Ruby als Kernkomponente enthalten. Es ist auch schwer zu glauben, dass Chef seit 2012 keine Schwachstelle in einer ihrer Software gefunden hat.
Kurz gesagt, beide IT-Automatisierungsplattformen sind als Unternehmenslösungen stark gereift. Wir haben einige der wichtigsten Attribute und Vorteile von Chef and Puppet hervorgehoben - die Auswahl der richtigen Option hängt davon ab, die Kernkompetenzen jeder Plattform zu identifizieren und zu bestimmen, welche davon den individuellen Bedürfnissen und Anforderungen Ihres Unternehmens entsprechen. Unabhängig davon, für welche Automatisierungsplattform Sie sich entscheiden, kann UpGuard beide Lösungen ergänzen, um die DevOps-Toolchain mit fortschrittlicher Schwachstellenbewertung und -überwachung abzurunden und sicherzustellen, dass die Sicherheit - als Funktion der Qualität - bei jedem Schritt des Continuous-Delivery-Prozesses berücksichtigt wird.
Eine gute Faustregel ist, dass Puppet wie das Schreiben von Konfigurationsdateien ist, während Chef wie das Programmieren der Steuerung Ihrer Knoten ist. Wenn Sie oder Ihr Team mehr Erfahrung mit der Systemadministration haben, bevorzugen Sie vielleicht Puppet, und wenn Sie hauptsächlich Entwickler sind, ist Chef möglicherweise die beste Wahl.
Verzichtserklärung
Die Cybersecurity-Risikoprofile wurden zuletzt am 12. Dezember 2019 aktualisiert.
Obwohl wir uns verpflichtet haben, das Risikoprofil jedes Unternehmens genau darzustellen, ist dieser Blog nicht der richtige Ort für die Echtzeit-Risikoüberwachung, und die oben genannten Informationen sollten als Momentaufnahmen betrachtet werden.
Puppet vs Chef Infografik
