- 厨师教程
- 厨师 - 主页
- 厨师 - 概述
- 厨师 - 建筑
- Chef - 版本控制系统设置
- 厨师 - 工作站设置
- Chef - 客户端设置
- 厨师 - 测试厨房设置
- 厨师 - 刀具设置
- 厨师 - 独奏设置
- 厨师 - 食谱
- Chef - 食谱依赖项
- 厨师 - 角色
- 厨师 - 环境
- Chef - Chef-Client 作为守护进程
- 厨师 - Chef-Shell
- 厨师 - 测试食谱
- 厨师 - 美食评论家
- 厨师 - ChefSpec
- 使用测试厨房测试食谱
- 厨师 - 节点
- 厨师 - 厨师-客户运行
- 高级厨师
- 动态配置菜谱
- 厨师 - 模板
- Chef - 带有 Chef DSL 的纯 Ruby
- 厨师 - 红宝石宝石与食谱
- 厨师 - 图书馆
- 厨师 - 定义
- Chef - 环境变量
- 厨师 - 数据袋
- Chef - 数据包脚本
- 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 Cookbook 测试将检查所有 ERB 模板和管道,即由–x到 Ruby –c创建的冗余版本。
局限性
Knife Cookbook 测试仅对 Ruby 文件和 ERB 模板进行简单的语法检查。我们可以使用 ChefSpec 和测试厨房进行全面测试。