У меня есть несколько каталогов, и для каждого я хочу создать одни и те же подкаталоги с марионеткой.
Это явно не работает:
$inst = ['/i1', '/i2', '/i3']
$subdirs = ['subdir1', 'subdir2']
file {"${inst}/${subdirs}":
ensure=>directory,
recurse=>true,
purge=>true,
force=>true,
owner=>$username,
group=>$group,
source=>"puppet:///modules/mymodule/subdirtemplates/${subdirs}/",
mode=>'644';
}
Невозможно объединить каждый член первого массива с каждым членом второго массива.
В любом нормальном языке программирования вы бы использовали два цикла for или какую-нибудь встроенную функцию сопоставления или что-то в этом роде, но в марионетке? Нужно ли мне переходить на новый Ruby DSL?
хм. Я решил это так:
$inst = ['/i1', '/i2', '/i3']
#$subdirs = ['subdir1', 'subdir2']
file {$inst:
ensure=>directory,
recurse=>true,
purge=>true,
force=>true,
owner=>$username,
group=>$group,
source=>"puppet:///modules/mymodule/subdirtemplates/",
mode=>'644';
}
Я удостоверился, что вложенные шаблоны содержат все каталоги, которые я хотел бы видеть в каждом экземпляре. Это сработало для меня, но, возможно, у кого-то все еще есть более хороший ответ для настройки деревьев каталогов в случаях, когда у вас нет дерева шаблонов.