Chef – 测试食谱

Chef – 测试食谱


如果说明书直接部署并在生产服务器上运行,说明书很可能会在生产中分解。防止这种情况发生的最佳方法是在设置环境中测试说明书。

以下是测试步骤。

步骤 1 – 使用以下命令安装说明书。

vipin@laptop:~/chef-repo $ knife cookbook site install <cookbook name> 

第 2 步– 在工作说明书上运行刀说明书测试命令。

vipin@laptop:~/chef-repo $ knife cookbook test VTest  
checking ntp 
Running syntax check on ntp 
Validating ruby files 
Validating templates

第 3 步– 打破食谱中的某些内容并再次测试。

vipin@laptop:~/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

步骤 4 – 再次运行刀具测试命令。

vipin@laptop:~/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: 

工作方法

Knife 食谱测试对食谱中的所有 Ruby 文件以及所有 ERB 模板执行 Ruby 语法检查。它遍历 Ruby 文件并对每个文件运行 Ruby –cRuby -c检查脚本的语法并退出而不运行它。

在遍历所有 Ruby 文件后,knife 食谱测试遍历所有 ERB 模板和管道,由–x到 Ruby –c创建的冗余版本

限制

Knife Cookbook 测试仅对 Ruby 文件和 ERB 模板进行简单的语法检查。我们可以通过使用 ChefSpec 和 test kitchen 进行完全测试驱动。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁