Мне нужен способ передать заданную переменную - скажем, thearch - в несколько разных файлов в данном классе. Мне нужно указать содержимое этой переменной для каждого файла отдельно.
Я пробовал следующее:
file { "xxx":
thearch => "i386",
path => "/xxx/yyyy",
owner => root,
group => root,
mode => 644,
content => template("module/test.erb"),
}
Это не передает эту переменную, поэтому я могу использовать ее с оператором <% = thearch%> в файле erb, как я ожидал.
Что я здесь делаю не так?
Вам нужно будет заключить файл в определение, которое принимает этот параметр, чтобы он был доступен при вызове шаблона, а затем вызвать это определение. Если многие параметры обычно одинаковы, установите их как значения по умолчанию, пока вы это делаете, просто чтобы код был чистым.
define thearch_file($thearch, $path, $owner = root, $group = root, $mode = 0644, $template = '/module/test.erb') {
file { $name:
path => $path,
owner => $owner,
group => $group,
mode => $mode,
content => template($template),
}
}
thearch_file {
"xxx":
thearch => 'i386',
path => "/xxx/yyy";
"yyy":
thearch => 'x86_64',
path => "/xxx/zzz";
}
Вы не можете определять произвольные мета-параметры для файлового ресурса, такого как thearch. Доступны только мета-параметры Вот. Вы можете использовать существующий факт об архитектуре узлов, который может дать вам желаемую функциональность.
<%= architecture %>
или возможно
<% if architecture == 'i386' then -%>
do some stuff
<% end-%>
Вы не можете этого сделать. Аргументы ресурса не являются произвольными значениями. Однако вы могли бы сделать это:
thearch = "i386"
file { "xxx":
path => "/xxx/yyyy",
owner => root,
group => root,
mode => 644,
content => template("module/test.erb"),
}