Instalacion y configuracion de Puppet en modo MASTER/AGENT RHEL/CentOS/SL 5/6/7
En caso de necesitar usar Puppet en modo MASTER/AGENT es necesario tener un servidor dedicado para la tarea de "Puppet Master", basicamente es el encargado de publicar y asignar los modulos puppet para cada equipo que los solicite.
La arquitectura del modo MASTER/AGENT o MASTE/SLAVE de puppet es la siguente:

Cada equipo se conecta al Puppet MASTER a traves de un agente llamado "puppet-agent". Dicha conexion se realiza sobre HTTPS a traves del puerto 8140/tcp.
Instalacion del Puppet MASTER
Para proceder con la instalacion y configuracion del puppet master es necesario configurar los repositorios oficiales de puppetlabs.
La configuracion del repositorio varia segun la version del S.O.
- Para RHEL/CentOS/SL 5.x
sudo rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-5.noarch.rpm
- Para RHEL/CentOS/SL 6.x
sudo rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm ##> En caso de ser RHEL 6
- Para RHEL/CentOS/SL 7.x
sudo rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm ##> En caso de ser RHEL 7
Instalacion de paquetes
Una vez configurado el repositorio procedemos a instalar los paquetes necesarios con el comando yum
yum install -y puppet-server
Creacion de certificado para el Master
Para crear el certificado es necesario especificar todos los nombres DNS a los que debe responder el mismo, en la mayoria de los casos dicho nombre es el FQDN de nuestro Master
Para dicha configuracion es necesario editar el archivo /etc/puppet/puppet.conf
en la seccion [ main ]
se debe de agregar los nombres DNS para los cuales respondera el certificado
[main]
dns_alt_names = puppet,puppet.example.com,puppetmaster01
Configuracion del servicio puppetmaster
Una vez instalados los paquetes necesarios se debe editar el archivo /etc/sysconfig/puppet
vim /etc/sysconfig/puppet
Dicho archivo debe quedar de la siguiente manera
# The puppetmaster server
#PUPPET_SERVER=puppet
# If you wish to specify the port to connect to do so here
PUPPET_PORT=8140
# Where to log to. Specify syslog to send log messages to the system log.
PUPPET_LOG=/var/log/puppet/puppet.log
# You may specify other parameters to the puppet client here
PUPPET_EXTRA_OPTS=--waitforcert=500
Iniciar y habilitar el servicio Puppet Master
Una vez configurado nuestro puppet master procedemos a iniciar el servicio y luego habilitar el mismo
Iniciar el servicio
service puppetmaster start
Habilitar el inicio automatico del servicio
chkconfig puppetmaster on
Creacion de modulos
Para crear los modulos es necesaria la siguiente estructura de directorio, cambiando el "modulo" por el nombre que tendra el modulo a crear
mkdir -p /etc/puppet/modules/"modulo"
mkdir -p /etc/puppet/modules/"modulo"/files
mkdir -p /etc/puppet/modules/"modulo"/manifests
Asignar modulos a clientes
Para asignar los modulos a los clientes es necesario modificar el archivo /etc/puppet/manifests/site.pp
:
vim /etc/puppet/manifests/site.pp
Agregando los siguiente por cada cliente
hostnamedelcliente{
include nombredelmodulo1
include nombredelmodulo2
}
Instalacion y configuracion del puppet-agent en los equipos Clientes/Slave/Agentes
Una vez que se configuro el master se pasa a configurar los clientes donde correra el puppet-agent
Instalacion del puppet-agent
Para instalar el puppet-agent tambien es necesario configurar los repositorios oficiales de puppetlabs. Se puede realizar dicha tarea siguiendo los pasos descriptos para la instalacion del puppet-master
Luego se procede a instalar el paquete con el comando yum
yum install -y puppet
Configuracion del agente
Una vez que se instalo el paquete se debe modificar el archivo /etc/puppet/puppet.conf
en la seccion [ agent ] agregar lo siguiente:
vim /etc/puppet/puppet.conf
server = puppet.example.com ## (Esto se debe cambiar por el nombre DNS del servidor puppetmaster)
report = true
pluginsync = true
Iniciar y habilitar el servicio puppet-agent
Se debe tener cuenta que el cliente debe poder llegar al Master al puerto 8140/tcp
Inicio del puppet-agent
service puppet start
Habilitamos el servicio para que se levante cada vez que el equipo inicia
chkconfig puppet on
Firmar los certificados del cliente para que pueda establecer conexion con el Master
Una vez que se inicio el servicio en el cliente deberia de haber creado un certificado el mismo es enviado al puppet master, para que el cliente pueda consultar al Master es necesario firmar dicho certificado.
Dento del puppet-master ejecutamos podemos consultar la lista de certificados pendientes de firma
puppet cert list
Los certificados tienen como nombre el FQDN del cliente.
Finalmente se procede a firmar el certificado del cliente
puppet cert sign nombredelcertificado