16 jun 2015

Copiar ficheros de configuración a /etc/skel y replicar en directorios home mediante puppet

Es interesante poder añadir ficheros de configuración para nuevos usuarios mediante puppet en /etc/skel, para que cuando se cree un nuevo usuario, se le apliquen las nuevas configuraciones, pero tan importante como ésto es aplicar también las nuevas configuraciones a los usuarios ya creados.

Del mismo modo que en el post anterior, la parte de añadir ficheros de configuración en /etc/skel es trivial:
file { "/etc/skel/.config/plank/dock1/settings":
source => "puppet:///puppet-plank-sync-portatiles/settings",
owner => root, group => root, mode => 644,
}
Lo que no resulta tan trivial es colocar la misma configuración en los directorios home de los usuarios. No obstante, si utilizamos el comando find en un recurso exec y lo relacionamos con el recurso file, la cosa no resulta tan complicada:
file { "/etc/skel/.config/plank/dock1/settings":
source => "puppet:///puppet-plank-sync-portatiles/settings",
owner => root, group => root, mode => 644,
notify => Exec['sincroniza-ajustes-plank-user']
}

exec { 'sincroniza-ajustes-plank-user':
command => '/usr/bin/find /home/ -type d -path "*.config/plank/dock1" -exec cp /etc/skel/.config/plank/dock1/settings {} \;',
subscribe => File ['/etc/skel/.config/plank/dock1/settings'],
refreshonly => true
}
De este modo, estamos colocando el fichero settings en el directorio /etc/skel/.config/plank/dock1, y, siempre que se modifique, lo copiamos a los directorios home de los usuarios.
Publicado por primera vez en http://enavas.blogspot.com.es

Borrar ficheros de /etc/skel y directorios home mediante puppet

En ocasiones, necesitamos borrar un fichero del directorio /etc/skel para que no se añada cuando se cree un nuevo usuario, pero, al mismo tiempo, queremos que ese mismo fichero se borre de los directorios home de los usuarios.

Por ejemplo, supongamos que tengo un lanzador "laptopuserconfig.desktop" que permite lanzar una aplicación de configuración cuando el usuario inicia sesión por primera vez y quiero que se deje de ejecutar ese script de configuración. Lo que tendré que hacer será borrar el lanzador laptopuserconfig.desktop del directorio /etc/skel/.config/autostart/ y de los directorios home de cada usuario que exista en el sistema. 

El borrado del fichero en /etc/skel es sencillo:
file { "/etc/skel/.config/autostart/laptopuserconfig.desktop":
ensure => absent,
}
Lo más complicado de hacer con puppet, sería borrar el fichero de los directorios home de los usuarios puesto que no sabemos qué usuarios existen en /home. No obstante, si lo pensamos bien, no es tan difícil si recurrimos al comando find y relacionamos bien los recursos file y exec:
file { "/etc/skel/.config/autostart/laptopuserconfig.desktop":
ensure => absent,
notify => Exec["remove-laptopuserconfig-homes"]

}

exec { "remove-laptopuserconfig-homes":
command => "/usr/bin/find /home/ -name 'laptopuserconfig.desktop' -exec rm {} \;",
onlyif => "test -f /etc/skel/.config/autostart/laptopuserconfig.desktop"
}
Publicado por primera vez en http://enavas.blogspot.com.es