角色的run_list已被env_run_lists覆盖

时间:2015-01-23 23:18:44

标签: chef chef-solo

我似乎无法理解为什么我会在不同的环境中获得不同的运行结果。 我有以下设置:

node.json文件

{"run_list:" ["role[webfront]"]}

webfront.json角色:

{
    "name": "webfront",
    "chef_type": "role",
    "json_class": "Chef::Role",
    "description": "The base role for systems that serve HTTP traffic",

    "default_attributes": {},

    "override_attributes": {},

    "run_list": [
            "recipe[apt]",
            "recipe[java]",
            "role[apache-server]",
            "role[node-server]"
    ],

    "env_run_lists" : {
            "sandbox" : [
                    "role[redis-server]"
            ],
            "dev": [
                    "role[redis-server]"
            ]
    }

}

如果我跑:

sudo chef-solo -c solo.rb -j node.json -E sandbox

如果我在没有任何环境的情况下运行它,我会得到不同的结果:

sudo chef-solo -c solo.rb -j node.json

当我加入"沙盒"在环境中,只有env_run_lists食谱包含在厨师运行中

为什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

因为这是该功能的工作原理。如果您假设附加了特定于环境的运行列表而不是替换将大大限制该功能的默认值,因为您将无法从默认或更改顺序中删除内容。