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

时间:2015-01-27 10:06:51

标签: chef

在我的运行列表中,我有两个角色

 "run_list": [
    "role[web_server]",
    "role[web_client]"
]

我想只为某些节点执行一个角色,为某些其他节点执行另一个角色。这该怎么做?有什么想法在那里设置一些条件吗?我不想改变我的运行列表。我有这个所有节点通用的运行列表。但我想为少数节点执行一个角色,为少数节点执行另一个运行列表。 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

首先,我建议您重新考虑您的位置,以便没有两个不同的运行列表。有什么理由吗?角色现在不是管理Chef社区中旅游基础设施的流行方式。

运行列表是角色和/或配方的数组,您无法在其中设置任何逻辑。您可以使用逻辑设置节点运行列表,或者使用角色烹饪书(像经典角色一样的食谱)来组织您的基础架构,通常称为包装器烹饪书,您可以在烹饪书的食谱中放置您希望的任何逻辑。查看一些像这样的Wrapper Cookbooks模式的链接,比如one,看一些应用这个的例子。

答案 1 :(得分:0)

您还可以使用角色cookbook,它只是一个包装器手册,其作用类似于一系列“include_recipe”代码行来定义您的运行列表。然后,您可以在“角色”食谱中加入逻辑。