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.