2017-10-20 6 views
0

最新のapt=6.1.4内にunattended_upgradesを設定するとします。シェフのクックブック配列属性を代用するユースケースは何ですか?

私はそのために、以下の役割を使用

{                                      
    "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はaptの料理 `属性/ default.rbファイルで定義された配列の要素であります。また、docに記述されているようにrole属性とマージされています。これは配列なのでです。

回避方法が1つしか見つかりませんでした。default_attributesセクションの属性をdefault_baseロールにリセットしました。

"default_attributes": { 
    "apt": { 
    "unattended_upgrades" : { 
     "allowed_origins" : [] 
    } 
    } 
} 

結果として、結果のロールには、同じ役割の同じ属性宣言が含まれていますが、優先順位は異なります。

これはなんですか?

Common use case | Good solution | Dirty hack | Unskillful engineer

答えて

0

私はあなたがこのための回避策ですoverride_attributesされるように、これらの第二の意味だと思います。残念ながら、アトリビュートの配列マージの仕組みは非常に扱いにくく、シェフの内部構造に依存しているので、これはおそらく最も簡単なオプションです。

関連する問題