Chef - Testing Cookbooks

Nel caso in cui il libro di cucina venga distribuito direttamente ed eseguito sul server di produzione, ci sono alte probabilità che il libro di cucina possa interrompersi durante la produzione. Il modo migliore per evitare che ciò accada è provare il ricettario nell'ambiente di configurazione.

Di seguito sono riportati i passaggi per il test.

Step 1 - Installa il ricettario utilizzando il seguente comando.

[email protected]:~/chef-repo $ knife cookbook site install <cookbook name>

Step 2 - Eseguire i comandi di test del ricettario del coltello sul ricettario funzionante.

[email protected]:~/chef-repo $ knife cookbook test VTest  
checking ntp 
Running syntax check on ntp 
Validating ruby files 
Validating templates

Step 3 - Rompi qualcosa nel ricettario e riprova.

[email protected]:~/chef-repo $ subl cookbooks/VTest/recipes/default.rb 
... 
[ node['ntp']['varlibdir'] 
node['ntp']['statsdir'] ].each do |ntpdir| 
   directory ntpdir do 
      owner node['ntp']['var_owner'] 
      group node['ntp']['var_group'] 
      mode 0755 
   end 
end

Step 4 - Eseguire nuovamente il comando di prova del coltello.

[email protected]:~/chef-repo $ knife cookbook test ntp 
checking ntp 
Running syntax check on ntp 
Validating ruby files 
FATAL: Cookbook file recipes/default.rb has a ruby syntax error: 
FATAL: cookbooks/ntp/recipes/default.rb:25: syntax error, 
unexpected tIDENTIFIER, expecting ']' 
FATAL: node['ntp']['statsdir'] ].each do |ntpdir| 
FATAL: ^ 
FATAL: cookbooks/ntp/recipes/default.rb:25: syntax error, 
unexpected ']', expecting $end 
FATAL: node['ntp']['statsdir'] ].each do |ntpdir| 
FATAL:

Metodo di lavoro

Il test del ricettario Knife esegue un controllo della sintassi di Ruby su tutti i file Ruby all'interno del ricettario e su tutti i modelli ERB. Passa attraverso i file Ruby ed esegue Ruby–ccontro ciascuno di loro. Rubino–c controlla la sintassi dello script e si chiude senza eseguirlo.

Dopo aver esaminato tutti i file Ruby, il test del ricettario del coltello passa attraverso tutti i modelli e le pipe ERB, la versione ridondante creata da –x attraverso Ruby –c.

Limitazioni

Knife cookbook test esegue solo un semplice controllo della sintassi sui file Ruby e sui modelli ERB. Possiamo andare avanti completamente test driven utilizzando ChefSpec e test kitchen.