
Estoy buscando una aclaración aquí. parece elgestionarcasaatributo de lausuarioEl tipo definido solo funciona cuando el usuario no existe. Echa un vistazo a este DSL
user { 'artifactory':
ensure => 'present',
home => '/home/artifactory',
managehome => true,
}
file { '/home/artifactory/data':
ensure => link,
target => '/var/lib',
require => User['artifactory'],
}
La primera vez que ejecuto esto funciona bien, sin embargo, si elimino elartefactoriodirectorio de inicio del usuario, luego ejecútelo nuevamente, puppet barfs.
Error: No se pudo configurar el 'enlace' para garantizar: No existe tal archivo o directorio
Mi primer pensamiento esen realidad? Échale un vistazo aldocumentación
Ya sea para administrar el directorio de inicio al administrar el usuario. Esto creará el directorio de inicio cuando asegúrese => presente
Si elimino el usuario y lo intento nuevamente, funciona. Entonces, ¿esto es por diseño o es un error? Me parece delicado.
Respuesta1
Desde una perspectiva de tiempo de ejecución, Puppet verifica el estado del usuario en el sistema y lo compara con el manifiesto. Si el usuario no existe en el sistema, entonces Puppet ejecuta el useradd
comando apropiado para crearlo. Si se supone que el usuario no existe, y existe, entonces ejecuta el userdel
comando apropiado. Si algún atributo del usuario, como membresía de grupo, uid, nombre, etc., ha cambiado, entonces emite el comando gpasswd
o apropiado usermod
.
Desafortunadamente, la documentación sobre el tipo de usuario no es la más clara. El managehome
parámetro no es tanto una declaración sobre ese directorio sino una opción para el comando useradd
, usermod
o userdel
. Entonces, si configura managehome => true
y cambia la ubicación del directorio de inicio, se creará, si elimina el usuario, se eliminará y si agrega el usuario, se creará. Sin embargo, no garantiza que el directorio exista en todo momento.
Si esto es necesario, le recomendaría que cree un tipo de archivo y establezca un requisito adecuado. Algo como esto:
user { 'artifactory':
ensure => 'present',
home => '/home/artifactory',
managehome => true,
}
file {
'/home/artifactory/data':
ensure => link,
target => '/var/lib',
require => [ User['artifactory'], File['artifactoryhomedir'] ];
'/home/artifactory':
ensure => directory,
alias => 'artifactoryhomedir',
require => User['artifactory'];
}
Respuesta2
Es unproblema conocido. La solución planificada es mantener el comportamiento actual, pero cambiar el nombregestionarcasaacrearcasapara que quede más claro.