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

Как настроить деревья каталогов с помощью марионетки?

У меня есть несколько каталогов, и для каждого я хочу создать одни и те же подкаталоги с марионеткой.

Это явно не работает:

$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';
}

Я удостоверился, что вложенные шаблоны содержат все каталоги, которые я хотел бы видеть в каждом экземпляре. Это сработало для меня, но, возможно, у кого-то все еще есть более хороший ответ для настройки деревьев каталогов в случаях, когда у вас нет дерева шаблонов.