Я пытаюсь создать два разных файла с одним шаблоном, потому что они отличаются только по одной строке.
file
{
"/tmp/bootstrap-raid.sh":
content => template("pxe/bootstrap.sh.erb"),
}
file
{
"/tmp/bootstrap-noraid.sh":
content => template("pxe/bootstrap.sh.erb"),
}
bootstrap.sh.erb:
<% if ??? == "???" %>
-r yes \
<% else %>
-r no \
<% end %>
я не могу передать переменную, определяя ее дважды, например $raid=yes file{} $raid=no file{}
, поэтому я попытался определить переменную внутри каждого file{}
без усилий. затем я подумал об использовании имени целевого файла внутри шаблона, например <% if filename == "/tmp/bootstrap-raid.sh" %>
что тоже невозможно.
как работать вызовите шаблон дважды с разными "параметрами"
Моя цель - не определять и не вызывать дополнительную функцию в файле манифеста или создавать два шаблона. Любые идеи?
есть ли в шаблоне какие-либо предопределенные переменные по умолчанию, такие как имя целевого файла, имя шаблона, ...?
edit: другим примером может быть два файла php.ini, как в debian, один для командной строки и один для веб-сервера. хочу только поменять лимит памяти. но каждому серверу нужны оба файла php.ini. я ищу способ передать жестко запрограммированный параметр в файл шаблона или способ, которым я могу if/then/else
на основе имени целевого файла. конечно, я знаю, что могу создать новое определение, которое я могу вызвать дважды. но я ищу более простой способ.
Возможно, вам стоит сделать это с определением?
class bootstrap { define conf ( $israid= undef ) { $loc = $name file { "$loc": content => template(blah.erb); } } }
затем позвони с
include bootstrap bootstrap::conf { "/loc": israid => '-r yes \'; } bootstrap::conf { "/otherloc": israid => '-r no \'; }
ваш шаблон должен будет обрабатывать israid
переменную, вы можете просто использовать include и сохранить логику вне шаблона (или, по крайней мере, меньше логики там
<%= israid %>
Вы не можете получить имя ресурса (кажется), но можете получить класс. Например:
class bootstrap-raid {
file {
"/tmp/bootstrap-raid.sh":
content => template("/root/bootstrap.sh.erb"),
}
}
class bootstrap-noraid {
file {
"/tmp/bootstrap-noraid.sh":
content => template("/root/bootstrap.sh.erb"),
}
}
А для шаблона:
<% if name == "bootstrap-raid" %>
-r yes \
<% else %>
-r no \
<% end %>
Есть также title
доступные, что обычно означает одно и то же (по крайней мере, я никогда не видел, чтобы они различались).