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

如何迭代puppet?或者如何避免呢?,puppet,Puppet,我有一个全局字符串变量,它实际上是一个名称数组: “mongo1、mongo2、mongo3” 我在这里做的是使用“,”作为分隔符将它们拆分成一个数组,然后将该数组馈送到define中,以创建我需要的所有实例 问题是,每个实例都有不同的端口。我创建了一个新的stdlib函数来获取数组中名称的索引,并将其提供给port参数 这看起来很糟糕,我不喜欢改变stdlib 所以我想知道如何使用nx2阵列这样的东西来实现这一点 mongo1,端口1;mongo2,端口2;mongo3,端口3 或者两个数组

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

“mongo1、mongo2、mongo3”

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

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

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

所以我想知道如何使用nx2阵列这样的东西来实现这一点

mongo1,端口1;mongo2,端口2;mongo3,端口3

或者两个数组

“mongo1、mongo2、mongo3”和“端口1、端口2、端口3”

我正在使用的模块是:



使用puppet 3.8.0

如果使用puppet>=4.0,请对每个函数使用puppet哈希

定义例如:

它的下一个使用功能,例如:

$my_hash.each |$key, $val| { some code }.

更多关于puppet中迭代的信息。

Hiera可以在查找键时为您提供哈希值,因此在Hiera中可以有如下内容:

mongoinstances:
  mongo1:
    port: 1000
  mongo2:
    port: 1234
然后在hiera中查找该键以获取哈希,并将其传递给将为哈希中的每个条目创建一个资源实例的

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

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

无法执行正确的puppet语法高亮显示,有人可以告诉我如何或添加它吗?使用puppet enterprise,所以它仍然是3.8抱歉,我不熟悉puppet enterprise。如果它有
每一个
功能,那么解决方案应该是有效的。enterprise与开源一样,只是通常有点落后。我将检查函数是否存在。否。它只能在启用“-parser future”的情况下工作。你已经在用木偶4了?不,我还在用木偶3.7.x。但是在4.0中,“未来解析器”已成为“标准解析器”,如何添加$port参数?像这样?mongod_端口=>$port
mongoinstances:
  mongo1:
    port: 1000
  mongo2:
    port: 1234
$mongoinstances = hiera('mongoinstances')
create_resources('mongoconf', $mongoinstances)