I libri di cucina sono uno dei componenti importanti nel sistema di gestione della configurazione di Chef; ci consente di configurare ed eseguire attività specializzate (espellere le modifiche) su nodi chef remoti.
In questa guida creeremo libri di cucina e poi diremo a Chef di inviarli, ad esempio, eseguendo i passaggi descritti nel libro di cucina sui nodi.
Questa guida presuppone che tu abbia un ambiente Chef funzionante che include un server, una workstation e almeno un nodo a cui inviare le modifiche alle configurazioni.
LEGGI: Come configurare uno Chef 12 su CentOS 7 / RHEL 7
Ricettario:
Chef Cookbooks è un'unità che contiene la configurazione e i dettagli della politica per portare un nodo in uno stato particolare. I libri di cucina vengono creati su una workstation e quindi caricati sul server Chef. Un libro di cucina viene quindi assegnato ai nodi "run-list" che è un elenco sequenziale di azioni che devono essere eseguite su un nodo per portare il nodo nello stato desiderato.
Crea un semplice ricettario per chef:
In questa parte creeremo un semplice ricettario per installare e configurare un server web Apache.
LEGGI:Configura LAMP su CentOS 7 / RHEL 7
Accedi alla tua workstation Chef, vai al tuo ~/chef-repo/cookbooks directory.
cd ~/chef-repo/cookbooks/
Crea il ricettario chiamato “httpd “. Sostituisci "httpd ", se vuoi chiamarlo in modo diverso.
chef generate cookbook httpd
Risultato:
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
Vai alla directory del tuo ricettario appena creato, ovvero httpd .
cd httpd
Quando entri nella directory del nuovo ricettario, potresti vedere la struttura della directory al suo interno.
Risultato:
-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
Ricetta:
Una ricetta consiste in una serie di risorse che definiscono lo stato di un particolare servizio o di un'applicazione, ad esempio una risorsa potrebbe dire "il servizio NTP dovrebbe essere in esecuzione", un'altra potrebbe dire "il servizio telnet dovrebbe essere interrotto"
La ricetta non si limita alla sola gestione dei servizi; può essere utilizzato anche per eseguire i comandi, la gestione degli utenti, molto altro.
LEGGI:diversi tipi di risorse.
Vai alla directory delle ricette. Lì puoi vedere un file chiamato "default.rb “. Useremo questo file per aggiungere le risorse necessarie per far funzionare il server Apache.
cd recipes cat default.rb
Risultato:
Per impostazione predefinita, il file contiene righe di intestazione.
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved.
Installa Apache:
Per iniziare, aggiungiamo una risorsa per l'installazione del pacchetto apache.
package 'httpd' do action :install end
Dove,
pacchetto – Definisce la risorsa del pacchetto
httpd – Il nome del pacchetto che desideri installare, dovrebbe essere un nome di pacchetto legittimo.
azione:installazione – Questo specifica l'azione per la risorsa "pacchetto “, nel nostro caso, l'installazione di httpd .
Quando questa ricetta viene eseguita sul nodo, lo Chef verificherà se l'Apache è installato, se lo è, salterà questa risorsa e passerà alla risorsa successiva. In caso contrario, installerà Apache utilizzando il programma di installazione del sistema.
Gestisci il servizio Apache:
Quindi, fai in modo che il servizio Apache si avvii automaticamente all'avvio del sistema e anche il servizio dovrebbe essere attivo e funzionante. Sotto il codice fa ciò che abbiamo richiesto.
service 'httpd' do action [ :enable, :start ] end
Dove,
servizio – Definisce la risorsa del servizio.
httpd – Il nome del servizio dovrebbe essere un nome di servizio legittimo.
azione [ :enable, :start ] – Specificare le azioni che si desidera eseguire. Nel nostro caso, questa risorsa inizierà "httpd ” e abilitalo all'avvio.
File indice:
La nostra prossima risorsa riguarda il posizionamento di index.html file nella radice del documento del server Apache. Tutto ciò che serve per specificare la posizione in cui si desidera il file e da dove ottenere il file.
cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end
Dove,
Ricettario_file – Risorsa per trasferire file da una sottodirectory di httpd/files a un percorso menzionato situato su un nodo chef.
fonte – Specificare il nome del file di origine. I file si trovano normalmente in COOK_BOOKS/files .
modalità – Imposta le autorizzazioni per il file.
Creazione del file indice:
Poiché abbiamo definito un "file_libro di cucina ", dobbiamo creare un file sorgente "index.html ” all'interno di file sottodirectory del tuo libro di cucina.
cd ~/chef-repo/cookbooks
Crea una sottodirectory "file ” sotto il tuo libro di cucina.
mkdir httpd/files
Aggiungi un semplice testo in index.html .
echo "Installed and Setup Using Chef" > httpd/files/index.html
Firewall:
La nostra ultima risorsa sarà per configurare il firewall per consentire http e https traffico da macchine esterne.
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
Dove,
esegui – Risorsa per eseguire un singolo comando.
comando – Definisce un comando effettivo che si desidera eseguire sul nodo.
ignore_failure – Continua a eseguire una ricetta anche se una risorsa fallisce per qualsiasi motivo, sarà utile quando il sistema non ha il firewallD abilitato.
La versione finale di default.rb apparirà come sotto.
vi ~chef-repo/cookbooks/httpd/recpies/default.rb
Risultato:
# # 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
Carica il ricettario:
Una volta che il tuo libro di cucina è completo, puoi caricarlo sul tuo server Chef.
knife cookbook upload httpd
Risultato:
Uploading httpd [0.1.0] Uploaded 1 cookbook.
Verifica se puoi elencare il ricettario che hai appena caricato.
knife cookbook list
Risultato:
httpd 0.1.0
Per rimuovere il ricettario (opzionale ).
knife cookbook delete cookbook_name
Aggiungi il ricettario al tuo nodo:
Puoi aggiungere un libro di cucina alla run_list di un particolare nodo usando il comando seguente. Sostituisci chefclient.itzgeek.local con il nome del tuo nodo client.
knife node run_list add chefclient.itzgeek.local httpd
Risultato:
chefclient.itzgeek.local: run_list: recipe[httpd]
Per rimuovere la ricetta particolare da run_list (opzionale ).
knife node run_list remove chefclient.itzgeek.local recipe[cookbook_name]
Recupero della configurazione:
Accedere al nodo client su cui è in esecuzione il software client Chef.
LEGGI:bootstrap di un nuovo nodo con Knife
Gestisci il cliente chef comando sul nodo client per verificare con il server Chef eventuali nuovi run_list ed esegui quelle run_list che gli è stato assegnato.
chef-client
Risultato:
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
Puoi verificare che funzioni visitando l'indirizzo IP o il nome di dominio del tuo nodo tramite un browser web.
http://il-tuo-indirizzo-ip/Risultato:
Extra:
Cucina dello chef per la creazione di un utente:
Puoi utilizzare il seguente ricettario per creare un nuovo utente. Sostituisci il verde valori in base al tuo ambiente.
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
Questo è tutto.