Puppet:基于模板的多个文件
我有几个文件,我需要由Puppet创建,都基于模板。例如:Puppet:基于模板的多个文件,puppet,Puppet,我有几个文件,我需要由Puppet创建,都基于模板。例如: /etc/my-project/a.ini /etc/my-project/b.ini /etc/my-project/c.ini 我想做的是确保所有这些文件在Puppet中使用一条语句。大概是这样的: define myFile { file { "/ect/init.d/$name.ini": ensure => file, content => template("myProject/myFil
/etc/my-project/a.ini
/etc/my-project/b.ini
/etc/my-project/c.ini
我想做的是确保所有这些文件在Puppet中使用一条语句。大概是这样的:
define myFile {
file { "/ect/init.d/$name.ini":
ensure => file,
content => template("myProject/myFiles/$name.erb"),
}
}
myFile { ['a', 'b', 'c']: }
然而,这似乎不起作用(灵感来自)。我错过了什么?如果不是作为
$name
,如何访问文件名并使用它?您的数组声明很好,但实际上您正在尝试创建多个模板,所有模板都使用不同的文件名$name.erb
。您应该将其更改为固定的模板名称,如template.erb
另外要确保模板文件的位置正确
- 如果您的清单位于模块中,则模板应位于
并称为module\u name/templates/template.erb
template(“模板目录下的模块名称/文件”)
- 如果它是一个独立的清单,您必须将完整路径改为
template(“完全限定的路径到模板文件”)
最后,如果您仍然遇到错误,您应该使用错误消息更新您的问题,以便我们可以缩小原因。您是否尝试使用
${name}
而不是$name
如果不起作用,请检查模板文件(a.erb
;b.erb
;c.erb
)是否在/templates/myProject/myFiles
目录中
如果所有这些都不起作用,请发布您的错误消息。试试这个……它将以优雅的方式为您服务
define myFile($file_name) {
file { "/ect/init.d/${file_name}.ini":
ensure => file,
content => template("myProject/myFiles/${file_name}.erb"),
}
}
$values = {
item_1 => {file_name => "a"},
item_2 => {file_name => "b"},
item_3 => {file_name => "c"}
}
create_resources(myFile,$values)
看
['a', 'b', 'c'].each |String $name| {
file { "/ect/init.d/$name.ini":
content => template("myProject/myFiles/$name.erb"),
}
}