Chef - livros de receitas de teste
Caso o livro de receitas seja implantado diretamente e executado no servidor de produção, há grandes chances de que o livro de receitas seja interrompido na produção. A melhor maneira de evitar que isso aconteça é testando o livro de receitas no ambiente de configuração.
A seguir estão as etapas de teste.
Step 1 - Instale o livro de receitas usando o seguinte comando.
[email protected]:~/chef-repo $ knife cookbook site install <cookbook name>
Step 2 - Execute os comandos de teste do livro de receitas da faca no livro de receitas de trabalho.
[email protected]:~/chef-repo $ knife cookbook test VTest
checking ntp
Running syntax check on ntp
Validating ruby files
Validating templates
Step 3 - Quebre algo no livro de receitas e teste novamente.
[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 - Execute o comando de teste de faca novamente.
[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étodo de trabalho
O teste do livro de receitas do Knife executa uma verificação de sintaxe Ruby em todos os arquivos Ruby dentro do livro de receitas, bem como em todos os modelos ERB. Ele percorre arquivos Ruby e executa Ruby–ccontra cada um deles. Rubi–c verifica a sintaxe do script e fecha sem executá-lo.
Depois de passar por todos os arquivos Ruby, o teste do livro de receitas da faca passa por todos os modelos e tubos ERB, a versão redundante criada por –x através de Ruby –c.
Limitações
O teste do livro de receitas do Knife faz apenas uma verificação de sintaxe simples nos arquivos Ruby e modelos ERB. Podemos seguir em frente totalmente testados usando ChefSpec e cozinha de teste.