gpt4 book ai didi

puppet - 如何迭代 puppet ?或者如何避免?

转载 作者:行者123 更新时间:2023-12-01 11:33:00 27 4
gpt4 key购买 nike

我有一个全局字符串变量,它实际上是一个名称数组:

"mongo1,mongo2,mongo3"

我在这里所做的是使用“,”作为分隔符将它们拆分成一个数组,然后将该数组输入到定义中以创建我需要的所有实例。

问题是,每个实例都有不同的端口。我创建了一个新的 stdlib 函数来获取数组中名称的索引,并将其提供给端口参数。

这看起来很糟糕,我不喜欢必须改变 stdlib。

所以我想知道如何使用像 nx2 数组这样的东西来做到这一点?

"mongo1,port1;mongo2,port2;mongo3,port3"

或者两个数组

“mongo1、mongo2、mongo3”和“port1、port2、port3”

class site::mongomodule {
class { 'mongodb':
package_ensure => '2.4.12',
logdir => '/var/log/mongodb/'
}

define mongoconf () {
$index = array_index($::site::mongomodule::mongoReplSetName_array, $name)

mongodb::mongod { "mongod_${name}":
mongod_instance => $name,
mongod_port => 27017 + $index,
mongod_replSet => 'Shard1',
mongod_shardsvr => 'true',
}
}

$mongoReplSetName_array = split(hiera('site::mongomodule::instances', undef), ',')

mongoconf { $mongoReplSetName_array: }
}

我正在使用的模块是这个:

https://github.com/echocat/puppet-mongodb


使用 puppet 3.8.0

最佳答案

当你查找一个键时,Hiera 可以给你一个散列,所以你可以在 hiera 中有这样的东西:

mongoinstances:
mongo1:
port: 1000
mongo2:
port: 1234

然后在 hiera 中查找 key 以获取哈希,并将其传递给 create_resources function这将为散列中的每个条目创建一个资源实例。

$mongoinstances = hiera('mongoinstances')
create_resources('mongoconf', $mongoinstances)

您需要通过添加 $port 参数来更改 mongoconf 以使其工作。每次您想从 hiera 传递一个附加值时,只需将其作为参数添加到您定义的类型即可。

关于puppet - 如何迭代 puppet ?或者如何避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30616553/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com