Configuration Management mit Chef: Rezepte mit Berkshelf hochladen und mit Knife anwenden


    Tags: ,

    Chef-Rezepte hochladen mit BerkshelfFü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 repro­duzierbar die gleichen Cookbook-Versionen aus­wä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

    Chef-Rezepte mit berks hochladen

    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 Haupt­verzeichnis 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.

    Beispiel-Script zur Installation von Ubuntu in einer EC2-Instanz mit Chef

    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

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Thomas Drilling

    Thomas Drilling arbeitet ist seit fast 30 Jahren selb­ständig in der IT-Welt sowohl als Consultant, als auch als Redakteur, Buchautor und Journalist für viele ehe­malige und aktuelle IT-Magazine sowie Blogs.

    Aktuell bestätigt sich Thomas schwerpunktmäßig als IT-Trainer für Cloud-Computing in den Bereichen Microsoft Azure, Amazon Web Services und VMware.

    Thomas ist zertifizierter Microsoft-Trainer für nahe das gesamte Portfolio an Microsoft Azure Trainings. Thomas ist außerdem zerti­fi­zierter Microsoft Azure Solutions Architect Expert sowie VMware Certified Professional und wurde von VMware in den Jahren 2016 bis 2022 mit dem Blogger-Status vExpert ausge­zeichnet.

    Thomas führt aktuell jeden Monat zwei selbstkonziperte 4-tägigen Grund­lagenkurse in Cloud Computing mit Azure durch, die sich inhaltlich bewusst von den Microsft-Kursen abheben und vorzuweise als Bootcamp in eine besonderen Lokation stattfinden. Optional kann aber aber auch remote via Microsoft Teams teilgenommen werden.

    Das aktuelle Trainingsprogramm findet sich unter Azure-Trainings. Weitere Infor­mationen und Anmel­dung über sein Azure-Blog.

    Verwandte Beiträge

    Weitere Links