Soy Oscar Mas y os quiero enseñar como desplegar un sistema operativo Linux, en nuestro caso Ubuntu 14.04 LTS, de tal forma que una vez desplegado, se le instalen y configuren los paquetes que hemos decidido.
El sistema que voy a utilizar para poder desplegar nuestro sistema operativo es Foreman ( http://theforeman.org/ ), también conocido como The Foreman. Una vez instalado el sistema operativo, automáticamente se instalaran y se configuraran los paquetes que necesitemos, con nuestras propias configuraciones mediante Puppet.
Os aconsejo encarecidamente no usar CentOS para instalar el sistema de Foreman, ya que nos podemos encontrar bugs variopintos. Como que no nos lee el directorio donde están todos los ficheros de la configuración del sistema de Foreman y hemos de modificar nuestro sistema para un correcto funcionamiento. Una de las ventajas de usar la distribución de Debian en la implementación de Foreman, es que nos lo entregan un sistema operativo basado en Debian como ejemplo, totalmente configurada para poder desplegarla.
Para este laboratorio, simplemente necesitamos dos equipos
- Un servidor basado en Debian (fyp.ilba.cat) , el cual realizar las funciones de Foreman, Puppet, DHCP y TFTP
- Un equipo recién desplegado sin sistema operativo. El cual arrancaremos por PXE.
El post lo he dividido en varias secciones, para que se haga más ameno:
- Instalación de Foreman
- Instalación del DHCP + Omapi
- Configuración de Foreman
- Cargar módulo de Puppet (NTP)
- Cargar módulo de Puppet (VMware Tools)
- Cargar módulo para paquetes Custom (Zimbra)
- Crear nuestro Sistema Operativo
Durante el proceso de carga de módulos de Puppet en Foreman, doy el ejemplo del servicio NTP, VMWare Tools y paquetes Custom. No he querido poner más ejemplos, para no extenderme demasiado en el post, pero el procedimiento como podréis observar más adelante siempre él es mismo. De tal forma, que podríais seguir añadiendo los módulos que creáis oportunos. Podréis encontrar más módulos en: https://forge.puppetlabs.com
Cabe destacar, que mi servidor de DNS, es externo. Eso quiere decir que si no tenéis un servidor de DNS en la red, podéis crearos el módulo de puppet que haga referencia al sistema de DNS o instalarlo en el propio sistema de Foreman.
Instalación de Foreman
Lo primero que haremos, es añadir los repositorios de Foreman, para posteriormente instalar Foreman y sus dependencias:
root@fyp:~# echo "deb http://deb.theforeman.org/ jessie 1.9" > /etc/apt/sources.list.d/foreman.list
root@fyp:~# echo "deb http://deb.theforeman.org/ plugins 1.9" >> /etc/apt/sources.list.d/foreman.list
root@fyp:~# wget -q http://deb.theforeman.org/pubkey.gpg -O- | apt-key add -
root@fyp:~# apt-get update && apt-get -y install foreman-installer
Y una vez acabado de instalar los paquetes de Foreman, procederemos a la instalación de dicho paquete. El cual una vez acabado nos entregara las credenciales, para poder acceder vía web a la administración de Foreman:
root@fyp:~# foreman-installer
En este punto, lo normal es acceder a la administración web de Foreman y cambiar el password que nos ha generado automáticamente.
Podremos observar en la captura anterior, que nos ha instalado tres paquetes:
- Foreman – Es la administración Web de Foreman
- Foreman Proxy – Es el encargado de aceptar las peticiones de los sistemas clientes: DHCP, TFTP, Puppet, etc…. es necesario tener un Proxy, en nuestro caso lo hemos instalado en el propio equipo de Foreman, pero se podría instalar en otro servidor independiente
- Puppet Master – Poco hay que hablar de este monstruo….. es el encargado de desplegar nuestro paquetes y configurarlos
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
Instalación del DHCP + Omapi
Foreman se comunica con el DHCP mediante Omapi, el cual es el encargado de modificar la configuración del DHCP y recoger las concesiones que ha dado. Omapi, no es más que un API encargada de hablar con el sistema DHCP.
En nuestro caso, hemos instalado el DHCP en el mismo equipo de Foreman, pero se podría usar un DHCP basado en Windows.
Instalaremos el DHCP y las herramientas de bind, con las cuales generaremos nuestra key.
root@fyp:~# apt-get install -y isc-dhcp-server isc-dhcp-common isc-dhcp-dev bind9utils
Una vez acabadas de instalar las herramientas bind y el sistema de DHCP, generaremos una clave y nos guardaremos el resultado.
root@fyp:~# cd /etc/dhcp/
root@fyp:/etc/dhcp# dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 512 -n HOST omapi_ke
root@fyp:/etc/dhcp# ls -la Komap*
root@fyp:/etc/dhcp# cat Komapi_ke.+*.private |grep ^Key|cut -d ' ' -f2-
El resultado de la Key, en mi caso ha sido: I07kn+jKV0UEVqVYJ4FfE2Uckygel6tm1FSJ0ZEFBUhm9KxsYucvdZP34yxbuEdQPs1W8mgUphAGUC6v2UAXug==
Configuraremos nuestro DHCP, al cual le indicaremos que nos habilite el Omapi (puerto 7911) y le indicaremos la key que hemos generado anteriormente. Por lo demás es una configuración standard de DHCP, exceptuando el filename y el next-server, los cuales se usaran para desplegar la imagen del sistema operativo.
root@fyp:/etc/dhcp# mv dhcpd.conf dhcpd.conf.ori
root@fyp:/etc/dhcp# vim dhcpd.conf
omapi-port 7911;
key omapi_key {
algorithm HMAC-MD5;
secret "I07kn+jKV0UEVqVYJ4FfE2Uckygel6tm1FSJ0ZEFBUhm9KxsYucvdZP34yxbuEdQPs1W8mgUphAGUC6v2UAXug==";
};
omapi-key omapi_key;
option domain-name "ilba.cat";
option domain-name-servers dc.ilba.cat;
subnet 192.168.250.0 netmask 255.255.255.0{
range 192.168.250.120 192.168.250.130;
option domain-name-servers dc.ilba.cat;
option domain-name "ilba.cat";
option routers 192.168.250.1;
option broadcast-address 192.168.250.255;
default-lease-time 600;
max-lease-time 7200;
filename "/pxelinux.0";
next-server 192.168.250.251;
}
Una vez configurado el DHCP, le hemos de indicar a Foreman, donde están ubicados los ficheros de configuración y la key, para que se ponga en contacto con el API del DHCP (Omapi) y poder gestionarlo.
root@fyp:~# vim /etc/foreman-proxy/settings.d/dhcp.yml
:enabled: true
:dhcp_vendor: isc
:dhcp_config: /etc/dhcp/dhcpd.conf
:dhcp_leases: /var/lib/dhcp/dhcpd.leases
:dhcp_key_secret: qXwWe9cls7yUoe9KSGUagsq7nQTk4zDXLTOOh52FfQAIKEWqNlUIr9HYM9sAu4MgW+KomtsNgiZFbSpShbeH1w==
:dhcp_omapi_port: 7911
Le cambiaremos los permisos a los ficheros indicados, para que el usuario foreman-proxy puede leerlos y reiniciaremos el demonio del DHCP para que se apliquen los cambios.
root@fyp:~# ls -la /usr/bin/omshell
root@fyp:~# chown root:foreman-proxy /etc/dhcp/
root@fyp:~# chown root:foreman-proxy /etc/dhcp/dhcpd.conf
root@fyp:~# service foreman-proxy restart
root@fyp:~# service isc-dhcp-server restart
root@fyp:~# netstat -nlpt | grep 7911
Una vez realizada la configuración podremos verificarla via web, accediendo al puerto del Proxy e indicándole al final de la URL: “features”
https://fyp.ilba.cat:8443/features
["dhcp","puppet","puppetca","tftp"]
También lo podemos verificar desde la administración de Foreman. Si no nos aparece alguna de las características, tendremos que “Refrescar características”
Configuración de Foreman
Como ya he mencionado anteriormente, gracias a haber elegido la distribución de Debian, nos ha pre configurado gran parte de las opciones. Para que posteriormente podamos hacer un despliegue de nuestro sistema de una manera más sencilla. Aunque igualmente, os dejo lo que nos ha pre configurado nuestro sistema operativo basado en Debian, para que lo verifiquéis:
- En el menú “Host”, vamos a la opción “Arquitecturas”, verificaremos que exista “x86_64”. De no ser así, crearlo
- En el menú “Host” , vamos a la opción “Medio de Instalación”, verificaremos que exista “Ubuntu Mirror”. De no ser así, crearlo
- En el menú “Infraestructura” , vamos a la opción “Dominios”, verificaremos que exista “ilba.cat”. De no ser así, crearlo
Una vez verificados los pasos anteriores, crearemos nuestra Subred. Para realizar el procedimiento, iremos al menú “Infraestructura” y desde allí iremos a la opción “Subredes”
Crearemos una nueva subred y en la pestaña “Subred”, le asignaremos los valores de nuestra red:
Le indicaremos nuestro dominio, en la pestaña “Dominios”.
Le indicaremos nuestro servidor TFTP y nuestro DHCP, para que use los del propio servidor (en la pestaña “Proxies”):
Ahora ya tenemos nuestra subred generada. Iremos al menú “Hosts” y seleccionaremos la opción “Sistemas operativos”:
Crearemos nuestro sistema operativo, el cual desplegaremos posteriormente:
Crearemos un nuevo sistema operativo, el cual está basado en Ubuntu 14.04 LTS, de la siguiente manera:
Y le indicaremos que el sistema de particiones será el “Preseed default”. El cual configuraremos posteriormente:
Le indicaremos el mirror que usaremos, en nuestro caso “Ubuntu mirror”:
Ahora solamente nos queda asociar las plantillas de provisionamiento en nuestro sistema Operativo:
Le asignaremos las tres plantillas Preseed ( Preseed default PXELinux, Preseed default y Preseed default finish) a nuestro equipo. Los cuales gestionaran los tres procesos de instalación de nuestro sistema operativo.
Volveremos a sistemas operativos para asignarles las plantillas, que hemos asociado anteriormente:
Volveremos al menú plantillas de provisionamento
Y desde aquí generaremos los ficheros de configuración de PXE, para cuando arranque el equipo pueda coger la configuración del sistema PXE:
Una vez generado nuestros ficheros de PXE, los podremos ver en el directorio: /srv/tftp/boot/
root@fyp:~# ls -la /srv/tftp/boot/
























pregunta, por qué instalas todos los sistemas en español…?
Gracias oscar.
Como siempre muy interesante espero con ganas la partes siguientes.
un cordial saludo