在Puppet数组中使用变量一次两个
我在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://
迭代来安装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()
。我会更新的。使用散列非常有效。非常感谢你的帮助!