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