在厨师中用什么样的用例来替换cookbook数组属性?
问题描述:
假设我应该在最新的apt=6.1.4
食谱内设置unattended_upgrades
。对于在厨师中用什么样的用例来替换cookbook数组属性?
我用以下作用:
{
"name": "default_base",
"description": "Role applied to all workstations and servers",
"json_class": "Chef::Role",
"default_attributes": {
"apt": {
"unattended_upgrades" : {
"enable": "true",
"allowed_origins" : [
"${distro_id}:${distro_codename}-security"
],
"mail": "[email protected]"
}
}
}
但配置的最后一部分是这样的:
Unattended-Upgrade::Allowed-Origins {
"Ubuntu xenial";
"${distro_id}:${distro_codename}-security";
};
Ubuntu xenial
是容易的食谱中定义的数组元素`属性/ default.rb文件。它与文档中描述的角色属性合并。这是因为它是数组。
我发现只有一个解决方法 - 重置属性default_attributes
部分default_base
角色。如下所示:
"default_attributes": {
"apt": {
"unattended_upgrades" : {
"allowed_origins" : []
}
}
}
因此,得到的角色在同一个角色中包含相同的属性声明,但在不同的优先级中。
这是什么?
Common use case | Good solution | Dirty hack | Unskillful engineer
答
我想你的意思是那些第二是override_attributes
,这是一个办法解决这个。不幸的是,属性中数组合并的机制非常棘手,并且依赖于大量的Chef内部,所以这可能是最简单的选择。