Chef Infra Server auf Debian 12 installieren

Chef ist eine leistungsstarke Automatisierungssoftware unter Debian Linux, die für die Verwaltung und Konfiguration großer Serverumgebungen entwickelt wurde. Sie erleichtert die Bereitstellung, Konfiguration und Verwaltung von Anwendungen und Infrastrukturen durch die Verwendung von Code und fördert damit die Prinzipien von Infrastructure as Code (IaC). Chef verwendet eine domänenspezifische Sprache (DSL), die in Ruby geschrieben ist, um „Rezepte“ und „Kochbücher“ zu definieren, die angeben, wie Server konfiguriert werden sollen. So können Systemadministratoren und DevOps-Teams sich wiederholende Aufgaben automatisieren, die Konsistenz verschiedener Umgebungen sicherstellen und die Infrastruktur einfach skalieren. Chef unterstützt eine breite Palette von Ressourcen und Integrationen und ist damit ein vielseitiges Werkzeug für die Verwaltung komplexer Umgebungen unter Debian, Ubuntu Linux und anderen Plattformen.

In diesem Tutorial zeigen wir dir Schritt für Schritt, wie du Chef Server und Chef Workstation auf Debian 12 Servern installierst.

Voraussetzungen

Um diese Anleitung durchzuführen, musst du folgende Voraussetzungen erfüllen

  • 3 Debian 12 Server.
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten.

Einrichten des FQDN

In diesem ersten Schritt konfigurierst du den FQDN (Fully Qualified Domain Name) für den Chef Server, die Chef Workstation und den Client.

Führe den folgenden Befehl hostnamectl aus, um den FQDN für jeden Server einzurichten.

sudo hostnamectl set-hostname chef.hwdomain.io
sudo hostnamectl set-hostname workstation.hwdomain.io
sudo hostnamectl set-hostname client.hwdomain.io

Öffne die Datei /etc/hosts auf jedem Server mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/hosts

Füge die folgende Konfiguration ein und achte darauf, dass du die detaillierte IP-Adresse, den Hostnamen und fqdn mit deinen Einstellungen abänderst.

192.168.5.15     chef.hwdomain.io     chef
192.168.5.20     workstation.hwdomain.io     workstation
192.168.5.21     client.hwdomain.io     client

Speichere und schließe die Datei, wenn du fertig bist.

Führe nun den folgenden Befehl aus, um sicherzustellen, dass jeder fqdn auf die richtige IP-Adresse des Servers zeigt.

sudo hostname -f
ping -c3 chef.hwdomain.io

fqdn einrichten

Zeit zwischen Servern synchronisieren

Nachdem du den FQDN konfiguriert hast, musst du sicherstellen, dass jeder Server die Zeit synchronisiert hat. In diesem Fall richtest du den NTP-Server auf dem Chef Server ein und konfigurierst die Chef Workstation und den Client so, dass sie sich mit ihm verbinden.

Einrichten von Chrony auf dem Chef Server

Führe auf dem Chef Server den folgenden Befehl aus, um den Paketindex des Repositorys zu aktualisieren und das Paket Chrony zu installieren.

sudo apt update
sudo apt install chrony -y

chrony installieren

Sobald du Chrony installiert hast, öffne die Datei /etc/chrony/chrony.conf mit dem folgenden Befehl des nano Editors.

sudo nano /etc/chrony/chrony.conf

Füge die folgende Konfiguration ein, um den Standard-NTP-Server festzulegen. Achte darauf, dass du den nächstgelegenen Standort deines Servers auswählst; Details findest du auf ntp.org.

Außerdem wirst du Chrony innerhalb des Chef-Servers als NTP-Server für den Chef-Arbeitsplatz und die Clients konfigurieren.

pool 0.nl.pool.ntp.org iburst
pool 1.nl.pool.ntp.org iburst
pool 2.nl.pool.ntp.org iburst
pool 3.nl.pool.ntp.org iburst

allow 192.168.5.0/24

Speichere und schließe die Datei, wenn du fertig bist.

Als Nächstes führst du den folgenden Befehl aus, um die Standardzeitzone einzurichten und NTP zu aktivieren.

sudo timedatectl set-timezone Europe/Amsterdam
sudo timedatectl set-ntp true

Starte dann den Chrony-Dienst neu, um die Änderungen zu übernehmen.

sudo systemctl restart chrony

Überprüfe abschließend die NTP-Quelle mit dem folgenden Befehl.

chronyc sources

Du solltest eine Ausgabe wie die folgende erhalten:

Chronik konfigurieren

Auf Chef Workstation und Client

Wechsle nun auf die Chef Workstation und den Client-Rechner. Führe dann den folgenden Befehl aus, um das Repository zu aktualisieren und Chrnoy auf beiden Servern zu installieren.

sudo apt update
sudo apt install chrony -y

Danach änderst du die Chrony-Konfiguration /etc/chrony/chrony.conf mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/chrony/chrony.conf

Kommentiere die Standard-NTP-Quelle, um sie zu deaktivieren, und gib dann die IP-Adresse des Chef-Servers als NTP-Server ein, wie im Folgenden beschrieben.

# default chrony
server 192.168.5.15 iburst

Speichere und schließe die Datei, wenn du fertig bist.

Als Nächstes führst du den folgenden Befehl aus, um die Standardzeitzone einzurichten und NTP zu aktivieren.

sudo timedatectl set-timezone Europe/Amsterdam
sudo timedatectl set-ntp true

Starte dann den Chrony-Dienst neu, um deine Änderungen zu übernehmen.

sudo systemctl restart chrony

Überprüfe abschließend die NTP-Quellen auf der Chef Workstation und dem Client mit dem folgenden Befehl.

chronyc sources

Du solltest sehen, dass die Standard-NTP-Quelle sowohl für die Chef Workstation als auch für den Client der Chef Server mit der IP-Adresse 192.168.5.15 ist.

chrony chef workstation client einrichten

Installieren und Konfigurieren von Chef Server

Nachdem du nun den FQDN konfiguriert und die Zeiten zwischen den Servern synchronisiert hast, kannst du Chef installieren. Zuerst installierst und konfigurierst du Chef Server.

Chef Server ist das zentrale Chef-Ökosystem, das die einzelnen Teile miteinander verbindet, daher musst du ihn zuerst konfigurieren. In diesem Fall verwenden wir einen Chef Server mit 8 GB RAM.

Installieren von Chef Server über DEB

Gehe zum Chef Server und führe den unten stehenden Befehl aus, um das Chef Server-Paket herunterzuladen. In diesem Beispiel wirst du Chef 15 verwenden.

VERSION="15.7.0"
wget https://packages.chef.io/files/stable/chef-server/${VERSION}/ubuntu/22.04/chef-server-core_${VERSION}-1_amd64.deb

Installiere nun den Chef Server über die .deb-Datei mit dem unten stehenden Befehl. Die Installation wird einige Minuten dauern.

sudo apt install ./chef-server-core_*.deb

Sobald die Installation abgeschlossen ist, solltest du die Bestätigung„Danke für die Installation von Chef Infra Server“ erhalten.

chef server installieren

Als Nächstes führst du den Befehl chef-server-ctl aus, um deine Chef Server-Installation neu zu konfigurieren.

sudo chef-server-ctl reconfigure

Wenn du gefragt wirst, gibst du Y ein, um die Chef-Lizenz zu bestätigen.

chef server neu konfigurieren

Die Initialisierung des Chef-Servers beginnt. Sobald sie abgeschlossen ist, solltest du eine Bestätigung wie„Chef Infra Server Reconfigured“ erhalten.

chef server rekonfigurieren beendet

Benutzer und Organisation konfigurieren

Nachdem du den Chef Server neu konfiguriert hast, musst du Benutzer und Organisation auf deiner Chef Server Installation einrichten.

Erstelle mit dem folgenden Befehl ein neues Verzeichnis ~/.chef.

mkdir -p ~/.chef

Anschließend erstellst du mit dem folgenden Befehl einen neuen Chef-Benutzer. In diesem Beispiel erstellen wir einen neuen Benutzer alice mit dem Passwort password und das TLS-Zertifikat wird in ~/.chef/alice.pem gespeichert.

sudo chef-server-ctl user-create alice Alice Wonderland alice@hwdomain.io 'password' --filename ~/.chef/alice.pem

Erstelle nun eine neue Organisation mit dem unten stehenden Befehl. Achte darauf, dass du die Details des Organisationsnamens, des zugehörigen Benutzers und den Pfad des TLS-Zertifikats änderst.

sudo chef-server-ctl org-create hworgz 'HW Corp, Inc.' --association_user alice --filename ~/.chef/hworgz-validator.pem

Sobald alles fertig ist, überprüfe die Liste Benutzer und Organisation auf dem Chef-Server mit dem unten stehenden Befehl.

sudo chef-server-ctl user-list
sudo chef-server-ctl org-list

Wenn alles gut läuft, solltest du den Chef Server mit dem Benutzer alice und der Organisation hworgz wie folgt sehen.

Benutzer und Orgz erstellen

Außerdem kannst du die generierten TLS-Zertifikate mit dem folgenden Befehl überprüfen. Du solltest die Zertifikate alice.pem und hworgz-validator.pem sehen.

ls ~/.chef/

Damit hast du die Installation des Chef Servers abgeschlossen.

Installieren und Konfigurieren der Chef Workstation

Nachdem du den Chef Server installiert hast, installierst du die Chef Workstation. Die Chef Workstation ist ein Knotenpunkt, den Administratoren/Benutzer verwenden, um Kochbücher und Rezepte zu erstellen und zu testen.

In diesem Beispiel installierst du die Chef Workstation auf einem Debian 12 Server mit 2 GB RAM.

Installieren der Chef Workstation über DEB

Gehe zur Chef Workstation und führe den unten stehenden Befehl aus, um das Chef Workstation-Paket mit dem unten stehenden wget-Befehl herunterzuladen. In diesem Fall wirst du Chef Workstation 23 installieren.

VERSION="23.7.1042"
wget https://packages.chef.io/files/stable/chef-workstation/${VERSION}/debian/11/chef-workstation_${VERSION}-1_amd64.deb

Nach dem Download führst du den folgenden Befehl aus, um das Chef Workstation-Paket auf deinem System zu installieren.

sudo apt install ./chef-workstation_*.deb

Wenn du fertig bist, solltest du die Bestätigung„Thank you for installing Chef Workstation“ erhalten.

chef workstation installieren

Führe abschließend den folgenden Befehl aus, um die Chef-Version zu überprüfen.

chef -v

Die folgende Ausgabe bestätigt, dass du Chef 23 auf deinem Debian-Server installiert hast.

Check chef version

Chef Workstation konfigurieren

Nachdem du die Chef Workstation installiert hast, musst du nun deine Installation konfigurieren.

Erstelle zunächst einen neuen SSH-Schlüssel mit dem folgenden Befehl. Gib ein, wenn du aufgefordert wirst, eine Passphrase für den Schlüssel einzurichten.

ssh-keygen -t ed25519

ssh-schlüssel generieren

Führe nun den folgenden Befehl aus, um den Schlüssel auf den Chef Server chef.hwdomain.io hochzuladen. Dieser wird verwendet, um TLS-Zertifikate vom Chef-Server auf die Arbeitsstation zu übertragen.

ssh-copy-id root@chef.hwdomain.io

Gib dein Passwort ein, wenn du gefragt wirst.

Upload-Schlüssel

Als Nächstes erstellst du mit dem unten stehenden Befehl ein neues Chef Repo. In diesem Beispiel erstellst du ein neues Chef-Repo test-repo.

chef generate repo test-repo

Erstelle nun ein neues Verzeichnis ~/test-repo/.chef und wechsle in dieses Verzeichnis.

mkdir ~/test-repo/.chef; cd ~/test-repo/.chef

Kopiere die TLS-Zertifikate mit dem unten stehenden Befehl vom Chef Server auf die Workstation in das aktuelle Verzeichnis.

scp root@chef.hwdomain.io:~/.chef/*.pem .

Wenn du fertig bist, überprüfe die Liste der Dateien im Verzeichnis ~/test-repo/.chef.

ls ~/test-repo/.chef/

Stelle sicher, dass deine TLS-Zertifikate auf dem Server der Chef Workstation verfügbar sind.

Schlüssel über scp herunterladen

Knife Utility konfigurieren – Schnittstelle zum Chef Server

Nachdem du nun die Chef Workstation installiert hast, konfigurierst du Knife auf deiner Chef Workstation. Ein Knife ist ein Kommandozeilen-Tool für die Kommunikation mit dem Chef Server, mit dem du Knoten, Kochbücher, Rezepte, Rollen und Umgebungen verwalten kannst.

Wechsle auf dem Chef-Arbeitsplatzrechner in das Verzeichnis ~/test-repo/.chef und erstelle mit dem folgenden Editorbefehl nano eine neue Datei knife.rb.

cd ~/test-repo/.chef
nano knife.rb

Füge das folgende Ruby-Skript ein und achte darauf, dass du die Angaben zu den Benutzern, Organisationen, TLS-Zertifikatsdateien und der Chef Server URL änderst.

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                'alice'
client_key               "alice.pem"
validation_client_name   'hworgz-validator'
validation_key           "hworgz-validator.pem"
chef_server_url          'https://chef.hwdomain.io/organizations/hworgz'
cache_type               'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path            ["#{current_dir}/../cookbooks"]

Speichere und schließe die Datei, wenn du fertig bist.

Wechsle nun in das Verzeichnis ~/test-repo und rufe mit dem unten stehenden Befehl knife die Zertifikate vom Chef Server ab.

cd ~/test-repo
knife ssl fetch

Wenn du fertig bist, solltest du die folgende Ausgabe erhalten.

Einstellungsmesser

Von nun an kannst du das Messer verwenden, um mit dem Chef Server zu kommunizieren und den Client-Rechner zu boosten.

knife client list

Boostraping Client/Node von der Chef Workstation

Im folgenden Abschnitt erfährst du, wie du Knife verwendest, um den Knoten 192.168.5.21 automatisch über SSH von der Chef Workstation aus zu booten.

Wechsle zunächst in das Verzeichnis ~/test-repo/.chef.

cd ~/test-repo/.chef

Führe den folgenden Knife-Befehl aus, um den Client 192.168.5.21 zu booten. Achte darauf, dass du den Benutzer root und das Passwort password mit deinen Daten änderst.

In diesem Beispiel fügst du den Knoten 192.168.5.21 hinzu und benennst ihn als Client.

knife bootstrap 192.168.5.21 -U root -P password --node-name client

Gib Y ein, um fortzufahren und den Prozess fortzusetzen.

Bootstrapping-Knoten

Sobald du fertig bist, solltest du die Bestätigung„Infra Phase complete“ erhalten.

Bootstrapping beendet

Überprüfe nun die Liste der verfügbaren Knoten in der Chef-Umgebung mit dem unten stehenden Befehl. Wenn alles gut läuft, solltest du sehen, dass der Client-Knoten verfügbar ist.

knife node list

Überprüfe dann die Details des Client-Knotens mit dem unten stehenden Messer-Befehl.

knife node show client

In der folgenden Ausgabe siehst du, dass es sich bei dem Client Node um einen Debian 12 Rechner mit dem FQDN client.hwdomain.io handelt.

Messercheck-Knoten

Schließlich kannst du jetzt mit dem folgenden knife-Befehl beliebige Befehle auf dem Client-Knoten ausführen.

knife ssh "client" "whoami;top" -u alice

Gib das Passwort für den Chef-Benutzer alice ein, wenn du dazu aufgefordert wirst. Wenn der Befehl erfolgreich ist, solltest du folgendes erhalten.

Linux-Befehl über Chef zum Client ausführen

Fazit

Herzlichen Glückwunsch! Du hast nun die Installation von Chef Server und Workstation auf Debian 12 Servern abgeschlossen. Außerdem hast du gelernt, wie du mit dem Kommandozeilen-Tool Knife Client-Knoten über SSH bootest. Jetzt kannst du neue Client-Knoten hinzufügen und Kochbücher und Rezepte für die Installation von Anwendungen einrichten.

Das könnte dich auch interessieren …