Kochbücher sind eine der wichtigen Komponenten im Konfigurationsmanagementsystem von Chef; es erlaubt uns, spezialisierte Aufgaben (Änderungen zu übertragen) auf Remote-Chef-Knoten zu konfigurieren und auszuführen.
In diesem Leitfaden werden wir Kochbücher erstellen und Chef dann anweisen, diese zu pushen, d. h. die im Kochbuch beschriebenen Schritte auf Knoten auszuführen.
In diesem Handbuch wird davon ausgegangen, dass Sie über eine funktionierende Chef-Umgebung verfügen, die einen Server, eine Arbeitsstation und mindestens einen Knoten umfasst, auf den die Konfigurationsänderungen übertragen werden können.
LESEN: So richten Sie einen Chef 12 unter CentOS 7 / RHEL 7 ein
Kochbuch:
Chef Cookbooks ist eine Einheit, die die Konfigurations- und Richtliniendetails enthält, um einen Knoten in einen bestimmten Zustand zu versetzen. Kochbücher werden auf einer Workstation erstellt und dann auf den Chef-Server hochgeladen. Den Nodes wird dann eine „Ausführungsliste“ eines Kochbuchs zugewiesen, bei der es sich um eine sequentielle Liste von Aktionen handelt, die auf einem Node ausgeführt werden sollen, um den Node in den gewünschten Zustand zu bringen.
Erstellen Sie einfache Kochbücher:
In diesem Abschnitt erstellen wir ein einfaches Kochbuch zur Installation und Konfiguration eines Apache-Webservers.
LESEN:LAMP auf CentOS 7 / RHEL 7 konfigurieren
Melden Sie sich bei Ihrer Chef-Workstation an und gehen Sie zu Ihrem ~/chef-repo/cookbooks Verzeichnis.
cd ~/chef-repo/cookbooks/
Erstellen Sie das Kochbuch namens „httpd “. Ersetzen Sie „httpd “, wenn Sie es anders benennen möchten.
chef generate cookbook httpd
Ausgabe:
Generating cookbook httpd - Ensuring correct cookbook file content - Ensuring delivery configuration - Ensuring correct delivery build cookbook content Your cookbook is ready. Type `cd httpd` to enter it. There are several commands you can run to get started locally developing and testing your cookbook. Type `delivery local --help` to see a full list. Why not start by writing a test? Tests for the default recipe are stored at: test/recipes/default_test.rb If you'd prefer to dive right in, the default recipe can be found at: recipes/default.rb
Gehen Sie in das Verzeichnis Ihres neu erstellten Kochbuchs, d. h. httpd .
cd httpd
Wenn Sie in das Verzeichnis des neuen Kochbuchs gehen, können Sie unten die Verzeichnisstruktur darin sehen.
Ausgabe:
-rw-r--r--. 1 root root 47 Nov 12 21:18 Berksfile -rw-r--r--. 1 root root 1133 Nov 12 21:18 chefignore -rw-r--r--. 1 root root 568 Nov 12 21:18 metadata.rb -rw-r--r--. 1 root root 53 Nov 12 21:18 README.md drwxr-xr-x. 2 root root 23 Nov 12 21:18 recipes drwxr-xr-x. 3 root root 38 Nov 12 21:18 spec drwxr-xr-x. 3 root root 20 Nov 12 21:18 test
Rezept:
Ein Rezept besteht aus einer Reihe von Ressourcen, die den Zustand eines bestimmten Dienstes oder einer Anwendung definieren, z. B. könnte eine Ressource sagen „der NTP-Dienst sollte laufen“, eine andere könnte sagen „der Telnet-Dienst sollte gestoppt werden“
Das Rezept ist nicht nur auf die Verwaltung von Diensten beschränkt; Es kann auch verwendet werden, um die Befehle auszuführen, die Benutzerverwaltung und vieles mehr.
LESEN:Verschiedene Arten von Ressourcen.
Gehen Sie zum Rezeptverzeichnis. Dort sehen Sie eine Datei namens „default.rb “. Wir werden diese Datei verwenden, um Ressourcen hinzuzufügen, die erforderlich sind, um den Apache-Server zum Laufen zu bringen.
cd recipes cat default.rb
Ausgabe:
Standardmäßig enthält die Datei Kopfzeilen.
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved.
Apache installieren:
Lassen Sie uns zunächst eine Ressource zum Installieren des Apache-Pakets hinzufügen.
package 'httpd' do action :install end
Wo,
Paket – Definiert die Paketressource
httpd – Name des Pakets, das Sie installieren möchten, sollte ein legitimer Paketname sein.
Aktion:Installieren – Dies gibt die Aktion für die Ressource "Paket" an “, in unserem Fall die Installation von httpd .
Wenn dieses Rezept auf dem Knoten ausgeführt wird, prüft der Chef, ob der Apache installiert ist. Wenn dies der Fall ist, überspringt er diese Ressource und geht zur nächsten Ressource. Wenn nicht, wird Apache mithilfe des Systeminstallationsprogramms installiert.
Apache-Dienst verwalten:
Als nächstes sorgen Sie dafür, dass der Apache-Dienst beim Systemstart automatisch gestartet wird und der Dienst sollte auch betriebsbereit sein. Der folgende Code erfüllt unsere Anforderungen.
service 'httpd' do action [ :enable, :start ] end
Wo,
Dienst – Definiert die Dienstressource.
httpd – Der Name des Dienstes sollte ein legitimer Dienstname sein.
Aktion [ :enable, :start ] – Geben Sie Aktionen an, die Sie ausführen möchten. In unserem Fall beginnt diese Ressource mit „httpd “ und beim Start aktivieren.
Indexdatei:
Unsere nächste Ressource ist die Platzierung der index.html Datei im Dokumentstammverzeichnis des Apache-Servers. Alles, was Sie brauchen, um den Speicherort anzugeben, wo Sie die Datei haben wollen und woher Sie die Datei bekommen.
cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end
Wo,
cookbook_file – Ressource zum Übertragen von Dateien aus einem Unterverzeichnis von httpd/files zu einem erwähnten Pfad, der sich auf einem Chef-Knoten befindet.
Quelle – Geben Sie den Namen der Quelldatei an. Dateien befinden sich normalerweise in COOK_BOOKS/files .
Modus – Legt die Berechtigungen für die Datei fest.
Erstellen der Indexdatei:
Da wir eine „cookbook_file ”-Ressource müssen wir eine Quelldatei “index.html erstellen ” innerhalb von Dateien Unterverzeichnis Ihres Kochbuchs.
cd ~/chef-repo/cookbooks
Erstellen Sie ein Unterverzeichnis „files ” unter Ihrem Kochbuch.
mkdir httpd/files
Fügen Sie einen einfachen Text in die index.html ein .
echo "Installed and Setup Using Chef" > httpd/files/index.html
Firewall:
Unsere letzte Ressource besteht darin, die Firewall so zu konfigurieren, dass sie http zulässt und https Verkehr von externen Rechnern.
execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
Wo,
ausführen – Ressource zum Ausführen eines einzelnen Befehls.
Befehl – Definiert einen tatsächlichen Befehl, den Sie auf dem Knoten ausführen möchten.
ignore_failure – Führen Sie ein Rezept weiter aus, auch wenn eine Ressource aus irgendeinem Grund ausfällt. Dies ist nützlich, wenn das System FirewallD nicht aktiviert hat.
Die endgültige Version von default.rb wird wie unten aussehen.
vi ~chef-repo/cookbooks/httpd/recpies/default.rb
Ausgabe:
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved. package 'httpd' do action :install end service 'httpd' do action [ :enable, :start ] end cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
Laden Sie das Kochbuch hoch:
Sobald Ihr Kochbuch fertig ist, können Sie es auf Ihren Chef-Server hochladen.
knife cookbook upload httpd
Ausgabe:
Uploading httpd [0.1.0] Uploaded 1 cookbook.
Prüfen Sie, ob Sie das soeben hochgeladene Kochbuch auflisten können.
knife cookbook list
Ausgabe:
httpd 0.1.0
Um das Kochbuch zu entfernen (optional ).
knife cookbook delete cookbook_name
Fügen Sie das Cookbook zu Ihrem Knoten hinzu:
Sie können der run_list ein Kochbuch hinzufügen eines bestimmten Knotens mit dem folgenden Befehl. Ersetzen Sie chefclient.itzgeek.local mit Ihrem Client-Knotennamen.
knife node run_list add chefclient.itzgeek.local httpd
Ausgabe:
chefclient.itzgeek.local: run_list: recipe[httpd]
Um das bestimmte Rezept aus run_list zu entfernen (optional ).
knife node run_list remove chefclient.itzgeek.local recipe[cookbook_name]
Abrufen der Konfiguration:
Melden Sie sich bei dem Client-Knoten an, auf dem die Chef-Client-Software ausgeführt wird.
LESEN:Bootstrapping eines neuen Knotens mit Knife
Führen Sie den Chef-Client aus Befehl auf dem Client-Knoten, um beim Chef-Server nach neuen run_list zu suchen und führen Sie diese run_list aus die ihm zugewiesen wurde.
chef-client
Ausgabe:
Starting Chef Client, version 12.16.42 resolving cookbooks for run list: ["httpd"] Synchronizing Cookbooks: - httpd (0.1.0) Installing Cookbook Gems: Compiling Cookbooks... Converging 5 resources Recipe: httpd::default * yum_package[httpd] action install - install version 2.4.6-40.el7.centos.4 of package httpd * service[httpd] action enable - enable service service[httpd] * service[httpd] action start - start service service[httpd] * cookbook_file[/var/www/html/index.html] action create (up to date) * execute[httpd_firewall] action run - execute /usr/bin/firewall-cmd --permanent --zone public --add-service http * execute[reload_firewall] action run - execute /usr/bin/firewall-cmd --reload Running handlers: Running handlers complete Chef Client finished, 5/6 resources updated in 24 seconds
Sie können überprüfen, ob dies funktioniert, indem Sie die IP-Adresse oder den Domänennamen Ihres Knotens über einen Webbrowser aufrufen.
http://deine-ip-adresse-ess/Ausgabe:

Extras:
Chef Cookbook zum Erstellen eines Benutzers:
Sie können das folgende Kochbuch verwenden, um einen neuen Nutzer zu erstellen. Ersetzen Sie das Grün Werte entsprechend Ihrer Umgebung.
group "raj" do gid 9999 end user 'raj' do comment 'Admin [at] ITzGeek' uid '9999' gid '9999' manage_home true home '/home/raj' shell '/bin/bash' password '$6$89lC6OcN$xGO/4ia1j8YXY5TytLFccCjeITSCkgCgQbFMloF4O/kUWFOWhQBH5/BavEkvMj.0fuGx1pMxoUkKF6s9Tpnoj/' end
Das ist alles.