En post anteriores, he explicado como poder montar la base en un sistema de puppet, para posteriormente poder desplegar un sistema de Zimbra de una manera casi automatizada.
Hoy le llega el turno a Foreman, que no es simplemente una GUI para poder gestionar un sistema de Puppet. Este sistema puede provisionar equipos de una manera automática, mediante el protocolo PXE y poder desplegar nuestros módulos o clases de Puppet a dicho equipo desplegado.
El objetivo de este post, no es el despliegue de equipos mediante Foreman, lo que haremos es quitarnos el miedo a estos sistemas y poder gestionarlos de una manera más sencilla, gestionando nuestros servidores desde una consola web, la cual nos ofrece: más sencillez de administración, un dashboard, sistema de reports, etc…..
En esta primera parte de post, lo que haremos es: Instalar Foreman en una Ubuntu 14.04 LTS y posteriormente os explicaré como poder añadir un par de servidores, basados en diferentes sistemas operativos, para poder gestionarlos desde Foreman y así poder aplicar nuestros modulos y clases.
Os dejo el esquema, de cómo sería el montaje:
Instalación de Foreman
Nos conectaremos por SSH al servidor de Foreman (fyp.ilba.cat) y habilitaremos los repositorios e instalaremos el sistema de Foreman. La instalación la realizaremos dentro de un screen, por si sufrimos algún tipo de desconexión:
root@fyp:~# echo "deb http://deb.theforeman.org/ trusty 1.5" > /etc/apt/sources.list.d/foreman.list
root@fyp:~# echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list
root@fyp:~# wget -q http://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add –
root@fyp:~# screen -S instalando_foreman
root@fyp:~# apt-get update && apt-get install foreman-installer –y
root@fyp:~# foreman-installer
Una vez acabada la instalación, podremos ver el log que nos ha dejado el sistema, en la siguiente ubicación:
root@fyb:~# cat /var/log/foreman-installer/foreman-installer.log
Habilitaremos diffs de puppet, para poder ver los cambios de configuración desde el apartado de reports de Foreman.
root@fyp:~# vim /etc/puppet/puppet.conf
show_diff = true
Activaremos Foreman, para cuando reiniciemos el equipo funcione de una manera automática:
root@fyp:~# vim /etc/default/foreman
START=yes
Arrancaremos los servicios de Foreman:
root@fyp:~# service foreman start
Una vez arrancados los servicios, ya podremos accedes por consola web, para poder empezar a gestionar nuestro sistema. Os dejo el usuario y la contraseña por defecto:
- Username: admin
- Password: changeme
Configuración de reports de Foreman
Una vez hecho login, es aconsejable configurar una dirección de correo en nuestro sistema de Foreman, de esta forma recibiremos información periódica, de lo que vaya sucediendo en nuestro sistema. Para ello nos iremos a “Settings”
Y desde la opción “General”, indicaremos la dirección de correo, donde queremos que nos lleguen los informes:
Instalaremos un postfix, para el envío de mails y seguidamente, le indicaremos al sistema mediante el fichero: email.yaml, que nuestro servidor de correo, será el mismo (fyp.ilba.cat):
root@fyp:~# apt-get update && apt-get install postfix –y
root@fyp:~# cp /usr/share/foreman/config/email.yaml.example /etc/foreman/email.yaml
root@fyp:~# vim /etc/foreman/email.yaml
Realizaremos una prueba, enviandomos un report desde consola:
root@fyp:~# foreman-rake reports:summarize hours=12 RAILS_ENV="production"
Os dejo un ejemplo de report, para que lo podáis ver:
Añadiendo Ubuntu 14.04 LTS a Foreman
Añadiremos nuestro servidor de zimbra (zimbra1.ilba.cat), el cual está basado en Ubuntu 14.04 LTS. Lo primero que haremos es añadir los repositorios de Puppet e instalar los paquetes necesarios:
root@zimbra1:~# cd /usr/local/src/
root@zimbra1:/usr/local/src# wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
root@zimbra1:/usr/local/src# dpkg -i puppetlabs-release-trusty.deb
root@zimbra1:/usr/local/src# apt-get update && apt-get install puppet –y
Activaremos el cliente de Puppet, para cuando reiniciemos el equipo funcione de una manera automática:
root@zimbra1:/usr/local/src# vim /etc/default/puppet
START=yes
Verificaremos la conectividad con nuestro sistema de Foreman mediante un ping:
root@zimbra1:/usr/local/src# ping -c 1 fyp.ilba.cat
Configuraremos el cliente de Puppet (zimbra1.ilba.cat), para poder enlazarlo con nuestro servidor de Foreman (fyp.ilba.cat)
root@zimbra1:/usr/local/src# vim /etc/puppet/puppet.conf
#[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
#ssl_client_header = SSL_CLIENT_S_DN
#ssl_client_verify_header = SSL_CLIENT_VERIFY
[agent]
server = fyp.ilba.cat
report = true
pluginsync = true
Arrancamos los servicios del cliente de Puppet:
root@zimbra1:/usr/local/src# service puppet start
Y nos vamos al servidor de Foreman, desde el cual aceptaremos la conexión, mediante certificados:
root@fyb:~# puppet cert list
root@fyb:~# puppet cert sign zimbra1.ilba.cat
Añadiremos una entrada a nuestro cliente de Puppet (zimbra1.ilba.cat), para que cada 5min, realice una conexión
root@zimbra1:~# crontab -e
0,5 * * * * puppet agent --test
Añadiendo CentOS 7 a Foreman
Añadiremos nuestro servidor de zimbra (zimbra2.ilba.cat), el cual está basado en CentOS 7. Lo primero que haremos es añadir los repositorios de Puppet e instalar los paquetes necesarios:
[root@zimbra2 ~]# rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm
[root@zimbra2 ~]# sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/puppetlabs.repo
[root@zimbra2 ~]# yum install -y puppet --enablerepo=puppetlabs*
Activaremos el cliente de Puppet, para cuando reiniciemos el equipo funcione de una manera automática:
[root@zimbra2 ~]# systemctl enable puppet.service
Verificaremos la conectividad con nuestro sistema de Foreman mediante un ping:
[root@zimbra2 ~]# ping -c 1 fyp.ilba.cat
Configuraremos el cliente de Puppet (zimbra2.ilba.cat), para poder enlazarlo con nuestro servidor de Foreman (fyp.ilba.cat)
[root@zimbra2 ~]# vim /etc/puppet/puppet.conf
[agent]
# The file in which puppetd stores a list of the classes
# associated with the retrieved configuratiion. Can be loaded in
# the separate ``puppet`` executable using the ``--loadclasses``
# option.
# The default value is '$confdir/classes.txt'.
classfile = $vardir/classes.txt
# Where puppetd caches the local configuration. An
# extension indicating the cache format is added automatically.
# The default value is '$confdir/localconfig'.
localconfig = $vardir/localconfig
server = fyp.ilba.cat
report = true
pluginsync = true
Arrancamos los servicios del cliente de Puppet:
[root@zimbra2 ~]# systemctl start puppet.service
Y nos vamos al servidor de Foreman, desde el cual aceptaremos la conexión, mediante certificados:
root@fyp:~# puppet cert list
root@fyp:~# puppet cert sign zimbra2.ilba.cat
Una vez añadidos los dos servidores, podremos observar en nuestro Dashboard lo siguiente:














[…] Linux, se que es un poco tedioso realizar en todas las VMs, por eso herramientas como Ansible, o Foreman os pueden ayudar. Bueno vamos a verlo de manera manual, en nuestra VM de Linux como root […]