Kitchen:为节点添加角色

时间:2015-08-26 23:41:49

标签: chef test-kitchen

我们的一个应用程序使用gunicorn,并通过厨师食谱配置。

这本食谱有一些属性,其中一个属于gunicorn版本:

grep 'version' attributes/default.rb
default['myapp']['gunicorn']['version'] = '19.1.1'

仅当节点是特定角色的一部分时,我才想使用版本19.3.0。我创建了一个角色并给它一个属性:

cat ../../roles/gunicorn-19.3.0.rb
name 'gunicorn-19.3.0'

default_attributes(
  'mcnulty' => {
    'gunicorn' => {
      'version' => '19.3.0'
    }
  }
)

鉴于roles属性优先于cookbook属性,此工作。右??

现在我想用厨房测试一下。在我们的kichen.yml我们已经有default套件,我复制并创建了gunicorn-19.3.0套件:

- name: gunicorn-19.3.0
    roles_path: '../../roles'
    run_list:
      - recipe[apt]
      - recipe[build-essential]
      - recipe[myapp]
    attributes: &attributes
      myapp:
        gunicorn:
          query:
            timeout: 5
            workers: 2
            sockdir: /var/run/myapp
          web:
            timeout: 5
            workers: 2
            sockdir: /var/run/myapp

现在我无法弄清楚如何模仿这个主机是gunicorn-19.3.0角色的一部分......

感谢任何帮助。

最佳。

2 个答案:

答案 0 :(得分:2)

将您的角色放在test / integration目录下,它将由chef-zero自动选取:

├── .kitchen.yml
└── test
    └── integration
        └── roles
            └── myrole.json

然后在你的厨房文件中创建两个测试套件,一个使用cookbook配方,另一个使用角色:

suites:
  - name: default
    run_list:
      - recipe[mycookbook::default]
  - name: withrole
    run_list:
      - role[myrole]

使用角色管理tomcat属性的示例:

答案 1 :(得分:0)

谢谢马克,这就是现场:

cat test/integration/roles/gunicorn-19-3-0.json
{
  "name": "gunicorn-19-3-0",
  "override_attributes": {
    "myapp": {
      "gunicorn": {
        "version": "19.3.0"
      }
    }
  }
}

cat .kitchen.yml
 - name: gunicorn-19.3.0
    #roles_path: '../../roles'
    run_list:
      - recipe[apt]
      - recipe[build-essential]
      - recipe[python]
      - recipe[myapp::default]
      - role[gunicorn-19-3-0]
    attributes: &attributes
      myapp:
        gunicorn:
          query:
            timeout: 5
            workers: 2
            sockdir: /var/run/myapp
          web:
            timeout: 5
            workers: 2
            sockdir: /var/run/myapp

安装kitchen converge之后,安装了gunicorn 19.3.0。 谢谢!