Kuchařky jsou jednou z důležitých součástí systému správy konfigurace Chef; umožňuje nám konfigurovat a provádět specializované úkoly (vytlačit změny) na vzdálených uzlech šéfkuchaře.
V této příručce vytvoříme kuchařky a poté řekneme šéfkuchaři, aby je posunul, tj. provedl kroky popsané v kuchařce do uzlů.
Tato příručka předpokládá, že máte funkční prostředí šéfkuchaře, které zahrnuje server, pracovní stanici a alespoň jeden uzel, do kterého se budou odesílat změny konfigurace.
ČTĚTE: Jak nastavit Chef 12 na CentOS 7 / RHEL 7
Kuchařka:
Chef Cookbooks je jednotka, která uchovává podrobnosti o konfiguraci a zásadách pro uvedení uzlu do určitého stavu. Kuchařky se vytvářejí na pracovní stanici a poté se nahrávají na server Chef. Kuchařka je pak přiřazena k uzlům „run-list“, což je sekvenční seznam akcí, které mají být spuštěny na uzlu, aby se uzel dostal do požadovaného stavu.
Vytvořte si jednoduché kuchařské knihy:
V této části vytvoříme jednoduchou kuchařku k instalaci a konfiguraci webového serveru Apache.
PŘEČTĚTE SI:Konfigurace LAMP na CentOS 7 / RHEL 7
Přihlaste se do své pracovní stanice Chef, přejděte do ~/chef-repo/cookbooks adresář.
cd ~/chef-repo/cookbooks/
Vytvořte kuchařku s názvem „httpd “. Nahraďte „httpd “, pokud to chcete pojmenovat jinak.
chef generate cookbook httpd
Výstup:
Generating cookbook httpd - Ensuring correct cookbook file content - Ensuring delivery configuration - Ensuring correct delivery build cookbook content Your cookbook is ready. Type `cd httpd` to enter it. There are several commands you can run to get started locally developing and testing your cookbook. Type `delivery local --help` to see a full list. Why not start by writing a test? Tests for the default recipe are stored at: test/recipes/default_test.rb If you'd prefer to dive right in, the default recipe can be found at: recipes/default.rb
Přejděte do adresáře své nově vytvořené kuchařky, tj. httpd .
cd httpd
Když přejdete do adresáře nové kuchařky, uvidíte v něm níže uvedenou strukturu adresářů.
Výstup:
-rw-r--r--. 1 root root 47 Nov 12 21:18 Berksfile -rw-r--r--. 1 root root 1133 Nov 12 21:18 chefignore -rw-r--r--. 1 root root 568 Nov 12 21:18 metadata.rb -rw-r--r--. 1 root root 53 Nov 12 21:18 README.md drwxr-xr-x. 2 root root 23 Nov 12 21:18 recipes drwxr-xr-x. 3 root root 38 Nov 12 21:18 spec drwxr-xr-x. 3 root root 20 Nov 12 21:18 test
Recept:
Recept se skládá ze série zdrojů, které definují stav konkrétní služby nebo aplikace, například jeden zdroj může říkat „služba NTP by měla být spuštěna“, jiný může říkat „služba telnet by měla být zastavena“
Recept není omezen pouze na správu služeb; lze jej také použít k provádění příkazů, správě uživatelů a mnohem více.
ČTĚTE:Různé typy zdrojů.
Přejděte do adresáře receptů. Zde můžete vidět soubor s názvem „default.rb “. Tento soubor použijeme k přidání prostředků, které jsou nutné pro spuštění serveru Apache.
cd recipes cat default.rb
Výstup:
Ve výchozím nastavení má soubor řádky záhlaví.
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved.
Instalovat Apache:
Pro začátek přidáme zdroj pro instalaci balíčku Apache.
package 'httpd' do action :install end
Kde,
balíček – Definuje zdroj balíčku
httpd – Název balíčku, který chcete nainstalovat, by měl být legitimní název balíčku.
akce:instalace – Toto určuje akci pro zdroj „balíček “, v našem případě instalace httpd .
Když tento recept běží na uzlu, šéfkuchař zkontroluje, zda je nainstalován Apache, pokud ano, přeskočí tento prostředek a přejde k dalšímu prostředku. Pokud ne, nainstaluje Apache pomocí instalačního programu systému.
Správa služby Apache:
Dále zajistěte, aby se služba Apache spouštěla automaticky při startu systému a také by služba měla být v provozu. Níže uvedený kód dělá to, co požadujeme.
service 'httpd' do action [ :enable, :start ] end
Kde,
služba – Definuje zdroj služby.
httpd – Název služby by měl být legitimním názvem služby.
akce [ :enable, :start ] – Zadejte akce, které chcete provést. V našem případě bude tento zdroj začínat „httpd “ a povolte jej při spuštění.
Indexový soubor:
Naším dalším zdrojem je umístění index.html soubor v kořenovém adresáři dokumentů serveru Apache. Vše, co potřebujete, abyste určili umístění, kam chcete soubor a odkud soubor získat.
cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end
Kde,
soubor_kuchařky – Zdroj pro přenos souborů z podadresáře httpd/files ke zmíněné cestě umístěné na uzlu šéfkuchaře.
zdroj – Zadejte název zdrojového souboru. Soubory se obvykle nacházejí v COOK_BOOKS/files .
režimu – Nastaví oprávnění pro soubor.
Vytvoření indexového souboru:
Protože jsme definovali „soubor_kuchařky ” potřebujeme vytvořit zdrojový soubor “index.html ” uvnitř souborů podadresář vaší kuchařky.
cd ~/chef-repo/cookbooks
Vytvořte podadresář „files “ pod vaší kuchařkou.
mkdir httpd/files
Přidejte jednoduchý text do index.html .
echo "Installed and Setup Using Chef" > httpd/files/index.html
Firewall:
Naším posledním prostředkem bude konfigurace brány firewall tak, aby umožňovala http a https provoz z externích strojů.
execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
Kde,
provést – Zdroj pro spuštění jednoho příkazu.
příkaz – Definuje skutečný příkaz, který chcete na uzlu spustit.
ignore_failure – Pokračujte ve spouštění receptu, i když zdroj z jakéhokoli důvodu selže, bude to užitečné, když systém nemá povolenou bránu firewallD.
Konečná verze default.rb bude vypadat níže.
vi ~chef-repo/cookbooks/httpd/recpies/default.rb
Výstup:
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved. package 'httpd' do action :install end service 'httpd' do action [ :enable, :start ] end cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
Nahrát kuchařku:
Jakmile bude vaše kuchařka hotová, můžete ji nahrát na server Chef.
knife cookbook upload httpd
Výstup:
Uploading httpd [0.1.0] Uploaded 1 cookbook.
Zkontrolujte, zda můžete uvést kuchařku, kterou jste právě nahráli.
knife cookbook list
Výstup:
httpd 0.1.0
Chcete-li kuchařku odebrat (volitelné ).
knife cookbook delete cookbook_name
Přidejte kuchařku do svého uzlu:
Kuchařku můžete přidat dorun_list konkrétního uzlu pomocí následujícího příkazu. Nahraďte chefclient.itzgeek.local s názvem vašeho klientského uzlu.
knife node run_list add chefclient.itzgeek.local httpd
Výstup:
chefclient.itzgeek.local: run_list: recipe[httpd]
Chcete-li odebrat konkrétní recept ze seznamu run_list (volitelné ).
knife node run_list remove chefclient.itzgeek.local recipe[cookbook_name]
Načítání konfigurace:
Přihlaste se do klientského uzlu, kde běží klientský software Chef.
ČTĚTE:Zavedení nového uzlu pomocí nože
Spusťte klienta šéfkuchaře příkaz na klientském uzlu, abyste na serveru Chef zkontrolovali jakýkoli nový run_list a spusťte tyto run_list která mu byla přiřazena.
chef-client
Výstup:
Starting Chef Client, version 12.16.42 resolving cookbooks for run list: ["httpd"] Synchronizing Cookbooks: - httpd (0.1.0) Installing Cookbook Gems: Compiling Cookbooks... Converging 5 resources Recipe: httpd::default * yum_package[httpd] action install - install version 2.4.6-40.el7.centos.4 of package httpd * service[httpd] action enable - enable service service[httpd] * service[httpd] action start - start service service[httpd] * cookbook_file[/var/www/html/index.html] action create (up to date) * execute[httpd_firewall] action run - execute /usr/bin/firewall-cmd --permanent --zone public --add-service http * execute[reload_firewall] action run - execute /usr/bin/firewall-cmd --reload Running handlers: Running handlers complete Chef Client finished, 5/6 resources updated in 24 seconds
To, že to funguje, můžete ověřit návštěvou IP adresy nebo názvu domény vašeho uzlu ve webovém prohlížeči.
http://your-ip-addr-ess/Výstup:

Doplňky:
Šéfkuchařka pro vytvoření uživatele:
K vytvoření nového uživatele můžete použít následující kuchařku. Nahraďte zelenou hodnoty podle vašeho prostředí.
group "raj" do gid 9999 end user 'raj' do comment 'Admin [at] ITzGeek' uid '9999' gid '9999' manage_home true home '/home/raj' shell '/bin/bash' password '$6$89lC6OcN$xGO/4ia1j8YXY5TytLFccCjeITSCkgCgQbFMloF4O/kUWFOWhQBH5/BavEkvMj.0fuGx1pMxoUkKF6s9Tpnoj/' end
To je vše.