Quiero administrar las particiones montadas desde la marioneta, que incluye modificar /etc/fstab
y crear los directorios utilizados como puntos de montaje. El mount
tipo de recurso se actualiza fstab
muy bien, pero usarlo file
para 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 undef
funciona 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.
undef
Hizo el truco. Los directorios se crean con el siguiente permiso, lorwxr-xr-x. root root system_u:object_r:mnt_t:s0
cual 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