GNU/Linux >> Linux Esercitazione >  >> Cent OS

Crea semplici libri di cucina per chef per gestire la tua infrastruttura CentOS / RHEL

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.


Cent OS
  1. Come creare un bridge di rete su CentOS 7 / RHEL 7

  2. CentOS / RHEL:come creare e ospitare un repository yum su httpd

  3. Come creare una nuova partizione /boot in CentOS/RHEL

  4. Come creare un bridge di rete in CentOS/RHEL

  5. Come creare un banner SSH nel server CentOS/RHEL

Verifica la tua infrastruttura:installa Rudder Agent su CentOS / Ubuntu / Debian

Verifica la tua infrastruttura:installa Rudder Server su CentOS 7 / Ubuntu 16.04 / Debian

Come creare il tuo primo programma Java su CentOS 8

Come creare un utente Sudo in RHEL, CentOS, Rocky e AlmaLinux

Configura il tuo server VPN WireGuard su CentOS/RHEL

3 modi per creare un bridge di rete in RHEL/CentOS 8