Я использую марионетку 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,
}