![在 Puppet 中使用数组](https://linux22.com/image/546160/%E5%9C%A8%20Puppet%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%95%B0%E7%BB%84.png)
我有一个变量$IP = [ "91" , "92" ]
和$IPPriveeInstance = "10.248.33.$IP"
。
你猜对了,我想使用这个变量2次,但是当我打印时IPPriveeInstance
,我得到的输出是10.248.33.9192。
答案1
Puppet 不会迭代数组项。下面的示例使用 inline_template 进行演示,但您应该使用自定义函数来执行此任务。
$ip = ['91', '92']
$address = '10.248.33.'
$array = inline_template("<%= ip.collect{|x| address+x.to_s} %>")
你也可以通过 Ruby DSL 来编写:http://projects.puppetlabs.com/projects/1/wiki/Ruby_Dsl
答案2
当您需要单独获取数组的各个部分时,您尝试一次引用整个数组。 试试这个:
$IPPriveeInstance = "10.248.33.$IP[0]"
$IPPriveeInstance = "10.248.33.$IP[1]"
数组中的第一个索引始终为零。
答案3
Puppet 7 支持迭代(当然也包括早期版本 5、6):
$ip = ['91', '92']
$ip.each |String $value| {
$private = "10.248.33.$value"
notice("IP: $private")
}
输出为:
$ puppet apply test.pp
Notice: Scope(Class[main]): IP: 10.248.33.91
Notice: Scope(Class[main]): IP: 10.248.33.92