используя кукольный, мне нужно создать три файла, с этим содержимым:
/tmp/f1.txt: hello /tmp/f1.txt
/tmp/f2.txt: hello /tmp/f2.txt
/tmp/f3.txt: hello /tmp/f3.txt
я стараюсь следующим образом:
$path="/tmp/"
$my_files = ["$path/f1.txt", "$path/f2.txt", "$path/f3.txt"]
file { $my_files:
ensure => file,
content => "hello $name\n",
}
однако это не работает, потому что имя $ undefined.
есть переменная, которая создается для каждой итерации и что я могу использовать?
пс: я знаю, что я мог бы создать новый тип ресурса следующим образом:
define file_with_content {
file { $name:
ensure => file,
content => "hello $name\n",
}
}
$path="/tmp/"
$my_files = ["$path/f1.txt", "$path/f2.txt", "$path/f3.txt"]
file_with_content { $my_files: }
, но это требует создания нового типа ресурса, и я не могу сделать это в моем контексте (который не объясняется Вот).
Вопрос в том, как изменить первый код, чтобы он работал, не определяя новый тип ресурса и не выполняющий код оболочки?
Я не могу использовать определение здесь, потому что я уже в определении, и кажется, что мы не можем иметь вложенные определения. –
Вложенные классы/определения обычно представляют собой плохую идею: http://docs.puppetlabs.com/puppet/3/reference/lang_classes.html. Их можно выставить снаружи без особых проблем, а затем обратиться в другой класс. Что тебя останавливает? – xiankai
вы можете определить класс или класс внутри класса. но вы не можете определить внутри внутри define. это верно? –