对于给定的用例,我需要通过自定义LWRP更新节点的标记。我尝试过两种方法:
node[:tags].concat(<new_tags_array>)。这是可行的,但标签不持久化,所以我不能使用它进行搜索。这里有我遗漏的东西吗?
谢谢
编辑:实际上,问题是:是否有可能从提供程序中更新节点属性?
EDIT2:所以这正确地设置了标记:
tags = node[:tags]
tags.concat(new_tags)
node.override[:tags] = tags但是,在每次主厨-客户端运行中,标签都会被重置,所以如果您在包含这些新标记之前(在第二次主厨-客户端运行时)检查是否存在这些新标记,则不会得到任何标记。
发布于 2014-03-03 15:24:42
我发现了问题所在。
总之:最初的问题是我无法在LWRP的提供者中使用厨师的标记/untag方法(可能有一种方法,但我没有找到任何方法),所以我选择修改节点上的‘tag’属性,它保存了所有的标记。
对我来说,在主厨和客户端运行之间保持标签也是很重要的。
实现这一目标的方法是将属性类型设置为normal,根据主厨文档,该属性类型永远不会重置:
在主厨-客户端运行开始时,将重置所有默认属性、覆盖属性和自动属性.厨师-客户端使用Ohai在主厨-客户端运行开始时收集的数据以及在烹饪书、角色和环境中定义的属性重新构建它们。正常属性永远不会重置。然后根据属性优先级将所有属性合并并应用到节点。在主厨-客户端运行结束时,所有默认属性、覆盖属性和自动属性都会消失,只留下一组将持续到下一次主厨-客户端运行的正常属性。
这将使它:
tags = node[:tags]
tags.concat(new_tags)
node.normal[:tags] = tagshttps://stackoverflow.com/questions/22146165
复制相似问题