GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat Chef Workstation/Server/Node na CentOS 7

Chef je automatizační platforma, která konfiguruje a spravuje vaši infrastrukturu. Transformuje infrastrukturu na kód. Je to nástroj pro správu konfigurace založený na Ruby. Tato automatizační platforma se skládá z pracovní stanice Chef, serveru Chef a klientů šéfkuchaře, což jsou uzly spravované serverem Chef. Všechny konfigurační soubory šéfkuchaře, recepty, kuchařky, šablony atd. jsou vytvořeny a testovány na pracovní stanici Chef a nahrány na server Chef Server, který je pak distribuuje do všech možných uzlů registrovaných v organizacích. Je to ideální automatizační framework pro Ceph a OpenStack. Nejen, že nám poskytuje úplnou kontrolu, ale je také velmi snadné s ním pracovat.

V tomto článku vysvětluji kroky, které jsem použil při implementaci automatizačního prostředí Chef na mých serverech CentOS 7.

Předpoklady

  • Doporučujeme mít název hostitele FQDN
  • Chef podporuje pouze 64bitovou architekturu
  • Doporučuje se správná konfigurace sítě/brány firewall/hostitelů

Jak šéfkuchař pracuje?

Šéfkuchař se skládá z pracovní stanice, která je nakonfigurována pro vývoj receptů a kuchařek. Je také nakonfigurován pro provoz nože a synchronizuje se s chef-repo, aby byl stále aktuální. Pomáhá při konfiguraci organizační politiky, včetně definování rolí a prostředí a zajištění, že kritická data jsou ukládána do datových tašek. Jakmile budou tyto recepty/kuchařky otestovány na pracovních stanicích, můžeme je nahrát na náš Chef server. Chef server ukládá tyto recepty a přiděluje je uzlům v závislosti na jejich požadavcích. Uzly v podstatě komunikují pouze se serverem šéfkuchaře a přebírají odtud pokyny a recepty.

V mém demo nastavení mám tři servery, jmenovitě

  1. chefserver.test20.com – Server šéfkuchařů
  2. chefwork.test20.com – pracovní stanice šéfkuchaře
  3. chefnode.test20.com – Uzel šéfkuchaře

Začněme budováním pracovní stanice.

Nastavení pracovní stanice

Nejprve se přihlaste na náš server chefwork, poté si stáhněte vývojový balíček Chef. Jakmile je balíček stažen, můžeme balíček nainstalovat pomocí příkazu rpm.

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!

Co je ChefDK?

Chef Development Kit obsahuje vše, co začíná Chef, spolu s nástroji nezbytnými pro správu kódu.

  • Obsahuje nový nástroj příkazového řádku „chef“
  • Správce závislostí kuchařek Berkshelf
  • Testovací rámec integrace Test Kitchen.
  • ChefSpec pro testování syntaxe kuchařky
  • Foodcritic, nástroj pro provádění statické analýzy kódu v kuchařkách.
  • Má také všechny nástroje šéfkuchaře, jako je Chef Client, Knife, Ohai a Chef Zero

Začněme vytvořením několika receptů na pracovní stanici a otestujte je lokálně, abyste se ujistili, že fungují.

Vytvořte složku s názvem chef-repo na /root/ a uvnitř této složky můžeme vytvářet naše recepty.

[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

Tento recept hello.rb vytvoří soubor s názvem /etc/motd s obsahem „Vítejte v šéfkuchaři“. Tento recept využívá zdrojový soubor k vylepšení tohoto úkolu. Nyní můžeme spustit tento recept a zkontrolovat jeho fungování.

[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

Smazání souboru

Můžeme upravit náš soubor receptu, aby se smazal vytvořený soubor a spustit pomocí příkazu chef-apply, jak je uvedeno níže:

[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

Instalace balíčku

Upravujeme náš soubor receptů, abychom nainstalovali balíček httpd na náš server a zkopírujeme soubor index.html do výchozího kořenového adresáře dokumentu, abychom instalaci potvrdili. K implementaci se používá balíček a servisní prostředky. Výchozí akcí pro zdroj balíčku je instalace, proto tuto akci nemusíme specifikovat samostatně.

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

Provedení příkazu jasně popisuje každou instanci v receptu. Nainstaluje balíček Apache, povolí a spustí službu httpd na serveru. A ve výchozím kořenovém adresáři dokumentu vytvoří soubor index.html s obsahem „Vítejte v Apache v Chefu“. Můžeme to tedy ověřit spuštěním IP serveru v prohlížeči.

Vytváření kuchařek

Nyní můžeme vytvořit naši první kuchařku, vytvořit složku nazvanou chef-repo v adresáři /root a spustit příkaz „chef generation cookbook [název kuchařky]“ pro vygenerování naší kuchařky.

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

Toto je souborová struktura vytvořené kuchařky, podívejme se na použití těchto souborů/složek uvnitř kuchařky jeden po druhém.

Berksfile :Je to konfigurační soubor, který hlavně říká BerkShelfu, jaké jsou závislosti kuchařky, které lze specifikovat přímo uvnitř tohoto souboru nebo nepřímo přes metadata.rb. Také říká Berkshelf, kde má tyto závislosti hledat.

Chefignore :Říká Chefovi, které všechny soubory by měly být ignorovány při nahrávání kuchařky na server Chef.

metadata.rb :Obsahuje metainformace o vaší kuchařce, jako je jméno, kontakty nebo popis. Může také uvádět závislosti kuchařky.

README.md :Obsahuje vstupní bod dokumentace pro repo.

Recepty :Obsahuje recepty kuchařky. Začíná spuštěním souboru default.rb.

default.rb :Výchozí formát receptury.

specifikace :Bude ukládat testovací případy jednotek vašich knihoven.

test :Bude ukládat případy testování jednotek vašich receptů.

Vytvoření šablony

Dále si vytvoříme soubor šablony pro sebe. Dříve jsme vytvořili soubor s určitým obsahem, ale ten nemůže zapadat do našich receptů a struktur kuchařek. tak se podívejme, jak můžeme vytvořit šablonu.

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

Nyní, když vidíte strukturu souborů naší kuchařky, je zde vytvořena složka se šablonou názvu s index.html.erb soubor. Můžeme upravit náš soubor šablony index.html.erb a přidat do našeho receptu, jak je uvedeno níže:

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

Vytvoření receptu pomocí této šablony

[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

Nyní se vraťte do naší složky chef-repo a spusťte/otestujte náš recept na naší pracovní stanici.

[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

Podle našeho receptu je na naší pracovní stanici nainstalován Apache, služba se spouští a povoluje při bootování. A soubor šablony byl vytvořen v našem výchozím kořenovém adresáři dokumentů.

Nyní jsme otestovali naši pracovní stanici. Je čas na nastavení serveru Chef.

Nastavení serveru Chef Server

Nejprve se přihlaste na náš server šéfkuchařů "chefserver.test20.com" a stáhněte si balíček serveru šéfkuchaře bojující s naší verzí operačního systému.

[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%]

Nyní je náš server Chef nainstalován. Musíme však překonfigurovat server Chef, aby povolil a spustil všechny služby, které jsou na serveru Chef složeny. Můžeme spustit tento příkaz pro překonfigurování.

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!

Potvrďte prosím stav služby a jejich pid spuštěním tohoto příkazu.

[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

Hurá!! Náš Chef Server je připraven :). Nyní můžeme nainstalovat konzolu pro správu, abychom získali webové rozhraní pro správu našeho serveru Chef.

Instalace Management Console pro Chef Server

Řídící konzoli můžeme nainstalovat pouhým spuštěním tohoto příkazu „chef-server-ctl install chef-manag e" ze serveru šéfkuchaře.

[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

Po instalaci konzoly pro správu musíme překonfigurovat server šéfkuchaře, aby se restartoval server šéfkuchaře a jeho služby, aby se tyto změny aktualizovaly.

[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

Nyní je naše konzole pro správu připravena, musíme nastavit našeho administrátora, aby spravoval náš Chef Server.

Vytvoření administrátorského uživatele/organizace

Vytvořil jsem administrátora jménem chefadmin s organizací linox na mém serveru šéfkuchařů, abych to mohl spravovat. Uživatele můžeme vytvořit pomocí příkazu chef chef-server-ctl user-create a organizaci pomocí příkazuchef-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

Naše klíče jsou uloženy ve složce /root/.chef. Potřebujeme zkopírovat tyto klíče ze serveru Chef do pracovní stanice, abychom zahájili komunikaci mezi naším serverem Chef a pracovní stanicí.

Kopírování klíčů

Kopíruji své uživatelské klíče a klíče validátoru ze serveru Chef na pracovní stanici, abych zlepšil spojení mezi servery.

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

Požádá o vytvoření organizace z panelu při registraci. Stačí vytvořit jiný.

Stáhněte si Starter Kit for WorkStation

Vyberte si kteroukoli organizaci a stáhněte si Starter Kit ze serveru Chef Server do naší pracovní stanice.

Po stažení této sady. Přesuňte jej do vaší pracovní stanice / kořenové složky a extrahujte. To vám poskytuje výchozí sadu Starter Kit pro spuštění se serverem Chef. Zahrnuje 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

Toto je struktura souborů pro stažené úložiště Chef. Obsahuje všechny požadované struktury souborů pro začátek.

Supermarket s kuchařkami

Kuchařské kuchařky jsou k dostání v Supermarketu kuchařek, do Supermarketu šéfkuchařů můžeme zajít zde. Stáhněte si odtud požadované kuchařky. Stahuji si jednu z kuchařek, abych odtud nainstaloval Apache.

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

Všechny požadované soubory jsou automaticky vytvořeny pod touto kuchařkou. Nevyžadovali jsme žádné úpravy. Pojďme se podívat na náš popis receptu v naší složce receptů.

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

Takže potřebujeme nahrát tuto kuchařku na náš Chef server, protože vypadá perfektně.

Ověření připojení černobílého serveru a pracovní stanice

Před nahráním kuchařky musíme zkontrolovat a potvrdit spojení mezi naším Chef serverem a Workstation. Nejprve se ujistěte, že máte správný konfigurační soubor nože.

[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"]

Tento konfigurační soubor se nachází na adrese /root/chef-repo/.chef složka. Zvýrazněné části jsou hlavní věcí, na kterou je třeba dávat pozor. Nyní můžete spustit tento příkaz a zkontrolovat připojení.

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

Můžete vidět hlášení chyb SSL. Abychom tuto chybu napravili, musíme načíst SSL certifikát pro náš Chef Server a uložit jej do složky /root/.chef/trusted_certs. Můžeme to udělat spuštěním tohoto příkazu.

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

Nahrání kuchařky

Můžeme nahrát naši kuchařku na náš šéfkuchařský server z pracovní stanice pomocí příkazu nože, jak je uvedeno níže:

#knife cookbook upload learn_chef_httpd

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

Ověřte kuchařku z konzoly Chef Server Management.

Přidání uzlu

Toto je poslední krok v implementaci Chef. Nastavili jsme pracovní stanici, server Chef a nyní potřebujeme přidat naše klienty na server Chef pro automatizaci. Přidávám svůj chefnode na server pomocí příkazu bootstrap nože, jak je uvedeno níže:

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

Tento příkaz také inicializuje instalaci klienta Chef v uzlu Chef. Můžete to ověřit z CLI na pracovní stanici pomocí příkazů nože níže:

[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. Doporučil bych k tomu vaše cenné připomínky a návrhy. Thank you for reading this :)

Happy Automation with Chef!!


Cent OS
  1. Jak nainstalovat git na RHEL 8 / CentOS 8 Linux server/pracovní stanici

  2. Jak nainstalovat Minecraft Server na CentOS 7

  3. Jak nainstalovat Teamspeak 3 Server na CentOS 8

  1. Jak nainstalovat Nginx na CentOS 8

  2. Jak nainstalovat PostgreSQL na CentOS 8

  3. Jak nainstalovat MariaDB na CentOS 8

  1. Jak nainstalovat server FreeIPA na CentOS 7

  2. Jak nainstalovat Samba Server na CentOS 8

  3. Jak nainstalovat Centreon na Centos 7