Назад | Перейти на главную страницу

Получить имя файла для шаблона марионетки

У меня есть файл, который я хотел бы использовать для разных целей. Файл на 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

Еще не пробовал, но хочу. Дайте мне знать, как это происходит, если вы попробуете это.