对于节点,chef_type是必需的吗?

时间:2016-12-20 20:47:02

标签: json chef chef-attributes

在使用Chef Server的项目中,我们使用以下概念:

  • 节点
  • 作用
  • 环境

环境角色 json文件看起来很好(他们有chef_typejson_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>环境>配方 ,配方与节点位于同一个表格单元格中。

1 个答案:

答案 0 :(得分:2)

我们一直在慢慢修复JSON加载代码,不依赖于json_class自动膨胀位。据我所知chef_type从未实际使用过,但某些测试代码仍可能检查它。

至于优先级问题:roles和envs可以包含默认和覆盖级别的属性。覆盖>正常>默认。一般来说,我们建议不要使用正常水平。它并没有被弃用,但我们正朝着这个方向前进(非常缓慢,因为我们有多年的思考)。