Je souhaite gérer les partitions montées à partir de Puppet, ce qui inclut à la fois la modification de l'architecture de la partition et la création d'une nouvelle partition. /etc/fstab
et la création des répertoires utilisés comme points de montage. Les mount
mise à jour des types de ressources fstab
est très bien, mais l'utilisation de file
pour créer les points de montage est un peu difficile.
Par exemple, par défaut, le propriétaire du répertoire est racine et si la racine (/) de la partition montée a un autre propriétaire, Puppet essaiera de le changer, ce que je ne souhaite pas. Je sais que je peux définir le propriétaire de ce répertoire, mais pourquoi devrais-je me soucier de ce qui se trouve sur la partition montée ? Tout ce que je veux, c'est la monter. Existe-t-il un moyen de faire en sorte que Puppet ne se préoccupe pas des autorisations du répertoire utilisé comme point de montage ?
C'est ce que j'utilise actuellement :
define extra_mount_point(
$device,
$location = "/mnt",
$fstype = "xfs",
$owner = "root",
$group = "root",
$mode = 0755,
$seltype = "public_content_t"
$options = "ro,relatime,nosuid,nodev,noexec",
) {
file { "${location}/${name}":
ensure => directory,
owner => "${owner}",
group => "${group}",
mode => $mode,
seltype => "${seltype}",
}
mount { "${location}/${name}":
atboot => true,
ensure => mounted,
device => "${device}",
fstype => "${fstype}",
options => "${options}",
dump => 0,
pass => 2,
require => File["${location}/${name}"],
}
}
extra_mount_point { "sda3":
device => "/dev/sda3",
fstype => "xfs",
owner => "ciupicri",
group => "ciupicri",
$options => "relatime,nosuid,nodev,noexec",
}
Au cas où cela aurait de l'importance, j'utilise Puppet-0.25.4-1.fc13.noarch.rpm et Puppet-server-0.25.4-1.fc13.noarch.rpm.
P.S. undef
fonctionne bien pour le propriétaire, le groupe et les autorisations, mais pas pour SELinux. Si les partitions sont déjà montées, Puppet se plaint :
puppetd[18052]: Failed to set SELinux context system_u:object_r:public_content_t:s0 on /mnt/sda3
puppetd[18052]: (/File[/mnt/sda3]/seluser) seluser changed 'unconfined_u' to 'system_u'
puppetd[18052]: Failed to set SELinux context unconfined_u:object_r:mnt_t:s0 on /mnt/sda3
puppetd[18052]: (/File[/mnt/sda3]/seltype) seltype changed 'public_content_t' to 'mnt_t'
Les permissions de la partition montée sont les suivantes :
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /mnt/sda3/
tandis que les permissions du point de montage créé par Puppet sont :
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 /mnt/sda3/
P.P.S. J'ai signalé une insecte pour ce comportement étrange.