2017-10-20 88 views
0

假設我應該在最新的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

回答

0

我想你的意思是那些第二是override_attributes,這是一個辦法解決這個。不幸的是,屬性中數組合並的機制非常棘手,並且依賴於大量的Chef內部,所以這可能是最簡單的選擇。