Chef ist eine Software zur Automatisierung der IT-Infrastruktur, mit der Sie alle Ihre Server und Netzwerkgeräte in Ihrer Organisation verwalten können .
Sie benötigen eine Chef-Workstation, wenn Sie mit dem Chef-Server oder anderen physischen Knoten (Server, Netzwerkgeräte usw.) in Ihrer Infrastruktur interagieren möchten.
Auf einer Koch-Workstation können Sie mit mehreren kochbezogenen Befehlen (z. B. Messer) Kochbücher erstellen oder Rezepte erstellen, die auf den einzelnen Knoten ausgeführt werden. Sie können einen neuen Knoten auch von der Chef-Workstation booten.
In diesem Tutorial wird erläutert, wie Sie die Chef-Workstation auf einem Linux-Server installieren und konfigurieren.
ChefDK herunterladen
ChefDK steht für Chef Development Kit. ChefDK ist für fast alle Plattformen verfügbar, einschließlich Debian-basierter Distributionen, Ubuntu, RedHat-basierter Distributionen wie CentOS, Mac OS X und Windows.
Die aktuelle stabile Version von ChefDK ist 0.11.2. Für RHEL-basierte Systeme ist sie sowohl für Version 6 als auch für Version 7 (d. h. CentOS 6 und CentOS 7) verfügbar. Die verpackte RPM-Version ist nur für die 64-Bit-Version verfügbar.
Laden Sie es von hier herunter oder verwenden Sie die direkte URL wie unten gezeigt.
Verwenden Sie für CentOS 7 Folgendes:
cd ~ wget https://packages.chef.io/stable/el/7/chefdk-0.11.2-1.el7.x86_64.rpm
Verwenden Sie für CentOS 6 Folgendes:
cd ~ wget https://packages.chef.io/stable/el/6/chefdk-0.11.2-1.el6.x86_64.rpm
Installieren Sie ChefDK
Installieren Sie ChefDK mit dem RPM, das wir oben heruntergeladen haben.
# rpm -ivh chefdk-0.11.2-1.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:chefdk-0.11.2-1.el7 ################################# [100%] Thank you for installing Chef Development Kit!
Dadurch wird ChefDK wie unten gezeigt unter /opt/chefdk installiert.
# ls -l /opt/chefdk/ drwxr-xr-x. 2 root root 4096 Mar 3 13:50 bin drwxr-xr-x. 7 root root 62 Mar 3 13:50 embedded -rw-r--r--. 1 root root 13249 Feb 22 14:26 version-manifest.json -rw-r--r--. 1 root root 8233 Feb 22 14:26 version-manifest.txt
Überprüfen Sie die ChefDK-Installation
Führen Sie Chef Verify aus, das alle verschiedenen Komponenten überprüft, die mit ChefDK geliefert werden, um sicherzustellen, dass sie alle ordnungsgemäß und ohne Probleme funktionieren, wie unten gezeigt.
# chef verify Running verification for component 'berkshelf' Running verification for component 'test-kitchen' Running verification for component 'tk-policyfile-provisioner' Running verification for component 'chef-client' Running verification for component 'chef-dk' Running verification for component 'chef-provisioning' Running verification for component 'chefspec' Running verification for component 'generated-cookbooks-pass-chefspec' Running verification for component 'rubocop' Running verification for component 'fauxhai' Running verification for component 'knife-spork' Running verification for component 'kitchen-vagrant' Running verification for component 'package installation' Running verification for component 'openssl' Running verification for component 'inspec' ....... --------------------------------------------- Verification of component 'test-kitchen' succeeded. Verification of component 'chef-dk' succeeded. Verification of component 'chefspec' succeeded. Verification of component 'rubocop' succeeded. Verification of component 'knife-spork' succeeded. Verification of component 'openssl' succeeded. Verification of component 'berkshelf' succeeded. Verification of component 'chef-client' succeeded. Verification of component 'fauxhai' succeeded. Verification of component 'inspec' succeeded. Verification of component 'tk-policyfile-provisioner' succeeded. Verification of component 'kitchen-vagrant' succeeded. Verification of component 'chef-provisioning' succeeded. Verification of component 'package installation' succeeded. Verification of component 'generated-cookbooks-pass-chefspec' succeeded.
Das Folgende ist ein Beispielfall, in dem die Chefverifizierung fehlgeschlagen ist. Bitte beachten Sie auch, dass Ruby von Chef benötigt wird, das in ChefDK eingebettet ist.
# chef verify .. /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/mixlib-shellout-2.2.6/lib/mixlib/shellout.rb:289:in `invalid!': Expected process to exit with [0], but received '1' (Mixlib::ShellOut::ShellCommandFailed) ---- Begin output of /usr/bin/ohai -v ---- STDOUT: STDERR: /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:319:in `to_specs': Could not find 'chef-config' (= 12.8.0) - did find: [chef-config-12.7.2] (Gem::LoadError)
Wir erhalten diese Fehlermeldung:„Could not find ‚chef-config‘ (=12.8.0) – did find:[chef-config-12.7.2] (Gem::LoadError)“
In der obigen Fehlermeldung war die mit ChefDK gelieferte chef-config 12.7.2, eine ältere Version, die in diesem Setup nicht kompatibel war. In diesem Fall habe ich also die chef-config-Version 12.8.0 manuell installiert.
Als ich danach die Chefüberprüfung durchführte, wurde die obige Fehlermeldung nicht angezeigt.
Überprüfen Sie die ChefDK-Version
Wenn Sie den Befehl chef –version ausführen, wird die Versionsnummer von ChefDK und aller damit gelieferten Komponenten wie unten gezeigt angezeigt.
# chef --version Chef Development Kit Version: 0.11.2 chef-client version: 12.7.2 berks version: 4.2.0 kitchen version: 1.5.0
Chef-ENV-Variablen einrichten
Sie sollten auch Chef-bezogene Umgebungsvariablen einrichten. Zum Beispiel:GEM_ROOT, GEM_HOME, GEM_PATH.
export GEM_ROOT="/opt/chefdk/embedded/lib/ruby/gems/2.1.0" export GEM_HOME="/root/.chefdk/gem/ruby/2.1.0" export GEM_PATH="/root/.chefdk/gem/ruby/2.1.0:/opt/chefdk/embedded/lib/ruby/gems/2.1.0"
Wenn Sie Ruby bereits auf Ihrem System installiert haben, sollten Sie Ihre PATH-Variable entsprechend aktualisieren, um das mit chefDK gelieferte Ruby zu verwenden, wie unten gezeigt.
export PATH="/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
Der folgende Befehl zeigt Ihnen alle Chef-Umgebungsvariablen, die gesetzt werden sollten.
chef shell-init bash
Der schnelle Weg, diese Umgebungsvariable festzulegen, besteht darin, die obige Zeile wie unten gezeigt zu Ihrer .bash_profile-Datei hinzuzufügen.
echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile
Firewallregeln für den Zugriff auf Chef Manage
Als Nächstes müssen Sie das Chef-Starterkit von Ihrem bereits laufenden Chef-Server herunterladen.
Um auf Ihre Chef Manage-GUI zuzugreifen, fügen Sie auf dem Chef-Server die folgenden Firewall-Regeln hinzu, um die entsprechenden Ports auf dem Chef-Server zu öffnen.
firewall-cmd --direct --add-rule ipv4 \ filter INPUT_direct 0 -i eth0 -p tcp \ --dport 443 -j ACCEPT firewall-cmd --direct --add-rule ipv4 \ filter INPUT_direct 0 -i eth0 -p tcp \ --dport 80 -j ACCEPT firewall-cmd --direct --add-rule ipv4 \ filter INPUT_direct 0 -i eth0 -p tcp \ --dport 9683 -j ACCEPT firewall-cmd --reload
Laden Sie das Starter-Kit von der Chef Manage GUI herunter
Melden Sie sich bei der Chef Manage GUI an und klicken Sie oben auf die Registerkarte „Administration“. Wählen Sie als Nächstes die Organisation aus der Liste aus. In diesem Beispiel lautet der Organisationsname „Beispiel“. Sobald die Organisation ausgewählt ist, klicken Sie im Menü auf der linken Seite auf „Starter Kit“, wie unten gezeigt.
Wenn Sie auf „Herunterladen“ klicken, erhalten Sie diese Warnmeldung:Sind Sie sicher?:Ihre Benutzer- und Organisationsschlüssel werden zurückgesetzt. Sind Sie sicher, dass Sie dies tun möchten?.
Klicken Sie auf Fortfahren. Dadurch wird die Datei chef-starter.zip auf Ihren lokalen Computer heruntergeladen.
Starter-Kit entpacken
Übertragen Sie die Datei chef-starter.zip auf die Chef-Arbeitsstation und entpacken Sie sie im Home-Verzeichnis von root, wie unten gezeigt.
# cd ~ # unzip chef-starter.zip Archive: chef-starter.zip creating: chef-repo/cookbooks/ creating: chef-repo/cookbooks/starter/ creating: chef-repo/cookbooks/starter/templates/ creating: chef-repo/cookbooks/starter/templates/default/ inflating: chef-repo/cookbooks/starter/templates/default/sample.erb 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/recipes/ inflating: chef-repo/cookbooks/starter/recipes/default.rb creating: chef-repo/cookbooks/starter/attributes/ inflating: chef-repo/cookbooks/starter/attributes/default.rb inflating: chef-repo/cookbooks/starter/metadata.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/ramesh.pem inflating: chef-repo/.chef/example-validator.pem
Wenn Sie den chef-repo-Ordner manuell einrichten, müssen Sie die oben genannten Unterverzeichnisse manuell erstellen und die Datei knife.rb, die Datei organization-validator.pem (zum Beispiel:example-validator.pem) und kopieren username.pem-Datei (zum Beispiel:ramesh.pem) in die oben angezeigten Verzeichnisse.
Holen Sie sich das Chef Server SSL-Zertifikat
Wenn Sie zu diesem Zeitpunkt die Messer-Client-Liste ausführen, erhalten Sie diese Fehlermeldung wie unten gezeigt:„ERROR:SSL Validation failure connection to host certificate verify failed“
# cd ~/chef-repo # knife client list ERROR: SSL Validation failure connecting to host: centos.example.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://centos.example.com/organizations/example/clients - SSL_connect returned=1 errno=0 state=error: certificate verify failed
Die Zertifikatsüberprüfung ist fehlgeschlagen, da das SSL-Zertifikat noch nicht vom Chef-Server heruntergeladen wurde.
Führen Sie dazu den folgenden „knife ssl fetch“-Befehl wie unten gezeigt aus.
# cd ~/chef-repo # knife ssl fetch WARNING: Certificates from centos.example.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.
Dadurch wird das Zertifikat in das folgende truster_certs-Verzeichnis heruntergeladen.
# ls -l /root/chef-repo/.chef/trusted_certs -rw-r--r--. 1 root root 1379 Mar 20 20:17 centos_example_com.crt # cat /root/chef-repo/.chef/trusted_certs/centos_example_com.crt -----BEGIN CERTIFICATE----- MIIDzDCCArSgAwIBAgIBADANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJVUzEQ MA4GA1UECgwHWW91Q29ycDETMBEGA1UECwwKT3BlcmF0aW9uczEbMBkGA1UEAwwS ZXJhdGlvbnMxGzAZBgNVBAMMEmNlbnRvcy5leGFtcGxlLmNvbTCCASIwDQYJKoZI .. .. WLyr2ORLMcck/OGsubabO/koMNTqhl2JJPECNiDJh06MeZ/2+BOwGZSpXDbw+vFE NJAsLfsTzihGWZ58einMFA== -----END CERTIFICATE-----
Endgültige Überprüfung der Chef-Workstation
Wenn die Chef-Workstation ordnungsgemäß funktioniert, werden beim Ausführen der „knife client list“ alle Clients angezeigt, die mit dieser Workstation verbunden sind. Da wir es gerade installiert haben, sehen wir nur den Validator Ihrer Organisation, wie unten gezeigt.
# cd ~/chef-repo # knife client list example-validator
Wenn Sie diesen Befehl auf einer vorhandenen Chef-Workstation ausführen, an die bereits mehrere Server angeschlossen sind, sehen Sie eine Liste aller Server, die vom Chef verwaltet werden.
Im folgenden Beispiel sehen wir 5 Server, die mit dieser Chef-Workstation verbunden sind.
# knife client list example-validator node1 node2 node3 node4 node5