GNU/Linux >> Znalost Linux >  >> Linux

Jak nainstalovat a nastavit Chef Workstation na Linuxu

Chef je software pro automatizaci IT infrastruktury, který lze použít ke správě všech vašich serverů a síťových zařízení ve vaší organizaci .

Pracovní stanici šéfkuchaře potřebujete, když chcete komunikovat se serverem šéfkuchaře nebo fyzickými uzly (servery, síťová zařízení atd.) ve vaší infrastruktuře.

Na pracovní stanici šéfkuchaře můžete pomocí několika příkazů souvisejících s šéfkuchařem (například nůž) vytvářet kuchařky nebo vytvářet recepty, které se budou provádět na jednotlivých uzlech. Můžete také spustit nový uzel z pracovní stanice šéfkuchaře.

Tento tutoriál vysvětluje, jak můžete nainstalovat a nakonfigurovat pracovní stanici Chef na serveru Linux.

Stáhnout ChefDK

ChefDK je zkratka pro Chef Development Kit. ChefDK je k dispozici pro téměř všechny platformy včetně distribucí založených na Debianu, Ubuntu, RedHat založených distribucí, jako je CentOS, Mac OS X a Windows.

Aktuální stabilní verze ChefDK je 0.11.2, pro systém založený na RHEL je k dispozici pro verzi 6 i verzi 7 (tj. CentOS 6 a CentOS 7). Zabalená verze RPM je k dispozici pouze pro 64bitovou verzi.

Stáhněte si ji odtud nebo použijte přímou adresu URL, jak je uvedeno níže.

Pro CentOS 7 použijte následující:

cd ~
wget https://packages.chef.io/stable/el/7/chefdk-0.11.2-1.el7.x86_64.rpm

Pro CentOS 6 použijte následující:

cd ~
wget https://packages.chef.io/stable/el/6/chefdk-0.11.2-1.el6.x86_64.rpm

Nainstalovat ChefDK

Nainstalujte ChefDK pomocí RPM, které jsme stáhli výše.

# 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!

To nainstaluje ChefDK pod /opt/chefdk, jak je uvedeno níže.

# 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

Ověřte instalaci ChefDK

Proveďte ověření šéfkuchaře, které ověří všechny různé součásti dodávané s ChefDK, aby se ujistil, že všechny fungují správně a bez problémů, jak je uvedeno níže.

# 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.

Následuje příklad případu, kdy ověření šéfkuchaře selhalo. Upozorňujeme také, že Chef vyžaduje rubín, který je součástí ChefDK.

# 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)

Zobrazuje se tato chybová zpráva:„Nelze najít ‚chef-config‘ (=12.8.0) – našli jsme:[chef-config-12.7.2] (Gem::LoadError)“

Ve výše uvedené chybové zprávě byl chef-config dodaný s ChefDK 12.7.2, což je starší verze, která nebyla v tomto nastavení kompatibilní. V tomto případě jsem tedy nainstaloval chef-config verze 12.8.0 ručně.

Poté, když jsem spustil ověření šéfkuchaře, nezobrazilo výše uvedenou chybovou zprávu.

Ověřte verzi ChefDK

Když spustíte příkaz chef –version, zobrazí se číslo verze ChefDK a všechny součásti, které jsou s ním dodávány, jak je znázorněno níže.

# 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

Nastavení proměnných ENV šéfkuchaře

Měli byste také nastavit proměnné prostředí související s Chef. Například: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"

Také, pokud již máte na svém systému nainstalovaný ruby, měli byste odpovídajícím způsobem aktualizovat proměnnou PATH, aby používala ruby ​​dodávané s chefDK, jak je znázorněno níže.

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"

Následující příkaz vám ukáže všechny proměnné prostředí Chef, které by měly být nastaveny.

chef shell-init bash

Rychlý způsob, jak nastavit tyto proměnné prostředí, je přidat výše uvedený řádek do souboru .bash_profile, jak je znázorněno níže.

echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile

Pravidla brány firewall pro přístup ke správě šéfkuchaře

Dále si musíte stáhnout úvodní sadu Chef ze svého serveru Chef Server, který již běží.

Chcete-li získat přístup ke svému GUI pro správu Chef, na serveru Chef Server přidejte následující pravidla brány firewall pro otevření příslušných portů na serveru Chef.

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

Stáhněte si Starter Kit z Chef Manage GUI

Přihlaste se do GUI pro správu Chef a klikněte na kartu „Správa“ v horní části. Dále vyberte organizaci ze seznamu. V tomto příkladu je název organizace „příklad“. Jakmile je organizace vybrána, klikněte na „Starter Kit“ z nabídky na levé straně, jak je uvedeno níže.

Když kliknete na „Stáhnout“, zobrazí se tato varovná zpráva:Jste si jisti?:Vaše uživatelské a organizační klíče budou resetovány. Opravdu to chcete udělat?.

Klikněte na Pokračovat. Tím se stáhne soubor chef-starter.zip do vašeho místního počítače.

Rozbalte sadu Starter Kit

Přeneste soubor chef-starter.zip na pracovní stanici Chef a rozbalte jej v domovském adresáři root, jak je znázorněno níže.

# 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

Pokud ručně nastavujete složku chef-repo, musíte výše uvedené podadresáře vytvořit ručně a zkopírovat soubor knife.rb, soubor organization-validator.pem (například:example-validator.pem) a username.pem (například:ramesh.pem) do adresářů uvedených výše.

Získejte certifikát Chef Server SSL

Pokud v této fázi spustíte seznam klientů nože, zobrazí se tato chybová zpráva, jak je uvedeno níže:„CHYBA:Selhání ověření SSL připojení k ověření hostitelského certifikátu se nezdařilo“

# 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

Ověření certifikátu se nezdařilo, protože ještě nemáme SSL certifikát stažený ze serveru Chef.

Za tímto účelem spusťte následující příkaz „knife ssl fetch“, jak je znázorněno níže.

# 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.

Tím se certifikát stáhne do následujícího adresáře truster_certs.

# 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-----

Konečné ověření pracovní stanice Chef

Pokud pracovní stanice šéfkuchaře funguje správně, když spustíte „seznam klientů nože“, zobrazí se všichni klienti, kteří jsou k této pracovní stanici připojeni. Protože jsme jej právě nainstalovali, uvidíme pouze validátor vaší organizace, jak je znázorněno níže.

# cd ~/chef-repo

# knife client list
example-validator

Pokud tento příkaz spustíte na existujícím stroji šéfkuchaře, ke kterému je již připojeno několik serverů, zobrazí se seznam všech serverů, které spravuje šéfkuchař.

V následujícím příkladu vidíme 5 serverů připojených k této pracovní stanici šéfkuchaře.

# knife client list
example-validator
node1
node2
node3
node4
node5

Linux
  1. Jak nainstalovat a otestovat Ansible na Linuxu

  2. Jak nainstalovat a používat Flatpak v Linuxu

  3. Jak nainstalovat a používat Traceroute v Linuxu

  1. Jak nainstalovat Elasticsearch a Kibana na Linux

  2. Jak nainstalovat RHEL 8 na pracovní stanici VMware

  3. Jak nainstalovat a nastavit cPanel na linuxovém serveru

  1. Jak nainstalovat Chef Server, Workstation a Chef Client na Ubuntu 18.04

  2. Jak nainstalovat a používat telnet na Kali Linux

  3. Jak nainstalovat a používat Linux Screen?