Chef (Software)
Chef ist eine Open Source-Plattform für Systemmanagement und Automatisierung von Cloud-Infrastrukturen. Das Unternehmen, das Chef entwickelt hat, Opscode, hat sich außerdem 2013 in Chef umbenannt.
Chef Infrastruktur in Code um, um die Serverbereitstellung und -verwaltung zu automatisieren. Ein DevOps-Experte installiert dafür das Chef Development Kit (Chef DK) auf einer Workstation, um Komponenten zu definieren und mit dem Chef-Server zu interagieren.
Chef unterstützt eine Vielzahl von Node-Typen, darunter Server, virtuelle Maschinen in er Cloud, Netzwerkgeräte und Container. Es verwaltet Linux, Windows, Mainframes und mehrere andere Systeme. Das Tool soll Entwicklern und IT-Fachleuten ermöglichen, gemeinsam Anwendungen in der IT-Infrastruktur bereitzustellen.
Wie Chef arbeitet
Chef DK enthält:
- Test Kitchen, ChefSpec, Cookstyle und Foodcritic als Testinstrumente,
- der Chef-Client-Agent, mit dem Chef Server mit verwalteten Knoten kommuniziert,
- Ohai, ein Tool, das allgemeine Systemdetails erkennt,
- Befehlszeilentools von Chef und Knife, und
- das InSpec Auditing Framework.
Chef verwendet Codepakete, sogenannte Rezepte, die in Kochbüchern (Cookbooks) zusammengestellt sind, um zu definieren, wie jeder verwaltete Knoten konfiguriert werden soll. Ein Rezept beschreibt den Zustand, in dem sich eine Ressource zu einem bestimmten Zeitpunkt befinden sollte. Chef kompiliert Rezepte in Kochbüchern zusammen mit Abhängigkeiten und erforderlichen Dateien wie Attributen, Bibliotheken und Metadaten, um eine bestimmte Konfiguration zu unterstützen.
Chef ist ein agentenbasiertes Tool, bei dem Chef-Client die Konfigurationsinformationen für den verwalteten Knoten von Chef Server abruft. Der Chef-Client wird auf jedem Knoten installiert, um die eigentliche Konfiguration auszuführen, und verwendet die Programmiersprache Ruby.
Das agentenbasierte Konfigurationsmanagement bezieht Informationen aus einem zentralen Repository, Chef Server und überwindet damit Probleme mit schlechter Netzwerkkonnektivität. Es ermöglicht außerdem flexible Update-Rollouts. Richtlinienänderung und Richtlinienimplementierung sind getrennt. Chef Server läuft auf jeder größeren Linux-Distribution.
Ein Benutzer kann Cookbooks auf GitHub oder im Chef-Supermarkt freigeben. Chef-Benutzer können sie laden und eigene Versionen dieser Cookbooks erstellen und verwalten.
Ein Administrator kann betriebliche Prozesse mit der Richtlinienfunktion auf dem Chef Server definieren. Der Administrator kann mit Richtlinien Servertypen festlegen, Umgebungsphasen identifizieren, Datentypen zuordnen und Cookbook-Details angeben. InSpec bietet IT-Organisationen auch die Möglichkeit, jederzeit einzusehen, was in ihrem System abläuft. Auf diese Weise können Sicherheitsexperten sicherstellen, dass die Bereitstellung den Vorschriften entspricht.
Chef bietet zusätzlich Tools wie Chef Analytics, Chef Backend, Chef Compliance und Chef Manage an.
Chef Software-Optionen
Chef Automate ist verpackte Plattform für Unternehmensanforderungen, deren Preis pro Knoten festgesetzt wird.
Chef Automate bietet eine Reihe von Funktionen für Workflow-Management, Transparenz und Governance. Die Plattform ermöglicht es einem Unternehmen, Anwendungs- und Cookbook-Bereitstellungen über Cluster von Knoten hinweg zu verwalten. Chef Automate enthält auch Compliance-Kontrollen und andere Funktionen, welche die Automatisierung erleichtern.
Amazon Web Services (AWS) AWS OpsWorks für Chef Automate. Diese native AWS-Implementierung umfasst einen verwalteten Chef-Server und Automatisierungstools, die in die öffentlichen Cloud-Services von AWS integriert sind. Um Chef mit anderen Cloud-Anbietern zu verwenden, suchen Sie nach dem Tool in den Images auf dem jeweiligen Marktplatz des Unternehmens. Daneben gibt es noch das ursprüngliche SaaS-Cloud-Serviceangebot (Software as a Service) von Chef, Hosted Chef. Dieses ist jedoch weniger beliebt als die genannten Versionen.
Unternehmen können jedoch selbstverständlich auch die Open-Source-Version von Chef ausführen – ein kostenloser Download, den ein IT-Mitarbeiter lokal konfiguriert und verwaltet.
Chef versus Puppet, Ansible und Salt
Puppet ist wie Chef eine Open-Source-Konfigurationsverwaltungsplattform, die auf Ruby basiert. Puppet veröffentlichte die erste Version seiner Software im Jahr 2005, während Opscode Chef im Jahr 2009 vorstellte. Salt und Ansible kamen 2011, beziehungsweise 2012 hinzu.
Der Schwerpunkt von Chef liegt auf dem Anwenden von Best Practices für die Softwareentwicklung auf den IT-Betrieb. Daher hebt Chef die Funktionen für Tests als wichtigster Vorteil gegenüber Wettbewerbern hervor. Beispielsweise kann ein Chef-Benutzer seine Bereitstellung auf einem Laptop oder in einer VM testen, bevor sie zu einer Live-Produktionsinfrastruktur wechselt.
Puppet unterscheidet sich von Chef in vielerlei Hinsicht; unter anderem bietet es Dashboards mit Informationen zu laufenden Knoten. Chef-Benutzer arbeiten üblicherweise mit Rezepten über eine integrierte Entwicklungsumgebung. Der Chef ist deklarativ, das heißt, der Benutzer muss den gewünschten Status beschreiben, anstatt Anweisungen zu schreiben, wie dieser Status erreicht werden kann. Dadurch ist Puppet eher interessant für Systemadministratoren, während Chef sich eher für Entwickler eignet.
Salt und Ansible verwenden YAML für die Konfigurationseingabe, ein Format, das für eine einfache Interpretation ausgelegt ist und sich durch Menschen leicht erstellen lässt. Salt stützt sich auch auf die weithin bekannte Programmiersprache für allgemeine Zwecke: Python. Ansible ist agentenlos, während Salt hauptsächlich Agenten verwendet und Chef und Puppet ebenfalls auf Agenten basieren. Alle vier Konfigurationsverwaltungstechnologien bieten die Wahl zwischen kostenloser selbstverwalteter oder kostenpflichtiger Unternehmensversionen.
Chef und Container
Die Bereitstellung von containergestützten Anwendungen über Tools wie Docker und Kubernetes kann ohne die Hilfe von Konfigurationsmanagement-Tools erfolgen. Containerbasierte und Serverless Apps sind zwar in der Minderheit, sie könnten jedoch in Zukunft die Standardmethode zum Ausführen von Workloads sein, und in diesem Fall wäre das Konfigurationsmanagement überflüssig.
Chef bietet ein Tool namens Habitat an, das sich an Softwareentwickler richtet. Es ermöglicht die Portabilität von Apps über Technologiegenerationen hinweg. Das Tool zielt darauf ab, die Zeit zu sparen, die Entwickler für das Umschreiben des Tools zum Packen und Bereitstellen von Anwendungscode benötigen, um ihn zu Containern zu migrieren.