多次使用多个参数调用puppet定义的资源
我有一个简单的木偶定义的资源,如下所示:多次使用多个参数调用puppet定义的资源,puppet,Puppet,我有一个简单的木偶定义的资源,如下所示: define mything($number, $device, $otherthing) { file{"/place/${number}": ensure => directory } mount { "/place/${number}": device => $device, ensure => mounted, require => F
define mything($number, $device, $otherthing) {
file{"/place/${number}":
ensure => directory
}
mount { "/place/${number}":
device => $device,
ensure => mounted,
require => File["/place/${number}"]
}
file {"/place/${number}/${otherthing}":
ensure => directory,
require => Mount['/place/${number}']
}
}
$array = [
{number => 3, something => 'yes', otherthing => 'whatever'},
{number => 17, something => 'ooo', otherthing => 'text'},
{number => 4, something => 'no', otherthing => 'random'},
]
mything($array)
我需要使用不同的参数多次调用此资源,但如果不显式地重复调用mything()
,我就不知道如何执行此操作
理想情况下,我会将的所有参数存储在某种数组中,然后调用mything($array)
,有点像这样:
define mything($number, $device, $otherthing) {
file{"/place/${number}":
ensure => directory
}
mount { "/place/${number}":
device => $device,
ensure => mounted,
require => File["/place/${number}"]
}
file {"/place/${number}/${otherthing}":
ensure => directory,
require => Mount['/place/${number}']
}
}
$array = [
{number => 3, something => 'yes', otherthing => 'whatever'},
{number => 17, something => 'ooo', otherthing => 'text'},
{number => 4, something => 'no', otherthing => 'random'},
]
mything($array)
但这似乎不起作用。如果我的资源只接受一个参数,而我只有一个平面的值数组,我可以肯定这会起作用,但是我可以对多个命名参数做同样的事情吗?这可能适用于您的情况。在调用
define
类型时,不要在变量中定义数组,而是将其设为参数
define mything($number, $device, $otherthing) {
file{"/place/${number}":
ensure => directory
}
mount { "/place/${number}":
device => $device,
ensure => mounted,
require => File["/place/${number}"]
}
file {"/place/${number}/${otherthing}":
ensure => directory,
require => Mount['/place/${number}']
}
}
mything {
"k1" : number => "3", device => "Yes", otherthing => "Whatever";
"k2" : number => "17", device => "Noo", otherthing => "Text";
"k3" : number => "5", device => "Oui", otherthing => "ZIP";
}
我还没有测试整个东西,我测试的是这个define
,它可以工作:
define mything($number, $device, $otherthing){
notify{"$device is $number not $otherthing":}
}
结果:
Mything[k1]/Notify[Yes is 3 not Whatever]/message:
Mything[k2]/Notify[Noo is 17 not Text]/message:
我已经把它充实了一点——我希望细节不重要,并且有一个合理的通用方法来做到这一点。是的。检查我的答案…很有趣-我不知道你能做到。我想我之所以想把它们放到变量中,是因为我想把这个结构传递给多个define,但这肯定比我原来的定义更简洁。