KI für DevOps-Engineers – Teil 1: Die Grundlagen von DevOps-KI
DevOps ist ein entscheidender Erfolgsfaktor in der Softwareentwicklung, und wir sind definitiv alle auf die eine oder andere Weise auf KI gestoßen. Eine
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.
Heutzutage arbeiten viele Firmen mit diversen Applikationen. Dadurch müssen einige Arbeitsschritte erledigt werden
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"
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, ...)
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 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 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:
... ist ein Linting-Tool für Chef Cookbooks. Es zeigt Ihnen häufige Fehler oder Probleme, die beim converge passierne können.
... ist auch ein Linting-Tool. Es prüft auf Ruby-Code-Qualität gemäß Community-Standards.
... 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.
... 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.
... 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.
... 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.
... 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.
Mit InSpec können Sie überprüfen, ob Ihre Server korrekt konfiguriert sind.
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:
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.
Sie interessieren sich für unsere Trainings oder haben einfach eine Frage, die beantwortet werden muss? Sie können uns jederzeit kontaktieren! Wir werden unser Bestes tun, um alle Ihre Fragen zu beantworten.
Hier kontaktieren