GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Erstellen Sie ein einfaches Chef-Kochbuch, um Ihre CentOS/RHEL-Infrastruktur zu verwalten

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.


Cent OS
  1. So erstellen Sie eine Kickstart-Datei für CentOS/Fedora/RedHat (RHEL)

  2. Überwachen und verwalten Sie Ihre Dienste mit Monit auf CentOS 6 / RHEL 6

  3. Installieren Sie PartKeepr (Inventarverwaltungssystem) in CentOS &RHEL

  4. So erstellen und aktivieren Sie eine Swap-Partition auf Centos / RHEL 8

  5. CentOS / RHEL :So erstellen und hosten Sie ein Yum-Repository über httpd

Prüfen Sie Ihre Infrastruktur – Installieren Sie Rudder Agent auf CentOS / Ubuntu / Debian

Prüfen Sie Ihre Infrastruktur – Installieren Sie Rudder Server auf CentOS 7 / Ubuntu 16.04 / Debian

So erstellen Sie Ihr erstes Java-Programm unter CentOS 8

So erstellen Sie einen Sudo-Benutzer in RHEL, CentOS, Rocky und AlmaLinux

Richten Sie Ihren eigenen WireGuard VPN-Server auf CentOS/RHEL ein

3 Möglichkeiten zum Erstellen einer Netzwerkbrücke in RHEL/CentOS 8