在Puppet数组中使用变量一次两个

在Puppet数组中使用变量一次两个,puppet,Puppet,我在Puppet中有一次迭代来安装Perl模块扩展: $extensions_list = ["extension1", "extension2", ] $extensions_list.each |$extls| { exec { $extls: path => '/usr/local/bin/:/usr/bin/:/bin/', command => "wget http://

我在Puppet中有一次
迭代来安装Perl模块扩展:

$extensions_list = ["extension1",
                    "extension2",
                   ]
$extensions_list.each |$extls| {
  exec { $extls:
    path    => '/usr/local/bin/:/usr/bin/:/bin/',
    command => "wget http://search.cpan.org/CPAN/authors/id/B/BP/BPS/extension1-1.00.tar.gz",
  }
}
我希望它也能考虑到版本号,如:

$extensions_list = ["extension1", "1.00",
                    "extension2", "2.00",
                   ]
$extensions_list.each |$extls| {
  exec { $extls:
    path    => '/usr/local/bin/:/usr/bin/:/bin/',
    command => "wget http://search.cpan.org/CPAN/authors/id/B/BP/BPS/extension1-1.00.tar.gz",
  }
}
因此,我希望它能够使用数组中的前两个变量来安装第一个扩展,然后在添加新扩展时安装下两个扩展,依此类推。这样,我只需将名称和版本号添加到阵列中,阵列就会依次安装它们

我在Puppet中有一次
迭代来安装Perl模块扩展:

$extensions_list = ["extension1",
                    "extension2",
                   ]
$extensions_list.each |$extls| {
  exec { $extls:
    path    => '/usr/local/bin/:/usr/bin/:/bin/',
    command => "wget http://search.cpan.org/CPAN/authors/id/B/BP/BPS/extension1-1.00.tar.gz",
  }
}
嗯,不,不完全是。您有一个
each
操作符来声明与数组中每个元素对应的
Exec
资源。与您所说的潜在重要区别之一是,操作是在目录构建期间进行评估的,因此当时没有实际安装

所以,我希望它能够使用数组中的前两个变量来安装第一个扩展,然后使用下两个变量来安装它,依此类推

您可以使用
slice()
函数将数组拆分为两个元素数组的数组,并对其进行迭代。但是,考虑使用哈希而不是数组作为基础数据结构会有多自然。例如:

$extensions_hash = {"extension1" => "1.00",
                    "extension2" => "2.00",
                   }
$extensions_hash.each |$extls, $extv| {
  exec { $extls:
    path    => '/usr/local/bin/:/usr/bin/:/bin/',
    command => "wget http://search.cpan.org/CPAN/authors/id/B/BP/BPS/$extls-$extv.tar.gz",
  }
}

“傀儡没有内置的机制来做你所描述的事情”:实际上
slice
会做他所要求的事情。然而,我写的答案也是建议只使用散列,因为它肯定是这里更好的路径。只是+1,而不是写一个多余的答案。好吧,太无聊了,@MattSchuchard。实际上,我在写这篇文章之前检查了文档,但不知何故忽略了
slice()
。我会更新的。使用散列非常有效。非常感谢你的帮助!