我是 Chef 新手,一直在使用测试厨房测试我的食谱的有效性,效果很好。现在,我试图在最初运行 Chef 之前确保生产节点上特定于环境的属性正确。这些将在角色中定义。
例如,我可能有使用带有开发设置的 Vagrant 盒子聚合的菜谱,这会验证菜谱。我希望能够测试生产节点的角色。我想我希望这些测试作为描述我的环境的真实来源。查看 Test Kitchen 的文档,这似乎超出了其范围。
我的假设正确吗?在第一次在生产节点上运行 Chef 之前,是否有更好的方法来测试说明书以确保它具有正确的设置?
我愉快地发现 Chef_zero 使用“test/integration”目录作为 Chef 存储库。
只需在下面创建您的角色
Example
标准厨师食谱布局。
├── attributes
│ └── default.rb
├── Berksfile
├── Berksfile.lock
├── chefignore
├── .kitchen.yml
├── metadata.rb
├── README.md
├── recipes
│ └── default.rb
└── test
└── integration
├── default
│ └── serverspec
│ ├── default_spec.rb
│ └── spec_helper.rb
└── roles
└── demo.json
.kitchen.yml
---
driver:
name: vagrant
provisioner:
name: chef_zero
platforms:
- name: ubuntu-14.04
suites:
- name: default
run_list:
- role[demo]
attributes:
Notes:
- 供应者是 Chef_zero
- 运行列表配置为使用角色
食谱/default.rb
file "/opt/helloworld.txt" do
content "#{node['demo']['greeting']}"
end
属性/default.rb
default['demo']['greeting'] = "hello world"
Notes:
测试/集成/默认/serverspec/default_spec.rb
require 'spec_helper'
describe file('/opt/helloworld.txt') do
it { should be_file }
its(:content) { should match /this came from my role/ }
end
Notes:
测试/集成/角色/demo.json
{
"name": "demo",
"default_attributes": {
"demo": {
"greeting": "this came from my role"
}
},
"run_list": [
"recipe[demo]"
]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)