测试厨房:如何读取 kitchen.yml 中的平台特定属性
test-kitchen: how to read platform specific attributes in kitchen.yml
在我的 .kitchen.yml
配置中,我尝试根据平台版本应用属性。我的厨房配置如下:
platforms:
- name: centos-6.3
driver_plugin: ec2
driver:
image_id: ami-xxxxxxxx
attributes:
pg_version: "9.3"
- name: centos-6.5
driver_plugin: ec2
driver:
image_id: ami-yyyyyyyy
attributes:
pg_version: "9.4"
在 kitchen converge
过程中,我无法正确获取 pg_version
值。对于我的厨师脚本 pp node.debug_value('pg_version')
中的这段代码,输出如下:
[["set_unless_enabled?", false],
["default", :not_present],
["env_default", :not_present],
["role_default", :not_present],
["force_default", :not_present],
["normal", "9.4"],
["override", :not_present],
["role_override", :not_present],
["env_override", :not_present],
["force_override", :not_present],
["automatic", :not_present]]
我不是很清楚这个结果。我假设我在 platforms
yml 部分中指定的属性的优先级是 normal
,那么我怎样才能得到它呢?
用户danieljimenez also raised similar question .
各种优先级别合并为一个 node
对象。在您的情况下,您需要使用 node['pg_version']
访问它。设置值时只需要node.default
、node.set
、node.override
即可。
在我的 .kitchen.yml
配置中,我尝试根据平台版本应用属性。我的厨房配置如下:
platforms:
- name: centos-6.3
driver_plugin: ec2
driver:
image_id: ami-xxxxxxxx
attributes:
pg_version: "9.3"
- name: centos-6.5
driver_plugin: ec2
driver:
image_id: ami-yyyyyyyy
attributes:
pg_version: "9.4"
在 kitchen converge
过程中,我无法正确获取 pg_version
值。对于我的厨师脚本 pp node.debug_value('pg_version')
中的这段代码,输出如下:
[["set_unless_enabled?", false],
["default", :not_present],
["env_default", :not_present],
["role_default", :not_present],
["force_default", :not_present],
["normal", "9.4"],
["override", :not_present],
["role_override", :not_present],
["env_override", :not_present],
["force_override", :not_present],
["automatic", :not_present]]
我不是很清楚这个结果。我假设我在 platforms
yml 部分中指定的属性的优先级是 normal
,那么我怎样才能得到它呢?
用户danieljimenez also raised similar question
各种优先级别合并为一个 node
对象。在您的情况下,您需要使用 node['pg_version']
访问它。设置值时只需要node.default
、node.set
、node.override
即可。