Hola a todos de nuevo
Se requiere eliminar una serie de usuarios de los agentes. Pero se inscribe la particularidad de que cabe la posibilidad, de que algunos usuarios hayan podido ser borrados sin eliminar su home.
He creado un módulo donde tengo configurado lo siguiente:
class deluser {
$user = $osfamily ? {
default => ['paco', 'pepe']
}
user {$user:
ensure => 'absent',
#managehome => 'true', (lo tenemos así # para hacer las pruebas)
}
exec {"delhome":
command => "/bin/rm -rf /home/$user",
path => "/bin/",
unless => "/bin/ls | /bin/grep -c $user"
}
El caso es que al parsear la variable con la instrucción user se hace bien, es decir, se interpreta correctamente, primero un elemento y luego el otro de nuevo. Y si existieran los usuarios los eliminaría y además eliminaría su home si la línea no estuviese comentada.
El problema existe con home existente sin usuario. Pues la variable se parsea entera y nos arroja un error donde se indica que el recurso Exec[/home/pacopepe] no existía y por lo tanto no se aplicaba.
Antes lo habíamos intentado con la instrucción file y tampoco nos valía:
file {"/home/$user":
path => "/home/$user",
ensure => 'absent',
force => 'true',
}
Nos arrojaba el mismo error, que no se podía encontrar el recurso File[/home/pacopepe].
Lo siguiente que hice fue crear una variable propia tipo $home para meter en ella las rutas de los directorios,:
$home = $osfamily ? {
default => ['/home/paco', '/home/pepe']
}
file {"$home":
path => "$home",
ensure => 'absent',
force => 'true',
}
Pero seguía arrojando un error similar pues repasaba la variable entera antes de pretender aplicarla.
Por fin encontré la solución a esto mediante la instrucción tidy.
Dejó aquí el código funcional por si alguien se ve en el mismo caso, o tiene que eliminar varios ficheros y quiere usar para ello una variable para no andar tocando el código del módulo.
class deluser {
$user = $osfamily ? {
default => ['paco', 'pepe']
}
$home = $osfamily ? {
default => ['/home/paco', '/home/pepe']
}
user {$user:
ensure => 'absent',
#managehome => 'true',
}
tidy {$home:
matches => '*',
backup => false,
rmdirs => true,
recurse => true,
}
}
Saludos.