除了attributes
maven
部分内容
suites:
- name: DEV
attributes:
'ant': &ant
'version': '1.9.3'
'home': '/my/path/ant'
'maven':
'version': 3
'm2_home': '/my/path/maven'
'3':
'version': '3.2.1'
'maven_rc':
'opts': ''
对于我的TESTING
实例,我想继承上述所有属性,maven
除外,我想覆盖(不同版本):
- name: TESTING
attributes:
<<: *ant # re-use ant as it's the same configuration
'maven': # different version for TESTING
'version': 3
'm2_home': '/my/path/maven'
'3':
'version': '3.0.5'
'maven_rc':
'opts': ''
答案 0 :(得分:2)
您需要在平台下编辑.kitchen.yml
以获取您想要通用的任何属性。如果您想更改它们,那么您只需将它们放在具有不同值的套件部分下。
platforms:
- name: ubuntu-12.04
driver_config:
box: ubuntu-12.04
run_list:
- recipe[apt::default]
attributes:
ant: &ant
version: '1.9.3'
home: '/my/path/ant'
maven:
version: 3
m2_home: '/my/path/maven'
3:
version: '3.2.1'
maven_rc:
opts: ''
suites:
- name: default
run_list:
- recipe[cookbook::default]
attributes:
- name: testing
run_list:
- recipe[cookbook::default]
attributes:
maven:
3:
version: '3.0.5'
然后,您可以通过调用node['maven']['version']
来访问配方中的属性,以检索当前值,该值将根据套件部分中的覆盖而改变。
答案 1 :(得分:1)
值得注意的是,您可以在kitchen.yml中使用Erb语法
<% my_attrs = {'foo' => 'bar'} %>
suites:
- name: one
attributes:
<%= my_attrs.to_yaml %>
- name: two
attributes:
<%= my_attrs.merge('baz' => 'whatever').to_yaml %>
过度使用这种情况很快就会导致无法读取的配置,但在适度的情况下它可能很有用。