Chef infra 在我的运行列表中只执行一个角色

Chef infra 在我的运行列表中只执行一个角色,chef-infra,Chef Infra,在我的跑步列表中,我有两个角色 "run_list": [ "role[web_server]", "role[web_client]" ] 我只想为某些节点执行一个角色,为某些其他节点执行另一个角色。如何做到这一点?有没有办法在那里设置一些条件?我不想更改我的跑步列表。我有一个适用于所有节点的运行列表。但我想为几个节点执行一个角色,为几个节点执行另一个运行列表。 有什么建议吗?首先,我建议你重新考虑你的立场,不要有两个不同的竞选名单。有什么原因吗?目前,在厨师社区中,角色并

在我的跑步列表中,我有两个角色

 "run_list": [
    "role[web_server]",
    "role[web_client]"
]
我只想为某些节点执行一个角色,为某些其他节点执行另一个角色。如何做到这一点?有没有办法在那里设置一些条件?我不想更改我的跑步列表。我有一个适用于所有节点的运行列表。但我想为几个节点执行一个角色,为几个节点执行另一个运行列表。
有什么建议吗?

首先,我建议你重新考虑你的立场,不要有两个不同的竞选名单。有什么原因吗?目前,在厨师社区中,角色并不是管理旅游基础设施的常用方式


运行列表是角色和/或配方的数组,您不能在其中设置任何逻辑。您可以使用逻辑设置节点运行列表,或者使用角色cookbooks cookbook组织您的基础结构,就像经典角色一样,通常称为包装器cookbook,您可以在cookbook的配方中放入任何您想要的逻辑。查看一些关于包装器cookbook模式的链接,例如,查看一些应用此模式的示例。

您也可以使用角色cookbook,它只是一个包装器cookbook,其作用类似于一个角色,具有一系列include\u配方行代码来定义您的运行列表。然后,您可以将逻辑内置到您的角色食谱中。

如果您希望每个节点上有不同的角色,为什么要使用相同的运行列表?让一些节点运行一个角色,而另一些节点运行另一个角色正是运行列表的目的。如何将一个节点标记为服务器,另一个节点标记为客户端?@TejayCardon我有一个自动引导节点的脚本,在该脚本中,我编写了第一个json文件,其中包含运行列表中的所有角色。但我在少数几个节点上执行了一些角色,在其他几个节点上执行了另一些角色。因为在我的自动调用中,我不知道有多少节点?它将突然增加或减少。因此,根据某些条件,例如,如果我的厨师服务器包含web_服务器文件,那么它只执行web_服务器角色。我只执行该运行列表中的一些角色/配方,另一个运行列表中的一些角色/配方node@coderanger我只是为所有节点编写通用运行列表,但我不想执行该运行列表中的所有配方/角色。有可能吗?因为有n个节点,我不想为每个节点设置单独的运行列表。正如Javier指出的,您不能在运行列表中执行任何逻辑,但您可以使用角色烹饪书,并将逻辑放入烹饪书中。如果您确实希望在有条件地执行角色时保持运行列表不变,那么他的建议可能是您最好的,也是唯一的选择。