📅  最后修改于: 2020-11-02 03:22:04             🧑  作者: Mango
如果菜谱直接部署并在生产服务器上运行,则菜谱很有可能在生产中中断。防止这种情况发生的最佳方法是在设置环境中测试菜谱。
以下是测试步骤。
步骤1-使用以下命令安装食谱。
vipin@laptop:~/chef-repo $ knife cookbook site install
步骤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:
刀具食谱测试对食谱中的所有Ruby文件以及所有ERB模板执行Ruby语法检查。它循环遍历Ruby文件并针对每个文件运行Ruby –c 。 Ruby –c检查脚本的语法,然后退出而不运行它。
遍历所有Ruby文件之后,刀具食谱测试将遍历所有ERB模板和管道,这是由-x通过Ruby -c创建的冗余版本。
刀食谱测试仅对Ruby文件和ERB模板进行简单的语法检查。我们可以使用ChefSpec和测试厨房进行全面测试。