在使用Chef Server的项目中,我们使用以下概念:
环境和角色 json文件看起来很好(他们有chef_type
和json_class
):
ENV.json
{
"name": "ENV",
"chef_type": "environment",
"json_class": "Chef::Environment",
...
"cookbook_versions": {
...
}
}
my_role.json
{
"name": "my_role",
"chef_type": "role",
"json_class": "Chef::Role",
...
"run_list": [
"role[my_role]",
"recipe[my_recipe]"
]
}
但是节点看起来像这样(没有chef_type
,没有json_class
):
my.machine.json
{
"chef_environment": "ENV",
"name": "my.machine",
"normal": {
"key": "val"
},
"run_list": [
"role[my_role]"
]
}
是真正的Chef节点吗?
确实满足以下precedence?
我想如果我有#34;正常"在节点,角色和环境中"key":"value"
,应用了以下优先级(覆盖)顺序:节点>角色>环境,但根据该文档,优先级为 role>环境>配方 ,配方与节点位于同一个表格单元格中。
答案 0 :(得分:2)
我们一直在慢慢修复JSON加载代码,不依赖于json_class
自动膨胀位。据我所知chef_type
从未实际使用过,但某些测试代码仍可能检查它。
至于优先级问题:roles和envs可以包含默认和覆盖级别的属性。覆盖>正常>默认。一般来说,我们建议不要使用正常水平。它并没有被弃用,但我们正朝着这个方向前进(非常缓慢,因为我们有多年的思考)。