Chef - Solo Setup

Chef-Solo è uno strumento open source che viene eseguito localmente e consente di eseguire il provisioning delle macchine ospiti utilizzando i ricettari Chef senza la complicazione di alcuna configurazione client e server Chef. Aiuta a eseguire libri di cucina su un server auto-creato.

Prima di eseguire Chef-Solo sulla macchina locale, è necessario installare i seguenti due file sulla macchina locale.

  • Solo.rb - Questo file indica a Chef dove trovare libri di cucina, ruoli e sacchetti di dati.

  • Node.json - Questo file imposta l'elenco delle esecuzioni e qualsiasi attributo specifico del nodo, se richiesto.

Configurazione solo.rb

Di seguito sono riportati i passaggi per configurare solo.rb.

Step 1 - Crea un file solo.rb all'interno del repository chef.

current_dir       = File.expand_path(File.dirname(__FILE__)) 
file_cache_path   "#{current_dir}" 
cookbook_path     "#{current_dir}/cookbooks" 
role_path         "#{current_dir}/roles" 
data_bag_path     "#{current_dir}/data_bags"

Step 2 - Aggiungi il file al repository git.

$ git add solo.rb

Step 3 - Crea un file node.json all'interno del repository chef con il seguente contenuto.

{ 
   "run_list": [ "recipe[ntp]" ] 
}

Step 4 - Prendi il ricettario ntp all'interno del repository chef usando il coltello.

[email protected]:~/chef-repo $ knife cookbook site install ntp 
Installing ntp to /Users/mma/work/chef-repo/cookbooks 
…TRUNCATED OUTPUT… 
Cookbook ntp version 1.3.0 successfully installed

Step 5 - Aggiungi il file node.json a Git.

$ git add node.json

Step 6 - Eseguire il commit e il push dei file in git repo.

[email protected]:~/chef-repo $ git commit -m "initial setup for Chef Solo" 
[email protected]:~/chef-repo $ git push 
Counting objects: 4, done. 
Delta compression using up to 4 threads. 
...TRUNCATED OUTPUT... 
To [email protected]:mmarschall/chef-repo.git 
b930647..5bcfab6 master -> master

Esecuzione del ricettario su Node

Step 1 - Accedi al nodo in cui si desidera fornire lo Chef-Solo.

Step 2 - Clona il repository Chef sulla macchina.

$ git clone $URL_PATH

Step 3 - cd al repository dello chef.

$ cd chef-repo

Infine, esegui Chef-Solo per far convergere il nodo -

$ sudo chef-solo -c solo.rb -j node.json 
[2017-20-08T22:54:13+01:00] INFO: *** Chef 11.0.0 *** 
[2017-20-08T22:54:13+01:00] INFO: Setting the run_list to 
["recipe[ntp]"] from JSON 
...TRUNCATED OUTPUT... 
[2012-12-08T22:54:16+01:00] INFO: Chef Run complete in 2.388374 
seconds 
[2012-12-08T22:54:16+01:00] INFO: Running report handlers

solo.rb configura Chef-Solo per cercare i suoi libri di cucina, ruoli e contenitori di dati all'interno della directory corrente: il repository Chef.

Chef-Soloprende la configurazione del nodo da un file JSON. Nel nostro esempio, l'abbiamo chiamato node.json. Se intendi gestire più server, avrai bisogno di un file separato per ogni nodo. Quindi, Chef-Solo esegue semplicemente un'esecuzione Chef in base ai dati di configurazione trovati in solo.rb e node.json.