Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Puppet中创建两次相同的资源_Puppet - Fatal编程技术网

如何在Puppet中创建两次相同的资源

如何在Puppet中创建两次相同的资源,puppet,Puppet,我的要求是使用循环执行一些重复的文件配置工作,如以下内容: $no_of_managers = 2 $array = ['One','two','Three'] define loop() { notice("Configuring The Manager Nodes!!") if ($name == $no_of_managers+1) { notice("Loop Iteration Finished!!!") } else { notice("Itera

我的要求是使用循环执行一些重复的文件配置工作,如以下内容:

$no_of_managers = 2
$array = ['One','two','Three']


define loop() {

notice("Configuring The Manager Nodes!!")

if ($name == $no_of_managers+1) {
    notice("Loop Iteration Finished!!!")
  }
  else
  {
    notice("Iteration Number : $name \n")

    # Doing All Stuff Here 

resource {$array:}

    $next = $name + 1
    loop { $next: }
 }
 }

loop { "1":}

define resource () {
# Doing my other Stuff
notice ("The Parsed value Name : ${name}\n")

}
现在,当第二次迭代运行时,出现以下错误:

Error: Duplicate declaration: Resource[One] is already declared in file 
如何克服这个问题,我正在做的是集群设置。我是木偶的新手,所以非常感谢您的指导

用例:

我正在尝试设置一个具有多个Manager/Worker节点的集群,因此使用此脚本,用户有权选择需要多少Manager节点。因此,第一个循环用于复制必要的文件并创建所需数量的节点

第二个循环用于推送所有.erb模板。由于每个节点的配置稍有不同,.erb文件内部有自己的逻辑


因此,在每次迭代之后,我想将.erb模板推送到相应的节点。

在Puppet 3.x中,您无法以您尝试的方式构建循环

resource { $array: }
$array
内容的循环

你想解决的问题并不十分清楚。如果你能让你的问题更具体一点,我们可能会建议一个实际的实施方案

更新 如果您真的想走这条路,您需要为派生资源生成唯一的名称

$local_names = regsubst($array, '$', "-$name")

resource { $local_names: }
在您定义的类型中,您必须通过删除后缀来检索原始含义

define resource() {
    $orig_name = regsubst($name, '-[0-9]+$', '')
    # use $orig_name where you used $name before
}

请注意,即使导出的资源也必须具有唯一的名称。因此,转换可能必须在接收节点的清单中进行。

您好,我已经编辑了这个问题,循环工作得很好。我有木偶3.6.2。是的,第二个回路在阵列上,我明白了。严格地说,您刚刚构建了一个递归定义;)我会更新我的答案。哇,你真是太棒了…非常感谢…:)