Quiero administrar las particiones montadas desde la marioneta, que incluye modificar /etc/fstaby crear los directorios utilizados como puntos de montaje. El mounttipo de recurso se actualiza fstabmuy bien, pero usarlo filepara crear los puntos de montaje es un poco complicado.
Por ejemplo, por defecto, el propietario del directorio es root y si la raíz (/) de la partición montada tiene otro propietario, Puppet intentará cambiarlo y no quiero esto. Sé que puedo configurar el propietario de ese directorio, pero ¿por qué debería importarme lo que hay en la partición montada? Todo lo que quiero hacer es montarlo. ¿Hay alguna manera de hacer que Puppet no se preocupe por los permisos del directorio utilizado como punto de montaje?
Esto es lo que estoy usando ahora:
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",
}
En caso de que sea importante, estoy usando puppet-0.25.4-1.fc13.noarch.rpm y puppet-server-0.25.4-1.fc13.noarch.rpm.
PS undeffunciona bien para el propietario, el grupo y los permisos, pero no para SELinux. Si las particiones ya están montadas, la marioneta se queja:
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'
Los permisos de la partición montada son:
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /mnt/sda3/
mientras que los permisos de punto de montaje creados por puppet son:
 drwxr-xr-x. root root system_u:object_r:mnt_t:s0       /mnt/sda3/
PPS He informado un error para este comportamiento extraño.

undefHizo el truco. Los directorios se crean con el siguiente permiso, lorwxr-xr-x. root root system_u:object_r:mnt_t:s0cual está bien para mí.selrange => undef, selrole => undef, seltype => undef, seluser => undef,a la respuesta.Realmente no es una respuesta, pero esto se ha solucionado en Puppet 2.6.7: http://projects.puppetlabs.com/issues/3999
fuente
Tengo un hecho personalizado (funciona solo con ATM de Linux) que devolverá todos los montajes locales actualmente montados en un sistema. Es terriblemente simple, pero funciona para mí, parece que también podría serle útil. De todos modos, lo vomité en github: https://github.com/justintime/puppet/tree/master/justintime-localmounts
fuente