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

Можно ли заставить марионетку объединять рекурсивные и нерекурсивные изменения в заданном каталоге

Я использую марионетку 3.8.4 на debian. Я хочу рекурсивно установить владельца и группу в заданном каталоге, но установить разрешения только для самого каталога, т.е. Я не хочу изменять что-либо в каталоге, только chown / chgrp.

Я пробовал следующее ...

file {[
    "/foo/bar" ,
  ] :
  ensure  => directory,
  owner   => root,
  group   => bar,
  recurse => true,
  require       => [
    User[root],
    Group[bar],
  ],
}
file {[
    "/foo/bar" ,
  ] :
  ensure  => directory,
  mode    => 0640,           # +x automatically added to directories
  recurse => false,
}

Но, конечно же, puppet затем жалуется на повторяющееся объявление: File [/ foo / bar], если вы это сделаете.

Есть ли способ сделать это в марионетке без необходимости явно делать каталог верхнего уровня, а затем все файлы и папки под ним?

Просто чтобы выразить это как ответ: вы не можете.

Параметр namevar - это путь, поэтому у вас не может быть двух файловых ресурсов с одинаковым путем.

Проверьте документацию о файловом ресурсе: https://docs.puppetlabs.com/references/latest/type.html#file

Не проверено, но это должно работать:

Для второго ресурса просто назовите его по-другому и установите явный дорожка:

file {"/foo/bar_root":
  path    => "/foo/bar",
  ensure  => directory,
  mode    => 0640,           # +x automatically added to directories
  recurse => false,
}