首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >厨师共同菜谱多重角色

厨师共同菜谱多重角色
EN

Server Fault用户
提问于 2016-02-11 17:15:36
回答 1查看 1.1K关注 0票数 0

我已经创建了一个mongodb主厨菜谱,并且我正在重写该角色在菜谱上的默认属性。

代码语言:javascript
运行
复制
name 'mongo_datanode_jackey'
description 'this module is currently under testing...'

override_attributes(
    susemongodb:  {
        node_type:  'datanode',
        node_nickname: 'jackey',
        port:  '27018',
        is_replicaset_node: true,
        is_cluster_node: true,
        replicaset_name: 'myreplica',
        clusterRole: 'configsvr',
     }

)

run_list(
  "recipe[susemongodb::setupmachine]",
  "recipe[susemongodb::datanode]"
)

现在,我想在同一个VM中拆分多个datanodes,因此我创建了另一个角色,类似于上面的角色,但是具有不同的属性值。

代码语言:javascript
运行
复制
name 'mongo_datanode_meerkat'
description 'this module is currently under testing...'

override_attributes(
    susemongodb:  {
        node_type:  'datanode',
        node_nickname: 'meerkat',
        port:  '27019',
        is_replicaset_node: true,
        is_cluster_node: true,
        replicaset_name: 'myreplica',
        clusterRole: 'configsvr',
     }

)

run_list(
  "recipe[susemongodb::setupmachine]",
  "recipe[susemongodb::datanode]"
)

如果您注意到他们使用的是相同的菜谱,这会传递属性,

我在给客户打电话,

代码语言:javascript
运行
复制
{
  "name": "mongo1",
  "chef_environment": "development",
  "normal": {
    "tags": [

    ]
  },
  "run_list": [
  "role[mongo_datanode_jackey]",
  "role[mongo_datanode_meerkat]",
  "role[mongo_datanode_zebra]"
]

}

然而,当厨师运行它运行的最后一个角色对run_list....any的想法,为什么?

代码语言:javascript
运行
复制
[2016-02-11T16:51:35+00:00] INFO: Forking chef instance to converge...
[2016-02-11T16:51:35+00:00] INFO: *** Chef 12.6.0 ***
[2016-02-11T16:51:35+00:00] INFO: Chef-client pid: 14010
[2016-02-11T16:51:40+00:00] INFO: Run List is [role[mongo_datanode_jackey], role[mongo_datanode_meerkat], role[mongo_datanode_zebra]]
[2016-02-11T16:51:40+00:00] INFO: Run List expands to [susemongodb::setupmachine, susemongodb::datanode]
[2016-02-11T16:51:40+00:00] INFO: Starting Chef Run for mongo1

我希望每个角色都能应用到服务器上,并使用共同的配方……?

EN

回答 1

Server Fault用户

发布于 2016-02-11 21:31:36

节点只能对给定属性(如node["susemongodb"]["node_nickname"])具有一个值值,并且这些值是在编译阶段确定的(参见“阶段”这里)。

因此,在您的示例中,假设没有对较高优先进行重写,则将使用运行列表中最后一个角色的值。

此外,在开始收敛阶段之前,初始运行列表将扩展到单个菜谱。一个菜谱只能在扩展的运行列表中出现一次,这就是为什么您可以获得:

INFO: Run List expands to [susemongodb::setupmachine, susemongodb::datanode]

我不知道您的食谱是如何设置的,但是要实现您想要的结果,可以让node["susemongodb"]["node_nickname"]node["susemongodb"]["port"]属性成为数组,并在食谱中迭代这些数组并在循环中执行您的资源。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/755617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档