Este comando nos permite administrar todos los nodos desde un mismo servidor. El único requisito para que esto funcione es que el demonio "puppetd" esté levantado en todos los nodos que queramos administrar.
A continuación se explicará un ejemplo de configuración y ejecución de puppetrun.
1.- Para permitir el acceso al demonio puppetd tenemos que añadir la máquina que ejecutará puppetrun en el fichero "namespaceauth.conf" de cada nodo:
vi /etc/puppet/namespaceauth.conf
[fileserver]
allow server.dominio
[puppetmaster]
allow server.dominio
[puppetrunner]
allow server.dominio
Esto permitirá que el servidor "server.dominio" pueda ejecutar puppet en nuestra máquina.
Nota: debido a un BUG en algunas versiones se recomienda añadir el hostname exacto de la máquina que ejecutará puppetrun. No utilizar CNAME's y evitaremos problemas.
2.- Como último paso tenemos que levantar "puppetd" para que escuche en el puerto 8139. Además levantaremos el demonio en modo "--no-client" para evitar la ejecución automática que se realiza cada 30 minutos por defecto.
Editamos el fichero "puppet.conf" y añadimos el parámetro "listen=true":
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
pluginsync=true
[puppetmasterd]
templatedir=/var/lib/puppet/templates
[puppetd]
server=server.dominio
certname=cliente.dominio
daemonize=true
listen=true
report=true
Para que el demonio se levante en modo "--no-client" editamos el siguiente fichero:
vi /etc/default/puppet
# Defaults for puppet - sourced by /etc/init.d/puppet
# Start puppet on boot?
START=yes
# Startup options
DAEMON_OPTS="--no-client"
3.- Ahora ya podemos levantar el demonio:
/etc/init.d/puppetd
Comprobamos que el puerto se ha levantado correctamente:
netstat -na|grep 8139
tcp 0 0 0.0.0.0:8139 0.0.0.0:* LISTEN
Nos conectamos al servidor de Puppet y ejecutamos:
puppetrun --host cliente.dominio
Esto actualizará todas las clases que el cliente tenga de Puppet.
Si queremos especificar una clase ejecutamos:
puppetrun --host cliente.dominio -t basenode
Esto actualizará la clase "basenode" en "cliente.dominio".
Puppetrun nos permite actualizar todos los nodos a la vez ejecutando:
puppetrun -a
Esto solo nos funcionará si hemos montado el puppetmaster con LDAP. Si este no es nuestro caso podemos ejecutarlo de la siguiente manera:
puppetca --list --all | awk '{ print $2 }' | xargs -I ’{}’ sudo puppetrun --host ’{}’Si nos encontramos con problemas al ejecutar puppetrun contra un nodo, podemos levantar el demonio "puppetd" de la siguiente manera:
puppetd --no-daemonize --listen --verbose --no-client
Luego ejecutamos "puppetrun" desde nuestro servidor y en el cliente podremos debugar todo lo que ocurre en la comunicación.
Saludos!!
En estos momentos me encuentro buscando soluciones para gestionar equipos Desktop Ubuntu.. ¿Recomiendas Puppet para este fin?
He visto que mucha gente lo usa y me parece mejor alternativa a CFengine que aparentemente es mas para servers.
Aun asi, hay alguna otra alternativa para gestionar Desktops? la idea es mantenerlos actualizados e instalar algunas aplicaciones, como un WSUS pero para Linux.
Y dentro del Tema de Puppet, muchas de las configuraciones se manejan por Classes, ¿Conoces algun buen recurso para crear algunas? La cosa es que veo que todos usan puppet pero no muestran algunas classes de ejemplo mas que la clasica de "sudoers" y cosas asi.
Seria bueno ver un tutorial mas a fondo, por lo pronto, gracias!!
twitter.com/wiredfixer
Comentarios recientes
8 weeks 1 day ago
22 weeks 2 days ago
27 weeks 5 days ago
36 weeks 3 days ago
44 weeks 2 days ago
51 weeks 5 days ago
1 year 3 days ago
1 year 12 weeks ago
1 year 12 weeks ago
1 year 15 weeks ago