x

Menü

Einführung In Chef

veröffentlicht in: Configuration Management Datum: 01.12.2017
Miriam Grainer, Junior IT-Consultant

Über die Autorin

Miriam Grainer ist eine Junior IT-Beraterin für Infralovers und Commandemy. Miriam liebt es neue Technologien und Programmiersprachen zu lernen und damit zu experimentieren. Derzeit studiert sie Informationsmanagement an der FH Joanneum Graz. Twitter LinkedIn

Alle Artikel von diesem Autor sehen

Chef ist ein Automatisierungs-Tool welches sämtliche Vorgänge, die zum Aufsetzen von Serverinfrastruktur und zum Durchführen von Software-Deployments nötig sind, automatisiert. In anderen Worten, mit Chef können Sie Ihre Infrastruktur in Code umwandeln. Dies ermöglicht die konsistente Überwachung und Dokumentation der Infrastruktur.

Aber warum brauchen wir Chef?

Heutzutage arbeiten viele Firmen mit diversen Applikationen. Dadurch müssen einige Arbeitsschritte erledigt werden

  • Applikation einrichten
  • Datenbank hinzufügen
  • auf Redundanz achten
  • Load Balancer einrichten
  • skalieren
  • Caching-Layer einrichten

Wie man sehen kann, steigt die Komplexität sehr rasch und es wird immer schwieriger alles zu überwachen. Außerdem ist es sehr komplex, Änderungen vorzunehmen. Aber wie wir alle wissen, Änderungen passieren und man wird sehr viel Zeit brauchen um diese zu realisieren.

Chef löst dieses Problem! Chef ist “Infrastructure as Code”

Grundlegende Begriffe

Bevor man anfängt mit Chef zu arbeiten, ist es hilfreich einige grundlegende Begriffe zu kennen und zu wissen, wie diese zusammenarbeiten.

Organizations … sind unabhängige Benutzer von Chef (z.B.: Firmen, Geschäftsbereiche, Abteilungen, …)

Environments … zeigen die Phasen der Applikation (z.B.: development, test, staging, production, …) … können Informationen enthalten, die zum Konfigurieren Ihrer Infrastruktur verwendet werden (z.B.: URL, Ort des Repositories, Fileversion)

Roles … representieren die Servertypen in der Infrastruktur (z.B.: Load Balancer, Applikations Server,…)     … können eine Run-Liste beinhalten, sowie Konfigurationsinformationen (z.B.: Port des Applikationsservers, Liste von Applikationen die bereitgestellt werden sollen) … vereinfachen die identische Konfiguration vieler Nodes

Nodes … repräsentieren die Server in Ihrer Infrastruktur. Jede Node gehört zu einer Organisation und einer Umgebung und hat keine oder mehrere Rollen.

Attributes … repräsentiert Informationen über die Knoten (z.B.: Infos über CPUs, Arbeitsspeicher, …)

Resources … repräsentieren einen Teil eines Systems und seinen gewünschten Zustand (z.B.: ein Paket, das installiert werden sollte) Deshalb sagt man einfach WAS man will anstatt wie.

Recipes … Ressourcen werden in Recipes gesammelt. Sie stellen sicher, dass sich das System im gewünschten Zustand befindet (z.B.: Installiere und Konfiguriere Softwarekomponente, …)

Cookbooks … Recipes werden in Cookbooks mit Attributen, benutzerdefinierten Ressourcen, Bibliotheken, Definitionen, Dateien, Vorlagen, Tests und Metadaten gespeichert. Sie können mit anderen Personen geteilt werden.

Runlist … ist eine geordnete Sammlung von Richtlinien, denen Nodes folgen sollte.

Search … für eine Node mit einer Rolle. Chef hilft Ihnen dabei, Nodes automatisch mit allen anderen Instanzen zu verbinden.

Knife … primäres Werkzeug, um mit dem Chef-Server zu kommunizieren

Ohai … erkennt und erfasst Attribute auf Nodes.

Data Bags … sind Container für Elemente, die Informationen zu Ihrer Infrastruktur darstellen, die nicht an einzelne Nodes gebunden sind (z.B.: Benutzer, Gruppen, …)

Development Tools

Git

Git ist ein kostenloses und frei verfügbares verteiltes Versionskontrollsystem, das entwickelt wurde, um in kleinen bis zu sehr großen Projekten mit Geschwindigkeit und Effizienz zu arbeiten. Git wird normalerweise verwendet, um alle Cookbooks aufzunehmen. Jedes Cookbook verfügt über ein eigenes Repository. Neue Funktionen sollten in separaten Forks und Branchen erstellt werden. Auf diese Weise ist es möglich, nach Abschluss der Peer-Code-Überprüfungen leicht mit dem Master zu mergen.

GitLab

GitLab CE ist eine Open-Source-Software für die Zusammenarbeit mit Git. Sie können Projekte und Repositories erstellen, den Zugriff verwalten und Code-Reviews durchführen. Es ist eine On-Premises Software, die Sie auf Ihrem Server installieren und verwenden können. Es ist unsere empfohlene Plattform zum Speichern und Verwalten Ihrer Git-Repositories.

ChefDK

ChefDK bietet ein All-in-One Paket zur Einrichtung Ihrer Workstation, mit allem was Sie für die Entwicklung und den Einsatz von Cookbooks benötigen.

ChefDK kommt mit:

  • eigenem Ruby
  • Foodcritic
  • Rubocop
  • Berkshelf
  • Test Kitchen
  • ChefSpec
  • Chef-Vault

Foodcritic

… ist ein Linting-Tool für Chef Cookbooks. Es zeigt Ihnen häufige Fehler oder Probleme, die beim converge passierne können.

Rubocop

… ist auch ein Linting-Tool. Es prüft auf Ruby-Code-Qualität gemäß Community-Standards.

Berkshelf

… ist ein Tool zum Verwalten von Cookbooks auf dem Chef-Server. Es kann Cookbooks auf den Chef-Server hochladen und deren Abhängigkeiten verwalten. Sie können dies auch manuell tun, aber Berkshelf macht diesen Prozess viel einfacher.

Test Kitchen

… ist ein Test-Harness-Tool, das Konfigurationsmanagement- und Testbibliotheken für automatisierte Integrationstests auf allen Arten von Plattformen verwendet. Es wird während der Entwicklung verwendet, um Tests mit bereitgestellten Maschinen durchzuführen. Test-Kitchen kann Maschinen auf einer Vielzahl von Plattformen wie Vagrant/VirtualBox, OpenStack, Docker, AWS EC2 usw. testen.

Virtual Box

… ist ein leistungsstarkes x86- und AMD64/Intel64-Virtualisierungsprodukt für Unternehmen und Privatanwender. Es ist frei verfügbar als Open Source Software und läuft auf fast allen Betriebssystemen.

Vagrant

… erstellt und konfiguriert virtuelle Entwicklungsumgebungen. Es kann als ein Wrapper auf höherer Ebene angesehen werden für Virtualisierungssoftware wie VirtualBox und Configuration Management Tools wie Chef. Es ist der Leim, der die VM und Chef auf der lokalen Workstation miteinander verbindet.

Docker

… ist ein Open-Source-Projekt, das die Bereitstellung von Anwendungen in Software Containern automatisiert. Das Testen von Cookbooks auf Docker kann schneller sein als das Testen auf VMs. Daher gibt es einen Kitchen-Driver für Docker. Alles was Sie brauchen, ist Docker auf Ihrer lokalen Workstation zu installieren.

###InSpec Mit InSpec können Sie überprüfen, ob Ihre Server korrekt konfiguriert sind.

ChefSpec

Während ServerSpec eher ein Integration Testing Tool ist, das Tests auf den aktuellen Nodes ausführt, kann ChefSpec als Unit-Test-Framework zum Testen von Cookbooks angesehen werden. Anstatt ChefSpec mit Test-Kitchen auszuführen, wird es normalerweise lokal mit Chef Solo ausgeführt, ohne eine Node tatsächlich zu convergen. Es gibt jedoch auch die Option, einen Chef-Server zu verwenden.

Dies hat zwei Vorteile:

  • Geschwindigkeit
  • und Sie können die tatsächliche Cookbook Logik /Attribute testen, nicht nur das Ergebnis des converge

Wie Sie sehen können, ist Chef eine wirklich mächtige Automatisierungsplattform und Sie können viel Zeit sparen, wenn Sie sie verwenden.

Sind Sie an weiteren Informationen über Chef interessiert und wollen damit anfangen Chef zu verwenden? Perfekt! Unsere Aufgabe ist es, Ihnen beizubringen, wie Sie Ihre Probleme mit Chef lösen können.