Puppet I: Instalación de Puppet Master sobre CentOS

Tenia pendiente realizar algunas pruebas con puppet y para ello me he montado un entorno de pruebas en Vagrant con 2 máquinas virtuales, una será el Master y otra el agente.

Instalación

La instalación es muy sencilla, se instala el paquete de los repositorios de PuppetLabs correspondiente a nuestra distribución y a continuación se instala el paquete puppet-server:

p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }

[root@centos1 ~]# yum install puppet-server 

Configuración

Con estos dos comandos ya tendremos instalado nuestro Puppet Master. A continuación hace falta configurarlo. Para ello nos aseguraremos que nuestro host resuelve correctamente la dirección puppet. Verificaremos que IP tenemos asignada a la red interna y lo configuraremos en el fichero hosts (lo ideal en un entorno productivo es que vaya todo por DNS):
[root@centos1 ~]#  ip addr list
h3.western { font-family: “Liberation Sans”,sans-serif; }h3.cjk { font-family: “Droid Sans Fallback”; }h3.ctl { font-family: “FreeSans”; }p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:a7:b7:8c brd ff:ff:ff:ff:ff:ff
inet 10.10.10.10/24 brd 10.10.10.255 scope global eth1
inet6 fe80::a00:27ff:fea7:b78c/64 scope link
valid_lft forever preferred_lft forever

[root@centos1 ~]# grep puppet /etc/hosts
10.10.10.10 puppet puppet.localdomain
El servicio puppet master lo configuraremos de forma que arranque con el sistema operativo y lo arrancaremos. Utilizaremos el mismo puppet para configurarlo:
p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
[root@centos1 ~]# puppet resource service puppetmaster ensure=running enable=true
Notice: /Service[puppetmaster]/ensure: ensure changed ‘stopped’ to ‘running’
service { ‘puppetmaster’:
ensure => ‘running’,
enable => ‘true’,
}
y podemos verificar que se han arrancado los servicios y configurado para el arranque:
 p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
[root@centos1 ~]# ps -ef | grep -i puppet
puppet 9336 1 0 09:55 ? 00:00:00 /usr/bin/ruby /usr/bin/puppet master
[root@centos1 ~]# service puppetmaster status
puppet (pid 9336) is running…
[root@centos1 manifests]# chkconfig puppetmaster –list
puppetmaster 0:off 1:off 2:on 3:on 4:on 5:on 6:off 
 
[root@centos1 puppet]# netstat -ant | grep 8140
tcp     0     0 0.0.0.0:8140     0.0.0.0:*     LISTEN
El instalador nos habrá creado los usuarios y grupos correspondientes:
  p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
[root@centos1 puppet]# grep puppet /etc/{passwd,group}
/etc/passwd:puppet:x:52:52:Puppet:/var/lib/puppet:/sbin/nologin
/etc/group:puppet:x:52:
El directorio /var/lib/puppet debe pertenecer al usuario puppet y al grupo puppet:
   p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
[root@centos1 puppet]# ls -ld /var/lib/puppet/
drwxr-x— 11 puppet puppet 4096 Apr 19 09:55 /var/lib/puppet/
Ya tendremos nuestro servidor de puppet listo, ahora bastará con firmar los certificados de los agentes para empezar a trabajar con ellos.
p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
[root@centos1 ~]# puppet cert list
“centos2.homestation” (SHA256) 67:6F:54:C7:AE:C7:11:F7:58:75:C2:98:E9:A1:7A:E0:07:EE:A3:D4:38:CD:78:FB:F4:92:0A:07:C9:0C:DC:AA
[root@centos1 ~]# puppet cert sign centos2.homestation
Notice: Signed certificate request for centos2.homestation
Notice: Removing file Puppet::SSL::CertificateRequest centos2.homestation at ‘/var/lib/puppet/ssl/ca/requests/centos2.homestation.pem’
También podriamos haber firmado todos los certificados pendientes con el comando puppet cert sign all.

Testeo

Explicaré tres casos sencillos para probar la instalación de puppet. Se trata de exportar un fichero de configuración, iniciar un servicio y instalar un paquete. En cualquier caso hay que crear un manifiesto indicándole a puppet las acciones a realizar. Los manifiestos se ubican por defecto en el siguiente directorio: /etc/puppet/manifests
  • Compartir fichero: Deberemos editar ademas el fichero /etc/puppet/fileserver.conf indicando el path donde iremos ubicando nuestros ficheros de configuración y quién tiene acceso a ellos:
    p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
    [root@centos1 puppet]# vi fileserver.conf
    [files]
    path /etc/puppet/files
    allow * 
    A continuación crearemos el manifiesto, que consiste en un fichero con extensión .pp:
      p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
    [root@centos1 manifests]# cat 1.file.pp
    file { “/etc/motd” : source => “puppet:///files/motd”, }
    Para aplicar el manifiesto ejecutaremos: 
    p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
    [root@centos1 manifests]# puppet apply 1.file.pp
    Notice: Compiled catalog for centos1.homestation in environment production in 0.09 seconds
    Notice: /Stage[main]/Main/File[/etc/motd]/content: content changed ‘{md5}d41d8cd98f00b204e9800998ecf8427e’ to ‘{md5}b3bdce950fdd660ebbdac96fbb02f374’
    Notice: Finished catalog run in 0.09 seconds
    y finalmente verificamos que ha hecho los cambios que le hemos pedido:
    p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }
    [root@centos1 manifests]# cat /etc/motd
    This is a secured system, authorized access 
  • Arrancar un servicio: al igual que en el caso anterior se creará el manifiesto indicando que queremos que el servicio esté habilitado por defecto y que esté arrancado:

[root@centos1 manifests]# cat 2.service.pp
service { “sshd” :
ensure => running,
enable => true,

  • Instalar un paquete: en este manifiesto se indicará el paquete que queremos tener instalado en nuestro sistema. Es posible que el nombre del paquete difiera entre varias distribuciones, para eso es posible hacer filtrados. En este caso sencillo, al conocer donde lo queremos instalar el manifiesto será el siguiente:

[root@centos1 manifests]# cat 3.package.pp
package { “nmap” : ensure => installed, } 

Podemos ver que el ejecutable no está instalado antes de aplicar el manifiesto. Una vez aplicado el cambio ya tenemos disponible la nueva aplicación:

 [root@centos1 manifests]# nmap-bash: nmap: command not found 
[root@centos1 manifests]# puppet apply 3.package.pp
Notice: Compiled catalog for centos1.homestation in environment production in 0.56 seconds
Notice: /Stage[main]/Main/Package[nmap]/ensure: created
Notice: Finished catalog run in 19.49 seconds

[root@centos1 manifests]# nmap -version
Nmap version 5.51 ( http://nmap.org

En proximas entradas comentaré cómo configurar el agente y cómo se instala la interfaz web Puppet Dashboard.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s