Chef - Test des livres de cuisine

Dans le cas où le livre de recettes est directement déployé et exécuté sur le serveur de production, il y a de fortes chances que le livre de recettes puisse interrompre la production. La meilleure façon d'éviter cela est de tester le livre de recettes dans l'environnement de configuration.

Voici les étapes de test.

Step 1 - Installez le livre de recettes à l'aide de la commande suivante.

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

Step 2 - Exécutez les commandes de test du livre de cuisine du couteau sur le livre de cuisine de travail.

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

Step 3 - Cassez quelque chose dans le livre de cuisine et testez à nouveau.

[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 - Exécutez à nouveau la commande de test de couteau.

[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:

Méthode de travail

Le test du livre de recettes Knife exécute une vérification de la syntaxe Ruby sur tous les fichiers Ruby du livre de recettes ainsi que sur tous les modèles ERB. Il parcourt les fichiers Ruby et exécute Ruby–ccontre chacun d'eux. Rubis–c vérifie la syntaxe du script et se ferme sans l'exécuter.

Après avoir parcouru tous les fichiers Ruby, le test du livre de cuisine du couteau passe par tous les modèles et tuyaux ERB, la version redondante créée par –x à travers Ruby –c.

Limites

Le test du livre de recettes Knife ne fait qu'une simple vérification de la syntaxe des fichiers Ruby et des modèles ERB. Nous pouvons aller de l'avant entièrement testés en utilisant ChefSpec et cuisine de test.