Comment gérer les partitions montées (fstab + points de montage) à partir de la marionnette


14

Je veux gérer les partitions montées à partir de marionnettes, ce qui inclut à la fois la modification /etc/fstabet la création des répertoires utilisés comme points de montage. Le mounttype de ressource se met fstabà jour très bien, mais son utilisation filepour créer les points de montage est un peu délicate.

Par exemple, par défaut, le propriétaire du répertoire est root et si la racine (/) de la partition montée a un autre propriétaire, puppet essaiera de le changer et je ne le veux pas. Je sais que je peux définir le propriétaire de ce répertoire, mais pourquoi devrais-je me soucier du contenu de la partition montée? Tout ce que je veux faire, c'est le monter. Existe-t-il un moyen de faire en sorte que la marionnette ne se soucie pas des autorisations du répertoire utilisé comme point de montage?

Voici ce que j'utilise en ce moment:

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",
}

Dans le cas où cela compte, j'utilise puppet-0.25.4-1.fc13.noarch.rpm et puppet-server-0.25.4-1.fc13.noarch.rpm.


PS undeffonctionne bien pour le propriétaire, le groupe et les autorisations, mais pas pour SELinux. Si les partitions sont déjà montées, la marionnette 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 autorisations de la partition montée sont:

drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /mnt/sda3/

tandis que les autorisations du point de montage créé par la marionnette sont:

 drwxr-xr-x. root root system_u:object_r:mnt_t:s0       /mnt/sda3/

PPS J'ai signalé un bug pour ce comportement étrange.

Réponses:


9

Vous pouvez dire à Puppet de ne pas gérer un métaparamètre donné en le réglant sur undef.

file { "${location}/${name}":
    ensure                  => directory,
    owner                   => undef,
    group                   => undef,
    mode                    => undef,
    selinux_ignore_defaults => true,
}

Dans ce cas, si le répertoire n'existe pas avant le montage, il sera créé en tant qu'utilisateur et groupe puppetddémarré en tant que (vraisemblablement root: wheel) et avec un umask par défaut. Puppet ne se souciera pas de ce que ceux-ci sont définis au moment de la création ou lors des exécutions suivantes.


Alternativement, si vous souhaitez échanger un peu de complexité contre de l'assurance, vous pouvez utiliser un fait personnalisé pour déterminer ce que sont les montages actifs et une instruction switch pour définir les autorisations de répertoire selon qu'il est pré ou post-monté.


undefa fait l'affaire. Les répertoires sont créés avec l'autorisation suivante, rwxr-xr-x. root root system_u:object_r:mnt_t:s0ce qui me convient.
Cristian Ciupitu

1
Veuillez ajouter selrange => undef, selrole => undef, seltype => undef, seluser => undef,à la réponse.
Cristian Ciupitu

N'y aurait-il pas un risque pour les marionnettes à essayer de gérer la racine du système de fichiers avec "assure => monté"?


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.