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 –c。Ruby -c检查脚本的语法并退出而不运行它。
在遍历所有 Ruby 文件后,knife 食谱测试遍历所有 ERB 模板和管道,由–x到 Ruby –c创建的冗余版本。
限制
Knife Cookbook 测试仅对 Ruby 文件和 ERB 模板进行简单的语法检查。我们可以通过使用 ChefSpec 和 test kitchen 进行完全测试驱动。