У меня есть файл, который я хотел бы использовать для разных целей. Файл на 90% одинаков при использовании, только небольшие различия. Я бы предпочел не реплицировать контент в нескольких файлах в марионетке, так что есть способ сделать что-то вроде
file { "/tmp/file1" :
content => template("module/template.erb")
}
file { "/tmp/file2" :
content => template("module/template.erb")
}
И в шаблоне:
Jack
John
James
<% if file == "/tmp/file2" %>
Jim
<% end %>
Вы должны использовать определение параметризованного класса, чтобы вы могли получить name
к тому, что вам нравится (ИМХО, должно быть определение):
define filename($template = "mytemplate.erb") {
file { $name:
content => template($template)
}
}
node 'host' {
filename { "/tmp/file1": }
filename { "/tmp/file2": }
}
И исправьте свой шаблон на:
Jack
John
James
<% if name == "/tmp/file2" %>
Jim
<% end %>
Похоже, вы хотите собрать конфигурационный файл из фрагментов?
http://projects.puppetlabs.com/projects/puppet/wiki/Generating_a_config_file_from_fragments
Еще не пробовал, но хочу. Дайте мне знать, как это происходит, если вы попробуете это.