Я пытаюсь убедиться, что каталог существует для монтирования, а затем также обновляю разрешения этого каталога после монтирования. Я получаю следующую ошибку:
err: Failed to apply catalog: Cannot alias File[pre_eos_mount] to ["/var/tmp/eos"] at /etc/puppet/modules/mymodule/manifests/eos.pp:29; resource ["File", "/var/tmp/eos"] already declared at /etc/puppet/modules/mymodule/manifests/eos.pp:47
Я бы хотел сделать что-то вроде этого:
file { $eos_mount : ensure => 'directory', mode => '1777', owner => 'root', group => 'root', } mount { $eos_mount : ensure => 'mounted', device => $lv_device, fstype => $fstype, options => 'defaults,noatime,nodiratime', require => File[$eos_mount], notify => File['post_eos'], } file { 'post_eos' : path => $eos_mount, ensure => 'directory', mode => '1777', owner => 'root', group => 'root', }
Как можно гарантировать права доступа к папке после ее монтирования?
В марионетке 3+ вы можете изменить существующий ресурс следующим образом:
См. Документацию Вот Больше подробностей
file { $eos_mount :
ensure => 'directory',
mode => '1777',
owner => 'root',
group => 'root',
}
mount { $eos_mount :
ensure => 'mounted',
device => $lv_device,
fstype => $fstype,
options => 'defaults,noatime,nodiratime',
require => File[$eos_mount],
notify => File['post_eos'],
}
File[$eos_mount] {
path => $eos_mount,
ensure => 'directory',
mode => '1777',
owner => 'root',
group => 'root',
}
Я бы предпочел использовать модуль: puppet-name_service_lookups и сделайте что-нибудь вроде:
$user_info = getpwnam($owner)
$user_uid = $user_info['uid']
$group_info = getgrnam($group)
$group_gid = $group_info['gid']
и в опциях для монтирования выполните:
options => "defaults,noatime,nodiratime,uid=${user_uid},gid=${group_gid}",
Насколько я понял из ошибки проблема в том, что вы уже определили ресурс file {'/var/tmp/eos': }
где-то раньше, поэтому мастер марионеток не позволит вам скомпилировать каталог, потому что ресурс должен быть уникальным (тип ресурса + имя $).
В том случае, когда у вас есть потенциальный конфликт одних и тех же ресурсов, вы должны использовать виртуальные ресурсы, что гарантирует, что он будет добавлен в каталог только один раз, независимо от того, сколько раз вы его добавляли.