1
使用木偶实例资源类型时,得到$名字,我需要创建三个文件,与此内容:傀儡,一个数组
/tmp/f1.txt: hello /tmp/f1.txt
/tmp/f2.txt: hello /tmp/f2.txt
/tmp/f3.txt: hello /tmp/f3.txt
我尝试如下:
$path="/tmp/"
$my_files = ["$path/f1.txt", "$path/f2.txt", "$path/f3.txt"]
file { $my_files:
ensure => file,
content => "hello $name\n",
}
但是这不起作用,因为$ name是未定义的。
是否有一个变量被实例化为每个'迭代',我可以使用?
PS:我知道,我如下可以创建一个新的资源类型:
define file_with_content {
file { $name:
ensure => file,
content => "hello $name\n",
}
}
$path="/tmp/"
$my_files = ["$path/f1.txt", "$path/f2.txt", "$path/f3.txt"]
file_with_content { $my_files: }
但这需要创建一个新的资源类型, ,我不能在我的情况下做到这一点(不解释这里)。
问题是,如何修改第一个代码以使其工作,而不需要定义新的资源类型,也不需要执行shell代码?
我不能在这里使用一个定义,因为我已经在一个定义,并且似乎我们不能有嵌套的定义。 –
嵌套类/定义通常是一个坏主意:http://docs.puppetlabs.com/puppet/3/reference/lang_classes.html。他们可以放在外面没有太多的麻烦,然后在另一个班级内引用。什么东西阻止你? – xiankai
你可以在一个类中有一个定义或类。但是你不能在define中定义。它是否正确? –