Chef - ServerSpec - 访问节点属性
Chef - ServerSpec - Accessing Node attributes
我正在为我写的一本食谱编写 ServerSpec 测试。测试需要节点属性来通过厨房断言各种事物。
幸运的是,这里有一个指南解释了如何实现这一点:
http://jakshi.com/blog/2014/05/12/accessing-chef-attributes-in-serverspec-tests/
我遇到的问题是,这不起作用:
attrs = attrs.deep_merge(node.override_attrs) unless node.override_attrs.empty?
但这行得通:
attrs = attrs.deep_merge(node.attributes.combined_override) unless node.attributes.combined_override.empty?
我的设置与博客中描述的完全相同。由于缺少 ruby-fu,浏览 code 没有帮助。 chef-client 版本为 11.14.6,Test-Kitchen 版本为 1.3.1
有人可以帮忙吗?有没有其他人有这个问题?谢谢。
更新:这是我为模拟这个而创建的虚拟食谱中的所有属性。
cb-under-test/recipes/default.rb
<Nothing>
cb-under-test/test/fixtures/cookbooks/fake/attributes/default.rb
force_override['important_dir'] = 'test_recipe_force_override'
../env/dummy-env.json
{
"name": "dummy-env",
"description": "Dummy Env",
"cookbook_versions": {
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"override_attributes": {
"important_dir": "env_override"
}
}
根据 the code 没有 override_attrs 方法。
在这里,您将在 node.override
下获得食谱的属性,在 node.env_override
下获得环境的属性,node.combined_override
为您提供深度合并后的结果属性。
博客post已经很老了,你最好使用attrs = node.merged_attributes
编写json文件,并从菜谱、角色和环境中获取结果属性,使用merged_attributes
应避免 ohai
属性,保持 json 大小较低。
我正在为我写的一本食谱编写 ServerSpec 测试。测试需要节点属性来通过厨房断言各种事物。
幸运的是,这里有一个指南解释了如何实现这一点: http://jakshi.com/blog/2014/05/12/accessing-chef-attributes-in-serverspec-tests/
我遇到的问题是,这不起作用:
attrs = attrs.deep_merge(node.override_attrs) unless node.override_attrs.empty?
但这行得通:
attrs = attrs.deep_merge(node.attributes.combined_override) unless node.attributes.combined_override.empty?
我的设置与博客中描述的完全相同。由于缺少 ruby-fu,浏览 code 没有帮助。 chef-client 版本为 11.14.6,Test-Kitchen 版本为 1.3.1
有人可以帮忙吗?有没有其他人有这个问题?谢谢。
更新:这是我为模拟这个而创建的虚拟食谱中的所有属性。
cb-under-test/recipes/default.rb
<Nothing>
cb-under-test/test/fixtures/cookbooks/fake/attributes/default.rb
force_override['important_dir'] = 'test_recipe_force_override'
../env/dummy-env.json
{
"name": "dummy-env",
"description": "Dummy Env",
"cookbook_versions": {
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"override_attributes": {
"important_dir": "env_override"
}
}
根据 the code 没有 override_attrs 方法。
在这里,您将在 node.override
下获得食谱的属性,在 node.env_override
下获得环境的属性,node.combined_override
为您提供深度合并后的结果属性。
博客post已经很老了,你最好使用attrs = node.merged_attributes
编写json文件,并从菜谱、角色和环境中获取结果属性,使用merged_attributes
应避免 ohai
属性,保持 json 大小较低。