测试Chef角色和环境

前端之家收集整理的这篇文章主要介绍了测试Chef角色和环境前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Chef的新手,并且一直使用 Test Kitchen来测试我的cookbook的有效性,这非常有用.现在,我正在尝试确保在最初运行Chef之前,生产节点上的特定于环境的属性是正确的.这些将在一个角色中定义.

例如,我可能会使用带有开发设置的Vagrant框进行收敛,这样可以验证菜谱.我希望能够测试生产节点的角色.我想我希望这些测试作为描述我的环境的真相来源.看看Test Kitchen的文档,这似乎超出了它的范围.

我的假设是否正确?在首次在生产节点上运行Chef以确保其具有正确设置之前,是否有更好的方法来测试食谱?

我很高兴地发现chef_zero使用“test / integration”目录作为它的主厨库.

只需创建您的角色

>测试/集成/角色

标准厨师食谱布局.

├── 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

属性/ default.rb

default['demo']['greeting'] = "hello world"

笔记:

>如果没有默认值,Cookbook将无法编译

测试/集成/默认/ 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

笔记:

>集成测试正在查找由role属性设置的内容

测试/集成/角色/ demo.json

{
  "name": "demo","default_attributes": {
    "demo": {
      "greeting": "this came from my role"
    }
  },"run_list": [
    "recipe[demo]"
  ]
}
原文链接:https://www.f2er.com/javaschema/281524.html

猜你在找的设计模式相关文章