Tags: Configuration-Management, OS Deployment
Für das Hochladen oder Synchronisieren unserer auf der Chef-Workstation verfassten Rezepte benötigen wir das Helfer-Tool Berkshelf, einen Abhängigkeits-Manager für Chef-Cookbooks. Er erlaubt es Nutzern, sich auf die Funktionalität von Community-Cookbooks zu verlassen und diese sicher in Ihren Workflow aufzunehmen.
Mit Berkshelf kann man auch sicherstellen, dass die jeweiligen Continuous-Integration-Systeme reproduzierbar die gleichen Cookbook-Versionen auswählen und deren Abhängigkeiten hochladen oder bündeln, ohne dass eine lokal verwaltete Kopie erforderlich ist.
Berkshelf ist im Chef Development Kit enthalten. Wurde das Chef-Development-Kit (ChefDK) erfolgreich installiert, lässt sich Berkshelf wie folgt bereitstellen:
berks install
Dies muss im Hauptverzeichnis des jeweiligen Cookbooks passieren, in dem auch das Berksfile liegt. Die Ausgabe sollte so aussehen:
Resolving cookbook dependencies... Fetching 'simple-webapp' from source at . Fetching cookbook index from https://supermarket.chef.io... Installing compat_resource (12.19.0) Installing chef-client (8.1.7) Installing cron (4.1.3) Installing logrotate (2.2.0) Installing ohai (5.1.0) Using simple_webapp (0.1.1) from source at .
Nun können wir Berkshelf verwenden, um das neue Cookbook samt seiner Abhängigkeiten wie folgt auf den Chef-Server hochzuladen.
berks upload
Anschließend listen wir mit dem knife-Befehl alle Cookbooks auf dem Chef-Server auf.
knife cookbook list
Die Ausgabe sollte so aussehen:
chef-client 8.1.7 compat_resource 12.19.0 cron 4.1.3 logrotate 2.2.0 ohai 5.1.0 simple-webapp 0.1.1 windows 3.1.1
Damit sind wir in der Lage, mit folgendem Kommando die Chef-Client-Tools direkt per Bootstrapping auf dem vorhandenen Web-Server zu installieren und dann das Standardrezept namens simple-webapp zur Bereitstellung der Web-Applikation anzuwenden.
knife bootstrap [WebServer-PrivateIp] -N [EC2InstanceID] --ssh-user ec2-user --sudo --identity-file ~/.ssh/[KeyName].pem --run-list 'recipe[simple_webapp],recipe[chef-client]'
Hierbei ist WebServer-PrivateIp die private IP des laufenden (EC2-basierten) Web-Servers, EC2InstanceID seine Instanz-ID und KeyName der Namen des Schlüsselpaars für den SSH-Zugriff.
Beispiel-Script zur Einrichtung einer EC2-Linux-Instanz
Im Hauptverzeichnis des Starter-Kits findet sich ein passendes Beispiel-User-Daten-Script, mit dem sich eine Linux-EC2-Instanz einrichten und durch Chef verwalten lässt. Das Script erledigt folgende Aufgaben:
- Integration des Chef-CA-Pfads
- Installation der passenden Apache-Version für das jeweilige OS (Debian, Ubuntu etc.)
- Installation und Konfiguration der AWS-CLI
- Verknüpfung des neuen Knotens mit dem Server (mittels Chef-Client-Key und associate-node)
- Die initiale Chef-Konfiguration (Chef-Server-URL, Node-Name, CA-File)
- Einrichtung des chef-clients
- Installation des Trusted-Certs
Die zugeordneten Rezepte könnten in der Variablen RUN_LIST stehen.
Beim Bootstrapping ist es erforderlich, dass eine IP-Route zwischen Chef-Server und dem zu konfigurierenden Zielsystem existiert. Wer also seine Chef-Workstation on premises, den Web-Server aber in einer AWS-VPC betreibt, braucht eine entsprechende VPN-Verbindung.
Natürlich kann man aber auch den zu konfigurierenden Web-Server im eigenen Rechenzentrum betreiben, sofern auf diesem die erforderlichen Agenten installiert sind. Dann muss man aber dafür sorgen, dass dieser vom Chef Automate Server aus erreichbar ist.
Täglich Know-how für IT-Pros mit unserem Newsletter
Thomas Drilling arbeitet seit mehr als 20 Jahren selbständig als Redakteur und Autor für viele ehemalige und aktuelle IT-Magazine sowie Blogs. Thomas ist zudem Buchautor und IT-Consultant.
Seit 5 Jahren ist Thomas neben seiner journalistischen Tätigkeit hauptberuflicher, selbständiger IT-Trainer für VMware und Microsoft.
Seine Themenschwerpunkte sind Virtualisierung und Cloud Computing, speziell VMware, Amazon Web Services, Google Cloud und Microsoft Azure. Thomas ist zertifizierter VMware Professional, Advanced Professional und wurde von VMware in den Jahren 2016, 2017, 2018, 2019 und 2020 mit dem Blogger-Status vExpert ausgezeichnet.
Thomas ist außerdem zertifizierter AWS Solutions Architect, Sysops Engineer und Devops Engineer sowie Microsoft Certified Azure Administrator.
Thomas führt aktuell jeden zweiten Montag einen 4-tägigen Grundlagenkurs in Cloud Computing mit AWS via Zoom-Meeting durch. Weitere Informationen und Anmeldung über sein AWS-Blog.
Ähnliche Beiträge
- Configuration-Management: Mit ProDeploy PCs bereitstellen
- DISM Befehlsübersicht: Images anpassen, Windows reparieren, Optionale Features und Datei-Zuordnungen verwalten
- Windows 11 mit dem Microsoft Deployment Toolkit (MDT) verteilen
- Boot-fähigen Datenträger mit Windows 11 PE (WinPE) erstellen
- VMware Imager: Windows automatisch in einer virtuellen Maschine installieren