Rezepte mit Berkshelf hochladen und mit Knife anwenden AWS OpsWorks for Chef Automate, Teil 4

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 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

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.

Hier weiterlesen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.