Suchen

AWS OpsWorks for Chef Automate, Teil 2 Chef Workstation unter Amazon Linux

| Autor / Redakteur: Dipl. -Ing. Thomas Drilling / Stephan Augsten

Sobald ein Chef-Automate-Server funktionsfähig ist, kann man sich ans Einrichten einer Chef Workstation machen. Unter AWS installieren wir hierfür nun das Starter-Kit, ChefDK und einige Hilfswerkzeuge.

Firma zum Thema

In diesem Teil unserer Miniserie richten wir die Chef Workstation unter AWS ein.
In diesem Teil unserer Miniserie richten wir die Chef Workstation unter AWS ein.
(Bild: Drilling / Chef)

AWS OpsWorks for Chef Automate haben wir im ersten Teil dieser Miniserie vollständig eingerichtet und bereitgestellt. Im nächsten Schritt schreiben wir die automatisch generierte und aus dem Ausgabestring extrahierte (momentan in einer Variablen zwischengespeicherte) Schlüsseldatei client.pem auf der Chef-Workstation in die Datei /etc/chef/client.pem:

sudo mkdir /etc/chef
echo $opw_privkey | sudo tee /etc/chef/client.pem
sudo chmod 644 /etc/chef/client.pem

Jetzt ist es an der Zeit, die neueste Version des Chef Development Kit, kurz ChefDK, herunterzuladen. Die Links zur jeweils neuesten und älteren Stable-Versionen finden sich auch im Download-Bereich von Chef.io.

wget https://packages.chef.io/files/stable/chefdk/3.5.13/el/7/chefdk-3.5.13-1.el7.x86_64.rpm

Das Installieren erfolgt dann auf unserer auf Amazon-Linux basierenden Chef-Workstation mittels …

sudo yum install -y chefdk-3.5.13-1.el7.x86_64.rpm

Um das ebenfalls aus der Ausgabe extrahierte Starter Kit zugänglich zu machen, verschieben wir die in der Variablen $opw_skit gespeicherte base64-codierte Datei mithilfe von Python in eine ZIP-Datei. Das geht so:

echo $opw_skit | python -m base64 -d > starterkit.zip

Anschließend entpacken wir die Datei:

unzip starterkit.zip

Die Ausgabe sollte etwa wie folgt aussehen:

Unzipping des Chef Starter Kit.
Unzipping des Chef Starter Kit.
(Bild: Drilling / Chef)

inflating: myautomateserver3-woncukfty46sctqm/.chef/ca_certs/opsworks-cm-ca-2016-root.peminflating: myautomateserver3-woncukfty46sctqm/Berksfileinflating: myautomateserver3-woncukfty46sctqm/README.mdinflating: myautomateserver3-woncukfty46sctqm/chefignore inflating: myautomateserver3-woncukfty46sctqm/cookbooks/README.mdinflating: myautomateserver3-woncukfty46sctqm/environments/README.mdinflating: myautomateserver3-woncukfty46sctqm/roles/README.mdinflating: myautomateserver3-woncukfty46sctqm/.chef/knife.rbinflating: myautomateserver3-woncukfty46sctqm/.chef/private.peminflating: myautomateserver3-woncukfty46sctqm/userdata.sh

PEM-Schlüssel hochladen

Nun laden wir noch unseren privaten PEM-Schlüssel auf die Chef-Workstation hoch. Erst so ist sichergestellt, dass dieser auch per SSH eine Verbindung mit dem Chef-Automate-Server (oder unseren Knoten-Maschinen wie z. B. den Ziel-Webserver) aufnehmen kann.

Aber Achtung: In diesem Beispiel haben wir die auf EC2 basierende Chef-Workstation nur aus Gründen der einfachen Zugänglichkeit in einem öffentlichen Subnetz platziert, auch weil dieser damit die persönliche Betriebsumgebung des Kunden nachahmt. Das Platzieren von SSH-Schlüsseln auf einem gemeinsam genutzten Server sollte jedoch in Produktionsumgebungen unbedingt vermieden werden!

Unter Windows/Putty kann das Hochladen z. B. sofern installiert mit Hilfe von PuTTY-SCP (pscp) erfolgen. Das folgende Kommando ist etwas unübersichtlich und enthält an drei Stellen ein Key-Pair:

"c:\Program Files (x86)\PuTTY\pscp.exe" -i ./[KeyPairName].ppk ./[KeyPairName].pem ec2-user@[CommandHostPublicIp]:/home/ec2-user/.ssh/[KeyPairName].pem

Hierbei ist die erste genannte KeyPair-Datei (im ppk-Format) der Authentifizierungsmechanismus selbst. Das zweite Schlüsselpaar mit der Dateiendung .pem ist die KeyPair-Datei, die übertragen werden soll; der dritte KeyPair-Eintrag legt die Zieldatei fest. Optional kann man aber auch den Bitvise-SSH-Client von putty.org installieren, der einen grafischen SCP-Client mitbringt.

Verbindungsversuch mit dem Endpoint.
Verbindungsversuch mit dem Endpoint.
(Bild: Drilling / Chef)

Somit sollte es jetzt wie im vorangestellten Bild möglich sein, sich im Browser auf den Chef-Automate-Server-Endpoint unter $opw_endpoint zu verbinden. Diesen haben wir ja zuvor in einer Variablen festgehalten.

Extraktion des zugehörigen Passworts.
Extraktion des zugehörigen Passworts.
(Bild: Drilling / Chef)

In einem Browser-Tab sollte sich nun der Anmeldedialog für Chef Automate öffnen. Das admin-Passwort entnehmen wir ebenfalls aus der zugehörigen Variablen echo $opw_pwd:

Einrichtungsdialog der Chef Automate Console.
Einrichtungsdialog der Chef Automate Console.
(Bild: Drilling / Chef)

Danach kann man sofern gewünscht die Chef-Automate-Console weiter konfigurieren, was aber für das weitere Vorgehen in diesem Workshop nicht erforderlich ist. Selbstverständlich taucht der Chef-Automate-Server wie im untersten Bild zu sehen auch im EC2-Dashboard auf. Im dritten Teil dieses Beitrages schauen wir uns an, wie das Bereitstellen von Cookbooks funktioniert und wie man mit Hilfe von Chef eines existenten Webserver bootstrappen kann.

Blick ins Dashboard von Amazon EC2.
Blick ins Dashboard von Amazon EC2.
(Bild: Drilling / Amazon)

(ID:45617438)

Über den Autor

Dipl. -Ing. Thomas Drilling

Dipl. -Ing. Thomas Drilling

IT-Consultant, Trainer, Freier Journalist