我已经创建了一个mongodb主厨菜谱,并且我正在重写该角色在菜谱上的默认属性。
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,因此我创建了另一个角色,类似于上面的角色,但是具有不同的属性值。
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]"
)如果您注意到他们使用的是相同的菜谱,这会传递属性,
我在给客户打电话,
{
"name": "mongo1",
"chef_environment": "development",
"normal": {
"tags": [
]
},
"run_list": [
"role[mongo_datanode_jackey]",
"role[mongo_datanode_meerkat]",
"role[mongo_datanode_zebra]"
]
}然而,当厨师运行它运行的最后一个角色对run_list....any的想法,为什么?
[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我希望每个角色都能应用到服务器上,并使用共同的配方……?
发布于 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"]属性成为数组,并在食谱中迭代这些数组并在循环中执行您的资源。
https://serverfault.com/questions/755617
复制相似问题