嬉しいことに、chef_zero は「test/integration」ディレクトリをchef リポジトリとして使用していることがわかりました。
下にロールを作成するだけです
例
標準の Chef クックブック レイアウト。
├── 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:
ノート:
- プロビジョナーはchef_zero
- ロールを使用するようにランリストが構成されている
レシピ/default.rb
file "/opt/helloworld.txt" do
content "#{node['demo']['greeting']}"
end
属性/デフォルト.rb
default['demo']['greeting'] = "hello world"
ノート:
- クックブックはデフォルトなしではコンパイルされません
テスト/統合/デフォルト/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
ノート:
- 統合テストは、ロール属性によって設定されたコンテンツを探しています
テスト/統合/役割/demo.json
{
"name": "demo",
"default_attributes": {
"demo": {
"greeting": "this came from my role"
}
},
"run_list": [
"recipe[demo]"
]
}