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

So installieren Sie Chef Workstation/Server/Node unter CentOS 7

Chef ist eine Automatisierungsplattform, die Ihre Infrastruktur konfiguriert und verwaltet. Es verwandelt die Infrastruktur in Code. Es ist ein Ruby-basiertes Konfigurationsmanagement-Tool. Diese Automatisierungsplattform besteht aus einer Chef-Workstation, einem Chef-Server und Chef-Clients, bei denen es sich um die vom Chef-Server verwalteten Knoten handelt. Alle Chef-Konfigurationsdateien, Rezepte, Kochbücher, Vorlagen usw. werden auf der Chef-Workstation erstellt und getestet und auf den Chef-Server hochgeladen, der diese dann über alle möglichen Knoten verteilt, die innerhalb der Organisationen registriert sind. Es ist ein ideales Automatisierungs-Framework für Ceph und OpenStack. Es gibt uns nicht nur die vollständige Kontrolle, sondern es ist auch super einfach damit zu arbeiten.

In diesem Artikel erkläre ich die Schritte, die ich befolgt habe, um eine Chef-Automatisierungsumgebung auf meinen CentOS 7-Servern zu implementieren.

Voraussetzungen

  • Es wird empfohlen, einen FQDN-Hostnamen zu haben
  • Chef unterstützt nur 64-Bit-Architektur
  • Richtige Netzwerk-/Firewall-/Hostkonfigurationen werden empfohlen

Wie Chef funktioniert?

Chef besteht aus einer Workstation, die für die Entwicklung der Rezepte und Kochbücher konfiguriert ist. Es ist auch so konfiguriert, dass es das Messer ausführt und mit dem Chef-Repo synchronisiert, um es auf dem neuesten Stand zu halten. Es hilft bei der Konfiguration von Unternehmensrichtlinien, einschließlich der Definition von Rollen und Umgebungen und der Sicherstellung, dass kritische Daten in Datenbeuteln gespeichert werden. Sobald diese Rezepte/Kochbücher in den Arbeitsstationen getestet wurden, können wir sie auf unseren Chef-Server hochladen. Der Chef-Server speichert diese Rezepte und weist sie den Knoten je nach Bedarf zu. Grundsätzlich kommuniziert Nodes nur mit dem Chef-Server und nimmt Anweisungen und Rezepte von dort entgegen.

In meinem Demo-Setup habe ich nämlich drei Server

  1. chefserver.test20.com - Chef-Server
  2. chefwork.test20.com - Chef-Workstation
  3. chefnode.test20.com - Chefknoten

Beginnen wir mit dem Erstellen von Workstation.

Arbeitsstation einrichten

Melden Sie sich zunächst auf unserem Server chefwork an Laden Sie dann das Chef-Entwicklungspaket herunter. Sobald das Paket heruntergeladen ist, können wir das Paket mit dem Befehl rpm installieren.

root@chefwork ~]# wget https://packages.chef.io/stable/el/7/chefdk-0.14.25-1.el7.x86_64.rpm
--2016-05-20 03:47:31-- https://packages.chef.io/stable/el/7/chefdk-0.14.25-1.el7.x86_64.rpm
Resolving packages.chef.io (packages.chef.io)... 75.126.118.188, 108.168.243.150
Connecting to packages.chef.io (packages.chef.io)|75.126.118.188|:443... connected.
HTTP request sent, awaiting response... 302
Location: https://akamai.bintray.com/87/879656c7736ef2a061937c1f45c623e99fd57aaa2f6d802e9799d333d7e5342f?__gda__=exp=1463716772~hmac=ef9ce287129ab2f035449b76a1adc32b7bf8cae37f018f59da5a642d3e2650fc&response-content-disposition=attachment%3Bfilename%3D%22chefdk-0.14.25-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream [following]
--2016-05-20 03:47:32-- https://akamai.bintray.com/87/879656c7736ef2a061937c1f45c623e99fd57aaa2f6d802e9799d333d7e5342f?__gda__=exp=1463716772~hmac=ef9ce287129ab2f035449b76a1adc32b7bf8cae37f018f59da5a642d3e2650fc&response-content-disposition=attachment%3Bfilename%3D%22chefdk-0.14.25-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream
Resolving akamai.bintray.com (akamai.bintray.com)... 104.123.250.232
Connecting to akamai.bintray.com (akamai.bintray.com)|104.123.250.232|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 143927478 (137M) [application/octet-stream]
Saving to: ‘chefdk-0.14.25-1.el7.x86_64.rpm’

100%[====================================================================================================>] 14,39,27,478 2.52MB/s in 55s

2016-05-20 03:48:29 (2.49 MB/s) - ‘chefdk-0.14.25-1.el7.x86_64.rpm’ saved [143927478/143927478]

[root@chefwork ~]# rpm -ivh chefdk-0.14.25-1.el7.x86_64.rpm
warning: chefdk-0.14.25-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:chefdk-0.14.25-1.el7 ################################# [100%]
Thank you for installing Chef Development Kit!

Was ist ChefDK?

Das Chef Development Kit enthält alles, um mit Chef zu beginnen, zusammen mit den Tools, die für die Codeverwaltung unerlässlich sind.

  • Es enthält ein neues Befehlszeilentool, "chef"
  • Der Kochbuch-Abhängigkeitsmanager Berkshelf
  • Das Integrationstest-Framework Test Kitchen.
  • ChefSpec zum Testen der Cookbook-Syntax
  • Foodcritic, ein Tool zur statischen Codeanalyse von Kochbüchern.
  • Es enthält auch alle Chef-Tools wie Chef Client, Knife, Ohai und Chef Zero

Beginnen wir damit, einige Rezepte in der Workstation zu erstellen und sie lokal zu testen, um sicherzustellen, dass sie funktionieren.

Erstellen Sie einen Ordner namens chef-repo auf /root/ und in diesem Ordner können wir unsere Rezepte erstellen.

[root@chefwork ~]# mkdir chef-repo
[root@chefwork ~]# cd chef-repo

Creating a recipe called hello.rb.
[root@chefwork chef-repo]# vim hello.rb
[root@chefwork chef-repo]#
[root@chefwork chef-repo]# cat hello.rb
file '/etc/motd' do
content 'Welcome to Chef'
end

Dieses Rezept hello.rb erstellt eine Datei mit dem Namen /etc/motd mit Inhalt"Willkommen bei Chef". Dieses Rezept nutzt die Ressourcendatei, um diese Aufgabe zu verbessern. Jetzt können wir dieses Rezept ausführen, um zu überprüfen, ob es funktioniert.

[root@chefwork chef-repo]# chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* file[/etc/motd] action create (up to date)

Confirm the recipe execution:

[root@chefwork chef-repo]# cat /etc/motd
Welcome to Chef

Datei löschen

Wir können unsere Rezeptdatei ändern, um die erstellte Datei zu löschen und mit dem Befehl chef-apply wie folgt auszuführen:

[root@chefwork chef-repo]# cat hello.rb
file '/etc/motd' do
action :delete
end

[root@chefwork chef-repo]# chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* file[/etc/motd] action delete
- delete file /etc/motd

Ein Paket installieren

Wir ändern unsere Rezeptdatei, um das httpd-Paket auf unserem Server zu installieren und kopieren eine index.html-Datei in das Standard-Dokumentstammverzeichnis, um die Installation zu bestätigen. Um dies zu implementieren, werden das Paket und die Service-Ressourcen verwendet. Die Standardaktion für eine Paketressource ist die Installation, daher müssen wir diese Aktion nicht separat angeben.

[root@chefwork chef-conf]# cat hello.rb
package 'httpd'
service 'httpd' do
action [:enable, :start]
end

file '/var/www/html/index.html' do
content 'Welcome to Apache in Chef'
end
[root@chefwork chef-conf]# chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* yum_package[httpd] action install
 - install version 2.4.6-40.el7.centos.1 of package httpd
 * service[httpd] action enable
 - enable service service[httpd]
 * service[httpd] action start
 - start service service[httpd]
 * file[/var/www/html/index.html] action create (up to date)

Die Befehlsausführung beschreibt eindeutig jede Instanz im Rezept. Es installiert das Apache-Paket, aktiviert und startet den httpd-Dienst auf dem Server. Und es erstellt eine index.html-Datei im Standard-Dokumentstammverzeichnis mit dem Inhalt „Willkommen bei Apache in Chef“. Wir können es also überprüfen, indem wir die Server-IP im Browser ausführen.

Kochbücher erstellen

Jetzt können wir unser erstes Kochbuch erstellen, einen Ordner namens chef-repo im /root-Verzeichnis erstellen und den Befehl „chef generate cookbook [cookbook name]“ ausführen, um unser Kochbuch zu generieren.

root@chefwork chef-repo]# mkdir cookbooks
[root@chefwork chef-repo]# cd cookbooks/
[root@chefwork cookbooks]# chef generate cookbook httpd_deploy
Installing Cookbook Gems:
Compiling Cookbooks...
Recipe: code_generator::cookbook
* directory[/root/chef-repo/cookbook/httpd_deploy] action create
- create new directory /root/chef-repo/cookbook/httpd_deploy

Dies ist die Dateistruktur des erstellten Kochbuchs, sehen wir uns nacheinander die Verwendung dieser Dateien/Ordner innerhalb des Kochbuchs an.

Berksfile :Es ist die Konfigurationsdatei, die BerkShelf hauptsächlich mitteilt, welche Abhängigkeiten das Kochbuch hat, die direkt in dieser Datei oder indirekt über metadata.rb angegeben werden können. Es teilt Berkshelf auch mit, wo es nach diesen Abhängigkeiten suchen soll.

Chefignorieren :Es teilt Chef mit, welche Dateien ignoriert werden sollen, während ein Kochbuch auf den Chef-Server hochgeladen wird.

metadata.rb :Es enthält Metainformationen über Ihr Kochbuch, wie Name, Kontakte oder Beschreibung. Es kann auch die Abhängigkeiten des Kochbuchs angeben.

README.md :Es enthält einen Dokumentationseinstiegspunkt für das Repo.

Rezepte :Enthält die Rezepte des Kochbuchs. Es beginnt mit dem Ausführen der Datei default.rb.

default.rb :Das Standardrezeptformat.

Spezifikationen :Es speichert die Unit-Testfälle Ihrer Bibliotheken.

testen :Es speichert die Unit-Testfälle Ihrer Rezepte.

Eine Vorlage erstellen

Als nächstes werden wir eine Vorlagendatei für uns selbst erstellen. Zuvor haben wir eine Datei mit einigen Inhalten erstellt, die jedoch nicht in unsere Rezepte und Kochbuchstrukturen passen. Sehen wir uns also an, wie wir eine Vorlage erstellen können.

[root@chefwork cookbook]# chef generate template httpd_deploy index.html
Installing Cookbook Gems:
Compiling Cookbooks...
Recipe: code_generator::template
* directory[./httpd_deploy/templates/default] action create
- create new directory ./httpd_deploy/templates/default
* template[./httpd_deploy/templates/default/index.html.erb] action create
- create new file ./httpd_deploy/templates/default/index.html.erb
- update content in file ./httpd_deploy/templates/default/index.html.erb from none to e3b0c4
(diff output suppressed by config)

Wenn Sie nun unsere Kochbuch-Dateistruktur sehen, gibt es einen Ordner, der mit dem Namen Template mit index.html.erb erstellt wurde Datei. Wir können unsere index.html.erb-Vorlagendatei bearbeiten und wie folgt zu unserem Rezept hinzufügen:

root@chefwork default]# cat index.html.erb
Welcome to Chef Apache Deployment
[root@chefwork default]# pwd
/root/chef-repo/cookbook/httpd_deploy/templates/default

Das Rezept mit dieser Vorlage erstellen

[root@chefwork recipes]# pwd
/root/chef-repo/cookbook/httpd_deploy/recipes
[root@chefwork recipes]# cat default.rb
#
# Cookbook Name:: httpd_deploy
# Recipe:: default
#
# Copyright (c) 2016 The Authors, All Rights Reserved.
package 'httpd'
service 'httpd' do
action [:enable, :start]
end

template '/var/www/html/index.html' do
 source 'index.html.erb'
end

Gehen Sie jetzt zurück zu unserem Chef-Repo-Ordner und führen Sie unser Rezept auf unserer Workstation aus/testen Sie es aus.

[root@chefwork chef-repo]# chef-client --local-mode --runlist 'recipe[httpd_deploy]'
[2016-05-20T05:44:40+00:00] WARN: No config file found or specified on command line, using command line options.
Starting Chef Client, version 12.10.24
resolving cookbooks for run list: ["httpd_deploy"]
Synchronizing Cookbooks:
- httpd_deploy (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 3 resources
Recipe: httpd_deploy::default
* yum_package[httpd] action install
 - install version 2.4.6-40.el7.centos.1 of package httpd
 * service[httpd] action enable
 - enable service service[httpd]
 * service[httpd] action start
 - start service service[httpd]
* template[/var/www/html/index.html] action create
 - update content in file /var/www/html/index.html from 152204 to 748cbd
 --- /var/www/html/index.html 2016-05-20 04:18:38.553231745 +0000
 +++ /var/www/html/.chef-index.html20160520-20425-1bez4qs 2016-05-20 05:44:47.344848833 +0000
 @@ -1,2 +1,2 @@
 -Welcome to Apache in Chef
 +Welcome to Chef Apache Deployment

Running handlers:
Running handlers complete
Chef Client finished, 4/4 resources updated in 06 seconds

[root@chefwork chef-repo]# cat /var/www/html/index.html
Welcome to Chef Apache Deployment

Gemäß unserem Rezept ist Apache auf unserer Workstation installiert, der Dienst wird gestartet und beim Booten aktiviert. Und eine Vorlagendatei wurde in unserem Standard-Dokumentenstammverzeichnis erstellt.

Jetzt haben wir unsere Workstation getestet. Es ist Zeit für die Einrichtung des Chef-Servers.

Einrichten des Chef-Servers

Melden Sie sich zunächst bei unserem Chef-Server "chefserver.test20.com" an und laden Sie das mit unserer OS-Version kompatible Chef-Server-Paket herunter.

[root@chefserver ~]# wget https://packages.chef.io/stable/el/7/chef-server-core-12.6.0-1.el7.x86_64.rpm
--2016-05-20 07:23:46-- https://packages.chef.io/stable/el/7/chef-server-core-12.6.0-1.el7.x86_64.rpm
Resolving packages.chef.io (packages.chef.io)... 75.126.118.188, 108.168.243.150
Connecting to packages.chef.io (packages.chef.io)|75.126.118.188|:443... connected.
HTTP request sent, awaiting response... 302
Location: https://akamai.bintray.com/5a/5a36d0ffa692bf788e90315171582a758d4c5d8033a892dca9a81d3c03c44d14?__gda__=exp=1463729747~hmac=86e28bf2d5197154c84b571330b4c897006c2cb7f14cc9fc386c62d8b6e34c2d&response-content-disposition=attachment%3Bfilename%3D%22chef-server-core-12.6.0-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream [following]
--2016-05-20 07:23:47-- https://akamai.bintray.com/5a/5a36d0ffa692bf788e90315171582a758d4c5d8033a892dca9a81d3c03c44d14?__gda__=exp=1463729747~hmac=86e28bf2d5197154c84b571330b4c897006c2cb7f14cc9fc386c62d8b6e34c2d&response-content-disposition=attachment%3Bfilename%3D%22chef-server-core-12.6.0-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream
Resolving akamai.bintray.com (akamai.bintray.com)... 23.15.249.68
Connecting to akamai.bintray.com (akamai.bintray.com)|23.15.249.68|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 481817688 (459M) [application/octet-stream]
Saving to: ‘chef-server-core-12.6.0-1.el7.x86_64.rpm’

100%[====================================================================================================>] 48,18,17,688 2.90MB/s in 3m 53s

[root@chefserver ~]# rpm -ivh chef-server-core-12.6.0-1.el7.x86_64.rpm
warning: chef-server-core-12.6.0-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:chef-server-core-12.6.0-1.el7 ################################# [100%]

Jetzt ist unser Chef-Server installiert. Aber wir müssen den Chef-Server neu konfigurieren, um alle Dienste zu aktivieren und zu starten, die auf dem Chef-Server zusammengestellt sind. Wir können diesen Befehl zur Neukonfiguration ausführen.

root@chefserver ~]# chef-server-ctl reconfigure
Starting Chef Client, version 12.10.26
resolving cookbooks for run list: ["private-chef::default"]
Synchronizing Cookbooks:
- enterprise (0.10.0)
- apt (2.9.2)
- yum (3.10.0)
- openssl (4.4.0)
- chef-sugar (3.3.0)
- packagecloud (0.0.18)
- runit (1.6.0)
- private-chef (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
[2016-05-19T02:38:37+00:00] WARN: Chef::Provider::AptRepository already exists! Cannot create deprecation class for LWRP provider apt_repository from cookbook apt
Chef Client finished, 394/459 resources updated in 04 minutes 05 seconds
Chef Server Reconfigured!

Bitte bestätigen Sie den Dienststatus und ihre PIDs, indem Sie diesen Befehl ausführen.

[root@chefserver ~]# chef-server-ctl status
run: bookshelf: (pid 6140) 162s; run: log: (pid 6156) 162s
run: nginx: (pid 6051) 165s; run: log: (pid 6295) 156s
run: oc_bifrost: (pid 5987) 167s; run: log: (pid 6022) 167s
run: oc_id: (pid 6038) 165s; run: log: (pid 6042) 165s
run: opscode-erchef: (pid 6226) 159s; run: log: (pid 6214) 161s
run: opscode-expander: (pid 6102) 162s; run: log: (pid 6133) 162s
run: opscode-solr4: (pid 6067) 164s; run: log: (pid 6095) 163s
run: postgresql: (pid 5918) 168s; run: log: (pid 5960) 168s
run: rabbitmq: (pid 5876) 168s; run: log: (pid 5869) 169s
run: redis_lb: (pid 5795) 290s; run: log: (pid 6280) 156s

Hurra!! Unser Chef Server ist fertig :). Jetzt können wir die Verwaltungskonsole installieren, um eine Webschnittstelle zum Verwalten unseres Chef-Servers zu erhalten.

Verwaltungskonsole für Chef Server installieren

Wir können die Verwaltungskonsole installieren, indem wir einfach diesen Befehl ausführen "chef-server-ctl install chef-manag e" vom Chef-Server.

[root@chefserver ~]# chef-server-ctl install chef-manage
Starting Chef Client, version 12.10.26
resolving cookbooks for run list: ["private-chef::add_ons_wrapper"]
Synchronizing Cookbooks:
- enterprise (0.10.0)
- apt (2.9.2)
- yum (3.10.0)
- openssl (4.4.0)
- runit (1.6.0)
- chef-sugar (3.3.0)
- packagecloud (0.0.18)
- private-chef (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 4 resources
Recipe: private-chef::add_ons_wrapper
* ruby_block[addon_install_notification_chef-manage] action nothing (skipped due to action :nothing)
* remote_file[/var/opt/opscode/local-mode-cache/chef-manage-2.3.0-1.el7.x86_64.rpm] action create
- create new file /var/opt/opscode/local-mode-cache/chef-manage-2.3.0-1.el7.x86_64.rpm
- update content in file /var/opt/opscode/local-mode-cache/chef-manage-2.3.0-1.el7.x86_64.rpm from none to 098cc4
(file sizes exceed 10000000 bytes, diff output suppressed)
* ruby_block[locate_addon_package_chef-manage] action run
- execute the ruby block locate_addon_package_chef-manage
* yum_package[chef-manage] action install
- install version 2.3.0-1.el7 of package chef-manage
* ruby_block[addon_install_notification_chef-manage] action create
- execute the ruby block addon_install_notification_chef-manage

Running handlers:
-- Installed Add-On Package: chef-manage
- #<Class:0x00000006032b80>::AddonInstallHandler
Running handlers complete
Chef Client finished, 4/5 resources updated in 02 minutes 39 seconds

Nach der Installation der Verwaltungskonsole müssen wir den Chef-Server neu konfigurieren, um den Chef-Server und seine Dienste neu zu starten und diese Änderungen zu aktualisieren.

[root@chefserver ~]# opscode-manage-ctl reconfigure
To use this software, you must agree to the terms of the software license agreement.
Press any key to continue.
Type 'yes' to accept the software license agreement, or anything else to cancel.
yes
Starting Chef Client, version 12.4.1
resolving cookbooks for run list: ["omnibus-chef-manage::default"]
Synchronizing Cookbooks:
- omnibus-chef-manage
- chef-server-ingredient
- enterprise
Recipe: omnibus-chef-manage::default
* private_chef_addon[chef-manage] action create (up to date)
Recipe: omnibus-chef-manage::config
Running handlers:
Running handlers complete
Chef Client finished, 62/79 resources updated in 44.764229437 seconds
chef-manage Reconfigured!

[root@chefserver ~]# chef-server-ctl reconfigure

Jetzt ist unsere Verwaltungskonsole bereit, wir müssen unseren Admin-Benutzer einrichten, um unseren Chef-Server zu verwalten.

Admin-Benutzer/Organisation erstellen

Ich habe den Admin-Benutzer namens chefadmin mit einem Organisations-Linox auf meinem Chef-Server erstellt, um ihn zu verwalten. Wir können den Benutzer mit dem Chef-Befehl chef-server-ctl user-create erstellen und Organisation mit dem Befehlchef-server-ctl org-create.

root@chefserver ~]# chef-server-ctl user-create chefadmin saheetha shameer [email protected] 'chef123' --filename /root/.chef/chefadmin.pem
[root@chefserver ~]#

[root@chefserver .chef]# chef-server-ctl org-create linox Chef Linoxide --association_user chefadmin --filename /root/.chef/linoxvalidator.pem

Unsere Schlüssel werden im Ordner /root/.chef gespeichert. Wir müssen diese Schlüssel vom Chef-Server auf die Workstation kopieren, um die Kommunikation zwischen unserem Chef-Server und der Workstation einzuleiten.

Kopieren der Schlüssel

Ich kopiere meine Benutzer- und Validierungsschlüssel vom Chef-Server auf die Arbeitsstation, um die Verbindung zwischen den Servern zu verbessern.

[root@chefserver .chef]# scp chefadmin.pem [email protected]:/root/chef-repo/.chef/
The authenticity of host '139.162.35.39 (139.162.35.39)' can't be established.
ECDSA key fingerprint is 5b:0b:07:85:9a:fb:b6:59:51:07:7f:14:1b:07:07:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '139.162.35.39' (ECDSA) to the list of known hosts.
[email protected]'s password:
chefadmin.pem 100% 1678 1.6KB/s 00:00
[root@chefserver .chef]#

[root@chefserver .chef]# scp linoxvalidator.pem [email protected]:/root/chef-repo/.chef/
The authenticity of host '139.162.35.39 (139.162.35.39)' can't be established.
ECDSA key fingerprint is 5b:0b:07:85:9a:fb:b6:59:51:07:7f:14:1b:07:07:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '139.162.35.39' (ECDSA) to the list of known hosts.
[email protected]'s password:
linoxvalidator.pem 100% 1678 1.6KB/s 00:00
[root@chefserver .chef]#

Now login to our Management console for our Chef server with the user/password  "chefadmin" created.

Sie werden aufgefordert, eine Organisation über das Panel on Sign up zu erstellen. Erstellen Sie einfach ein anderes.

Laden Sie das Starter-Kit für WorkStation herunter

Wählen Sie eines Ihrer Unternehmen aus und laden Sie das Starter Kit vom Chef-Server auf unsere Workstation herunter.

Nach dem Herunterladen dieses Kits. Verschieben Sie es in Ihren Workstation /root-Ordner und extrahieren Sie es. Dadurch erhalten Sie ein Standard-Starter-Kit zum Starten mit Ihrem Chef-Server. Es enthält ein Chef-Repo.

root@chefwork ~]# ls
chef-starter.zip hello.rb
[root@chefwork~]# unzip chef-starter.zip
Archive: chef-starter.zip
creating: chef-repo/cookbooks/
creating: chef-repo/cookbooks/starter/
creating: chef-repo/cookbooks/starter/recipes/
inflating: chef-repo/cookbooks/starter/recipes/default.rb
creating: chef-repo/cookbooks/starter/files/
creating: chef-repo/cookbooks/starter/files/default/
inflating: chef-repo/cookbooks/starter/files/default/sample.txt
creating: chef-repo/cookbooks/starter/templates/
creating: chef-repo/cookbooks/starter/templates/default/
inflating: chef-repo/cookbooks/starter/templates/default/sample.erb
inflating: chef-repo/cookbooks/starter/metadata.rb
creating: chef-repo/cookbooks/starter/attributes/
inflating: chef-repo/cookbooks/starter/attributes/default.rb
inflating: chef-repo/cookbooks/chefignore
inflating: chef-repo/README.md
inflating: chef-repo/.gitignore
creating: chef-repo/.chef/
creating: chef-repo/roles/
inflating: chef-repo/.chef/knife.rb
inflating: chef-repo/roles/starter.rb
inflating: chef-repo/.chef/chefadmin.pem
inflating: chef-repo/.chef/ln_blog-validator.pem

Dies ist die Dateistruktur für das heruntergeladene Chef-Repository. Es enthält zunächst alle erforderlichen Dateistrukturen.

Kochbuch-Supermarkt

Chef-Kochbücher sind im Kochbuch-Supermarkt erhältlich, wir können hier zum Chef-Supermarkt gehen. Laden Sie die erforderlichen Kochbücher von dort herunter. Ich lade eines der Kochbücher herunter, um Apache von dort zu installieren.

root@chefwork chef-repo]# knife cookbook site download learn_chef_httpd
Downloading learn_chef_httpd from Supermarket at version 0.2.0 to /root/chef-repo/learn_chef_httpd-0.2.0.tar.gz
Cookbook saved: /root/chef-repo/learn_chef_httpd-0.2.0.tar.gz

Extract this cookbook inside the "cookbooks" folder.

[root@chefwork chef-repo]# tar -xvf learn_chef_httpd-0.2.0.tar.gz

Alle erforderlichen Dateien werden automatisch unter diesem Kochbuch erstellt. Wir mussten keine Änderungen vornehmen. Sehen wir uns unsere Rezeptbeschreibung in unserem Rezeptordner an.

[root@chefwork recipes]# cat default.rb
#
# Cookbook Name:: learn_chef_httpd
# Recipe:: default
#
# Copyright (C) 2014
#
#
#
package 'httpd'

service 'httpd' do
 action [:enable, :start]
end

template '/var/www/html/index.html' do
 source 'index.html.erb'
end

service 'iptables' do
 action :stop
end
[root@chefwork recipes]#
[root@chefwork recipes]# pwd
/root/chef-repo/cookbooks/learn_chef_httpd/recipes
[root@chefwork recipes]#

Wir müssen dieses Kochbuch also nur auf unseren Chef-Server hochladen, da es perfekt aussieht.

Validieren der Verbindung zwischen Server und Workstation

Vor dem Hochladen des Kochbuchs müssen wir die Verbindung zwischen unserem Chef-Server und Workstation überprüfen und bestätigen. Stellen Sie zunächst sicher, dass Sie die richtige Knife-Konfigurationsdatei haben.

[root@chefwork .chef]# cat knife.rb
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name "chefadmin"
client_key "#{current_dir}/chefadmin.pem"
validation_client_name "linox-validator"
validation_key "#{current_dir}/linox-validator.pem"
chef_server_url "https://chefserver.test20.com:443/organizations/linox"

cookbook_path ["#{current_dir}/../cookbooks"]

Diese Konfigurationsdatei befindet sich unter /root/chef-repo/.chef Mappe. Die hervorgehobenen Teile sind die wichtigsten Dinge, auf die Sie achten müssen. Jetzt können Sie diesen Befehl ausführen, um die Verbindungen zu überprüfen.

root@chefwork .chef]# knife client list
ERROR: SSL Validation failure connecting to host: chefserver.test20.com - SSL_connect returned=1 errno=0 state=error: certificate verify failed
ERROR: Could not establish a secure connection to the server.
Use `knife ssl check` to troubleshoot your SSL configuration.
If your Chef Server uses a self-signed certificate, you can use
`knife ssl fetch` to make knife trust the server's certificates.

Original Exception: OpenSSL::SSL::SSLError: SSL Error connecting to https://chefserver.test20.com/clients - SSL_connect returned=1 errno=0 state=error: certificate verify failed

Sie können einen SSL-Fehlerbericht sehen. Um diesen Fehler zu beheben, müssen wir das SSL-Zertifikat für unseren Chef-Server abrufen und im Ordner /root/.chef/trusted_certs speichern. Wir können dies tun, indem wir diesen Befehl ausführen.

root@chefwork .chef]# knife ssl fetch
WARNING: Certificates from chefserver.test20.com will be fetched and placed in your trusted_cert
directory (/root/chef-repo/.chef/trusted_certs).

Knife has no means to verify these are the correct certificates. You should
verify the authenticity of these certificates after downloading.

Adding certificate for chefserver.test20.com in /root/chef-repo/.chef/trusted_certs/chefserver_test20_com.crt

Verifying the SSL:

[root@chefwork .chef]# knife ssl check
Connecting to host chefserver.test20.com:443
Successfully verified certificates from `chefserver.test20.com'

[root@chefwork .chef]# knife client list
chefnode
linox-validator
[root@chefwork .chef]# knife user list
chefadmin

Hochladen des Kochbuchs

Wir können unser Kochbuch von der Workstation aus mit dem Knife-Befehl wie folgt auf unseren Chef-Server hochladen:

#knife Kochbuch hochladen learn_chef_httpd

[root@chefwork cookbooks]# knife cookbook upload learn_chef_httpd
Uploading learn_chef_httpd [0.2.0]
Uploaded 1 cookbook.

Überprüfen Sie das Kochbuch über die Chef Server Management-Konsole.

Hinzufügen eines Knotens

Dies ist der letzte Schritt in der Chef-Implementierung. Wir haben eine Workstation und einen Chef-Server eingerichtet und müssen nun unsere Clients zur Automatisierung zum Chef-Server hinzufügen. Ich füge meinen chefnode hinzu an den Server mit dem Messer-Bootstrap-Befehl wie folgt:

[root@chefwork cookbooks]# knife bootstrap 45.33.76.60 --ssh-user root --ssh-password dkfue@321 --node-name chefnode
Creating new client for chefnode
Creating new node for chefnode
Connecting to 45.33.76.60
45.33.76.60 -----> Installing Chef Omnibus (-v 12)
45.33.76.60 downloading https://omnitruck-direct.chef.io/chef/install.sh
45.33.76.60 to file /tmp/install.sh.5457/install.sh
45.33.76.60 trying wget...
45.33.76.60 el 7 x86_64
45.33.76.60 Getting information for chef stable 12 for el...
45.33.76.60 downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=12&p=el&pv=7&m=x86_64
45.33.76.60 to file /tmp/install.sh.5466/metadata.txt
45.33.76.60 trying wget...
45.33.76.60 sha1 4def83368a1349959fdaf0633c4d288d5ae229ce
45.33.76.60 sha256 6f00c7bdf96a3fb09494e51cd44f4c2e5696accd356fc6dc1175d49ad06fa39f
45.33.76.60 url https://packages.chef.io/stable/el/7/chef-12.10.24-1.el7.x86_64.rpm
45.33.76.60 version 12.10.24
45.33.76.60 downloaded metadata file looks valid...
45.33.76.60 downloading https://packages.chef.io/stable/el/7/chef-12.10.24-1.el7.x86_64.rpm
45.33.76.60 to file /tmp/install.sh.5466/chef-12.10.24-1.el7.x86_64.rpm
45.33.76.60 trying wget...
45.33.76.60 Comparing checksum with sha256sum...
45.33.76.60 Installing chef 12
45.33.76.60 installing with rpm...
45.33.76.60 warning: /tmp/install.sh.5466/chef-12.10.24-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
45.33.76.60 Preparing... ################################# [100%]
45.33.76.60 Updating / installing...
45.33.76.60 1:chef-12.10.24-1.el7 ################################# [100%]
45.33.76.60 Thank you for installing Chef!
45.33.76.60 Starting the first Chef Client run...
45.33.76.60 Starting Chef Client, version 12.10.24
45.33.76.60 resolving cookbooks for run list: []
45.33.76.60 Synchronizing Cookbooks:
45.33.76.60 Installing Cookbook Gems:
45.33.76.60 Compiling Cookbooks...
45.33.76.60 [2016-05-20T15:36:41+00:00] WARN: Node chefnode has an empty run list.
45.33.76.60 Converging 0 resources
45.33.76.60
45.33.76.60 Running handlers:
45.33.76.60 Running handlers complete
45.33.76.60 Chef Client finished, 0/0 resources updated in 08 seconds
[root@chefwork chef-repo]#

Dieser Befehl initialisiert auch die Installation des Chef-Clients im Chef-Knoten. Sie können es von der CLI auf der Workstation mit den folgenden Knife-Befehlen überprüfen:

[root@chefwork chef-repo]# knife node list
chefnode

[root@chefwork chef-repo]# knife node show chefnode
Node Name: chefnode
Environment: _default
FQDN: chefnode.test20.com
IP: 45.33.76.60
Run List: recipe[learn_chef_httpd]
Roles: 
Recipes: 
Platform: centos 7.2.1511
Tags:

Verifying it from the Management console.

We can get more information regarding the added node by selecting the node and viewing the Attributes section.

Managing Node Run List

Let's see how we can add a cookbook to the node and manage its runlist from the Chef server. As you see in the screenshot, you can click the Actions tab and select the Edit Runlist option to manage the runlist.

In the Available Recipes, you can see our learn_chef_httpd recipe, you can drag that from the available packages to the current run list and save the runlist.

Now login to your node and just run the command chef-client to execute your runlist.

root@chefnode ~]# chef-client
Starting Chef Client, version 12.10.24
resolving cookbooks for run list: ["learn_chef_httpd"]
Synchronizing Cookbooks:
- learn_chef_httpd (0.2.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 4 resources
Recipe: learn_chef_httpd::default
* yum_package[httpd] action install

Similarly, we can add any number of nodes to your Chef Server depending on its configuration and hardware. I hope this article provided you with the basic understanding of Chef implementation. I would recommend your valuable comments and suggestions on this. Vielen Dank für das Lesen :)

Happy Automation with Chef!!


Cent OS
  1. So installieren Sie git auf RHEL 8 / CentOS 8 Linux-Server/-Workstation

  2. So installieren Sie Minecraft Server unter CentOS 7

  3. So installieren Sie Nginx unter CentOS 8

  4. So installieren Sie PostgreSQL unter CentOS 8

  5. So installieren Sie Teamspeak 3 Server auf CentOS 8

So installieren Sie MySQL 8 unter CentOS 8

So installieren Sie Shoutcast Server auf CentOS 8

So installieren Sie Lighttpd unter CentOS

So installieren Sie VestaCP auf CentOS 6

So installieren Sie Node.js unter CentOS 7

So installieren Sie Chef Workstation unter CentOS 8