Chapter 1 Introduction
1.8 Empirical Evaluation
En este capítulo se abordó la estructura de la red de la Universidad Central “Marta Abreu” de las Villas, así como la situación existente en el proceso de las instalaciones desatendidas y el manejo de configuraciones haciendo
Se mostró la infraestructura necesaria para lograr una instalación por la red, desde la selección de los protocolos y los softwares hasta la configuración para su implementación. Se referenció como procede r para la elaboración de los ficheros necesarios para lograr la instalación desatendida como son kickstart y preseed.
Concluido el punto de la instalación del sistema operativo básico y los programas iniciales se pasó a la etapa de la configuración tanto del mismo sistema operativo como de las aplicaciones. En este punto entraron a jugar su rol el Ansible y el Puppet, ambos permiten el manejo de las configuraciones necesarias para lograr un producto final aceptable por el usuario. Lo más importante de este punto es que sin importar cuantas veces se realice el proceso de configuración el resultado siempre será el mismo. Esto puede realizarse en 100 servidores de la misma forma que se realiza en uno. Además, el script de configuración debe quedar almacenado para que de ser necesario en un futuro se pueda realizar el mismo proceso de instalación.
Aunque pueda parecer que todo funciona perfectamente se debe notar que esta arquitectura tiene el inconveniente de que son partes diferentes unidas por el administrador de sistemas que a su vez debe trabajar de conjunto con un administrador de redes. Esto implica personas con un alto conocimiento técnico trabajando colaborativamente lo cual no es siempre viable y factible.
Para resolver este problema se necesitaría de una herramienta que integre la parte de la red, la de instalación del sistema operativo y finalmente el manejo de la configuración
3
PLATAFORMA INTEGRADORA PARA LA UCLV
3.1 Introducción
En el capítulo anterior se pudo ver el uso de arquitecturas para la instalación del sistema operativo primero y del manejo de la configuración después para equipos a través de la red. El problema más notable de las soluciones expuestas era la separación en estos dos campos. Un especialista debería dominar dos tecnologías diferentes para poder realizar toda la tarea.
Para solucionar la dificultad anterior se debe buscar un sistema integrador que incluya tareas tanto de funciones de red como de instalación de sistemas operativos y de manejo posterior de configuraciones. Si esto se pudiera realizar desde un punto centralizado y ajeno a las estaciones que se desean instalar sería mucho mejor.
Partiendo de la necesidad de la integración de los sistemas de instalaciones desatendidas y el manejo de configuraciones surge el empleo de Foreman como gestor y orquestador del sistema. Debido a las facilidades, el soporte que tiene, la comunidad de desarrolladores y su funcionamiento se perfila como la solución ideal para la red UCLV.
En este capítulo por lo tanto se expone el empleo de Foreman para proveer, configurar y monitorear varios servidores. Con este programa se planea montar un clúster para el procesamiento matemático, varias máquinas del laboratorio del Grupo de Redes y dejar configurado el repositorio de imágenes de sistemas operativos para ser usado en trabajos futuros, como los servidores de Big Data. La adición de plugins para aumentar las funcionalidades del sistema como el uso de Ansible, descubrimiento de servidores y ejecución remota también quedan cubiertas.
3.2 Foreman
Es fácil de administrar uno o más de un servidor con Puppet o Ansible, pero cuando hay 100 o más de 100 servidores el trabajo es más engorroso ya que la configuración y el uso de estas herramientas es generalmente a través de líneas
aprovisionamiento y para integrar las tecnologías de virtualización en la nube. Foreman es una de las herramientas usadas en la actualidad con licencia gratuita y open source para gestionar el trabajo desde una fácil interfaz gráfica, a diferencia de Puppet Enterprise que es una versión pagada de Puppet.
Foreman es el principal competidor de la consola de Puppet Enterprise (PE). Pero Foreman ha conseguido últimamente más atención en comparación con PE debido a su costo de propiedad y lanzamientos más rápidos. Debe decirse que Foreman pretende hacer algo más que la consola PE. Foreman tiene la disposición de configurar nuevas máquinas virtuales en OpenStack, Google Compute Engine, Rackspace, AWS, VMware, entre otros. La gestión con el front-end hace que el trabajo se facilite en gran medida, teniendo en un solo ambiente de trabajo varias tecnologías capaces de administrar grandes cantidades de servidores. Con Foreman se puede gestionar la instalación desatendida por la red, es decir, proveer nuevos servidores, el manejo de configuraciones (usando Puppet y Ansible, este último mediante la incorporación de plugins), el descubrimiento de nuevos servidores mediante una herramienta propia del Foreman, reportes y estadísticas, y la integración con sistemas de autentificación LDAP.
3.2.1
Aprovisionamiento
El aprovisionamiento del servidor Foreman se realiza partiendo de la misma filosofía de la instalación desatendida con la capacidad de ser generada desde una interfaz web de forma centralizada, siendo capaz de configurar de forma automática todos los servicios de red necesarios TFTP, DNS, DHCP, NFS y HTTP mediante el Smart Proxy de Foreman. En el Anexo 6 se observa el esquema del funcionamiento del proceso para proveer un servidor con un sistema operativo.
Una vez instalado Foreman en el servidor y existir conexión con la red de la Universidad, es necesario acceder a pestaña de Configuración y en la opción de Smart Proxy chequear el funcionamiento de los servicios de red instalados por defectos, necesarios para proveer los nuevos servidores, si no existe problema se puede continuar con la configuración del servidor, y en caso contrario chequear los logs de fallos y realizar los arreglos pertinentes. Primeramente, antes de comenzar es necesario realizar un aprovisionamiento de la red, o que es lo mismo realizar una configuración básica de los servicios necesarios para poder instalar los sistemas operativos por la red, como son principalmente DHCP, TFTP y los de PXE e iPXE, desde la interfaz web. Esta opción se encuentra en la sección Infraestructura/Configuración de Provisión. Esta opción es capaz de determinar la presencia de algún error en las conexiones del servidor, en caso de no existir problemas, se continúa con el llenado de campos de configuración de los servicios necesarios y al concluir Foreman a partir de los elementos completados genera un script que debe ser copiado y ejecutado en la terminal del servidor. Una vez terminado el proceso se tiene instalado un servidor capaz de instalar sistemas operativos por la red, para hacer uso en la subred donde se encuentre instala y configura un servidor DHCP, tener en cuenta que en el caso de estar en otra subred es necesario declarar la dirección del servidor
Foreman en el switch o el servidor DHCP interno de la subred. Seguidamente es necesario la inclusión de algún sistema operativo al sistema por lo que deben ser llenado los campos necesarios para su configuración, así como la asignación de las plantillas PXE, de configuración, las de arranque local, preseed, kickstart y los medios de instalación.
A groso modo el aprovisionamiento de la red prepara los servicios destinados a la instalación de los sistemas operativos completamente y en un primer momento es capaz de configurar hasta una imagen correspondiente con el sistema operativo del servidor Foreman con sus respectivas plantillas.
La creación de los servidores lleva a una configuración en cadena la cual parte por la creación de un sistema operativo y de las plantillas que a éste se le asocian. Para crear una imagen es necesario completar la sección de arquitectura del servidor, en este aspecto serían 32 ó 64 bit. Luego aspectos referentes a la marca del servidor y la compañía donde fue creado. El medio de instalación describe el repositorio donde se exportarán las imágenes o ficheros durante el proceso de instalación de algunos sistemas operativos los cuales hacen referencia a esta dirección.
Se debe precisar que existen las plantillas para generar automáticamente el archivo específico para el servidor que se desee instalar, tanto por arranque por BIOS o por UEFI, nombrado con la MAC del mismo. Estas plantillas usan terminologías kickstart o preseed dependiendo de la distribución que se desea instalar (recordar que la primera corresponde a la distribución Red Hat y a Ubuntu, y la segunda a Debian). Existen las plantillas pxelinux, que se generan automáticamente cuando se crea un nuevo servidor, la cual carga la imagen indicada; las plantillas de aprovisionamiento para responder al proceso de instalación y lograr el proceso de forma desatendida y la plantilla de finalizar que se genera una vez que se instala completamente el servidor, permitiendo iniciar normalmente el servidor haciendo uso del disco local. Además se puede ajustar la configuración de la partición del disco según el usuario estime. Al crear las plantillas es necesario asociarlas a los sistemas operativos creados, para su uso posterior. Un aspecto importante de Foreman es que permite crear automáticamente los ficheros necesarios para el arranque por PXElinux UEFI, Grup UEFI, Grub UEFI SecureBoot, Grub2 UEFI, Grub UEFI Secure Boot y PXElinux BIOS, según seleccione el usuario dependiendo del servidor que se va a instalar. Esto garantiza un mejor funcionamiento y menos errores de configuración.
PXElinux BIOS hace referencia al arranque más usado en los servidores y estaciones de trabajo en la actualidad, una vez que crea un nuevo servidor se construye automáticamente un archivo en pxelinux.cfg, asociado con su MAC, de acuerdo con las plantillas seleccionadas y generadas por el usuario. Además, escribe en /var/lib/dhcp/dhcp.leasse los archivos que él necesita levantar para su funcionamiento, en este caso como anteriormente se mencionó, necesita el archivo pxelinux.0.
PXELinux UEFI es asociado con el método de arranque en modo seguro que se va imponiendo hoy en la actualidad, la construcción de un nuevo servidor genera ficheros en el directorio grub2 nombrados con su MAC, con una estructura distinta a la empleada en el arranque por BIOS y hace un llamado al fichero pxelinux.efi por una declaración generada en dhcp.leasses. El fichero pxelinux.efi no está presente dentro del directorio Foreman por lo que debe ser copiado desde otra fuente. Se recomienda copiarlo desde el proyecto original de Syslinux, en el cual aparece como syslinux.efi y renombrarlo a pxelinux.efi para que el sistema trabaje correctamente.
3.2.2
Descubrimiento de imagen
El descubrimiento de imágenes es un complemento que le permite a Foreman realizar descubrimientos automáticos de servidores o máquinas desconocidos en la red de aprovisionamiento. Los nuevos nodos se auto-registran en Foreman y cargan los datos recogidos por Facter (identificador de serie, interfaces de red, memoria, discos). Los nodos registrados aparecen en la página Hosts Descubiertos y el aprovisionamiento puede iniciarse manualmente o automáticamente a través de reglas de descubrimiento predefinidas, (foreman.org, 2016). El esquema se puede observar en el Anexo 7.
Foreman Discovery se basa en interceptar el proceso de arranque normal para máquinas no registradas en Foreman. Para lograr esto, el archivo default.cfg de PXE necesita ser modificado para instruir a las nuevas máquinas a iniciar la imagen de descubrimiento, (foreman.org, 2016).
Configuración
En la interfaz de usuario Foreman, en Provisioning Templates, es necesario editar la plantilla predeterminada global de PXELinux y cambiar la entrada predeterminada de la entrada localboot a Discovery:
ONTIMEOUT Discovery
Y agregar al archivo default lo siguiente: LABEL discovery
MENU LABEL Foreman Discovery Image KERNEL boot/fdi-image/vmlinuz0
APPEND initrd=boot/fdi-image/initrd0.img ... proxy.url=<%= foreman_server_url %> proxy.type=foreman
IPAPPEND 2
La opción proxy.type puede ser proxy o Foreman. En el primer caso, toda la comunicación pasa por Smart Proxy, en este último caso la comunicación va directamente a Foreman (modo heredado). Este es el valor predeterminado cuando no se especifica.
Proxy.url especifica la dirección URL del Smart Proxy o Foreman dependiendo de la configuración anterior. Para compatibilidad con versiones anteriores, foreman.url es un alias para esta configuración.
Una vez que la plantilla se ha actualizado, se puede guardar con la opción Crear PXE Predeterminado en la parte superior de la página de Plantillas de Aprovisionamiento. Esto instruirá al proxy TFTP para reescribir el archivo pxelinux.cfg /default, (foreman.org, 2016).
En el caso de las máquinas que arrancan por UEFI es necesario editar la plantilla predeterminada global de Grubpxelinux y en la sección de default indicar qué menú seleccionar en caso de que se termine el tiempo, es necesario que corresponda con las de Discovery Image.
Agregar en el archivo grub.cfg lo siguiente: default 2
menuentry 'Foreman Discovery Image' {
linuxefi boot/fdi-image/vmlinuz0 rootflags=loop root=live:/fdi.iso rootfstype=auto ro rd.live.image acpi=force rd.luks=0 rd.md=0 rd.dm=0 rd.lvm=0 rd.bootif=0 rd.need net=0 nomodeset proxy.url=https://foreman_ ip proxy.type=foreman BOOTIF=01-$net_default_mac
initrdefi boot/fdi-image/initrd0.img }
De esta forma cada vez que se inicie un servidor que se desee proveer y no se encuentre dentro de los clientes creados en Foreman, se incorpora al sistema mediante la imagen de descubrimiento de Foreman. Desde la interfaz gráfica se puede configurar el sistema operativo y las plantillas necesarias para la instalación desatendida, determinar los módulos y roles con Puppet o Ansible respectivamente, para el manejo de configuraciones, logrando un sistema completamente desatendido. La guía para proveer un servidor descubierto se puede observar en el Anexo 11.
Descubrimiento de Imágenes
Se selecciona un servidor descubierto y se elige Provisión. Esto redirecciona a la página de edición para crear un nuevo servidor, con los datos descubiertos rellenados donde sea posible. Se llenan los campos según estime el usuario y se crean los ficheros necesarios para proveer al nuevo servidor.
Al guardar la configuración, Foreman modifica el archivo pxelinux correspondiente al servidor en la raíz del servicio TFTP y reinicia el servidor descubierto automáticamente, por lo que al arrancar puede cargar la imagen del sistema operativo deseada de forma desatendida, luego el mismo Foreman cambia el fichero de arranque para que
3.2.1
Manejo de configuraciones
El manejo de configuraciones desde Foreman se puede realizar de una forma más fácil y amena para los administradores de sistemas, usando Puppet por defecto, Ansible o Chef, mediante la adición de plugins.
Los roles y los catálogos escritos según la necesidad y las especificaciones de la infraestructura deben ser ubicados en el directorio indicado en las propiedades de Foreman de cada una de las herramientas que se van a usar. En la interfaz de Foreman se puede observar el inventario de los scripts existentes en el servidor y la asignación de las clases que deben correr los servidores o en otras palabras, el estado en que se quiere que se encuentren los nodos. Siempre queda la opción de variar los parámetros de algunas variables en caso de no ser los adecuados para adaptarlas según el ambiente de trabajo o el servidor. La interfaz de trabajo con los roles de Ansible se puede observar en el Anexo 14.
El trabajo con Puppet se facilita ya que el Smart Proxy de Foreman es capaz de manejar los certificados con PuppetCA, facilitando el trabajo desde la interfaz a la hora de tener el inventario de los certificados existentes y el control de estos a la hora de firmarlos, revocarlos o eliminarlos, librando al administrador del trabajo con los comandos.
Debido a la necesidad y a las ventajas que propicia Ansible y el gran soporte que puede brindar Foreman en el trabajo con el manejo de configuraciones, es necesario la adición de esta herramienta mediante la habilitación como plugin. Esto se realiza mediante el comando:
# apt-get install ruby-foreman-ansible
Ansible permite importar servidores a través de Foreman. Cada vez que ejecute un módulo de Ansible, Foreman recibirá los reportes y un informe del anfitrión donde ha sido ejecutado.
3.2.2
Reportes e inventario
Para supervisar la infraestructura, los estados del servidor son útiles. En Foreman cada cliente tiene un estado global que indica cuáles necesitan atención. Cada servidor también tiene sub-status que representa el estado de una característica en particular. Con cualquier cambio de un subestado, se vuelve a calcular el estado global y el resultado se determina por las estadísticas de todos los subestados.
El estado global representa el estado general de un servidor particular. El estado puede tener uno de los tres valores posibles: OK, Advertencia o Error. OK significa que no se informaron errores por ningún sub-estado. Se representa con el color verde. Advertencia sugiere que el usuario debe verificar el estado, mientras que no se detectó ningún error, alguno sub-estado levantó una advertencia. Un buen ejemplo sería que no hay informes de Puppet para el
cliente, aunque el agente está configurado para enviar informes de Facter. Por lo tanto, se destaca con el color amarillo. El último valor posible es Error que indica que algún subestado informa de un fallo. Esto podría significar, por ejemplo, que la ejecución de Puppet contiene algunos recursos fallidos. Obviamente es algo que debe arreglarse y el usuario es alertado por el color rojo.
Se puede encontrar la página de resumen de estado global de los servidores mostrada como un icono pequeño junto al nombre del servidor con el color correspondiente. Pasar el ratón por encima del icono proporciona una información de herramientas con información de los subestados para obtener rápidamente más detalles.
Un sub-estado supervisa sólo una parte de las capacidades del servidor. Actualmente Foreman sólo envía dos sub- estados de construcción y configuración. No todos los subestados son relevantes para todos los servidores, por lo tanto, la configuración sólo se considera si el servidor está utilizando algún sistema de gestión de configuración. Se puede ver un estado del servidor global con todos los sub-estados en las imágenes del Anexo 15.
El inventario es generado a partir de las herramientas de Facter, la cual obtiene la información de todos los servidores incorporados al sistema, agrupándoles por diferentes categorías y llevando la estadística en varios parámetros.
Estos son parámetros que ayudan en gran medida a los administradores de sistemas ya que desde una interfaz centralizada es capaz de controlar y velar por el estado de sus servicios y clientes, pudiendo actuar con mayor rapidez. Además de poseer un sistema de aviso mediante correo, el cual es configurado por el administrador.
3.3 Llave Pública
La conexión del servidor master de Ansible con los clientes se realiza mediante SSH, por lo que es necesario tener acceso mediante usuario y contraseña. Para facilitar la conexión se usa el acceso mediante llave pública.
El administrador no necesita primeramente copiar la llave pública a los clientes, ya que este proceso se realiza durante la instalación del sistema operativo con los scripts post-install escritos en los archivos kickstart y preseed. Foreman dentro de sus facilidades presenta una plantilla nombrada remote_execution_ssh_keys la cual es capaz de copiar la llave pública del root del servidor Foreman a sus clientes siempre y cuando se habilite. Una vez que