DEV Community

Cover image for Canonical MAAS, Metal-As-A-Service, y provisiona tus nodos bare metal de forma elegante
J. Mulet
J. Mulet

Posted on

Canonical MAAS, Metal-As-A-Service, y provisiona tus nodos bare metal de forma elegante

AVISO: las imágenes de este post pertenecen a Canonical la cual tiene todos los derechos reservados de las mismas.


Introducción

Por razones de rendimiento y/o costes no todas las aplicaciones Cloud Native están alojadas en los grandes proveedores de nube global al estilo de Amazon AWS, Google Cloud o Microsoft Azure.

También ocurre con muchos otros servicios que no están pensados para la nube y continúan ejecutándose en servidores bare metal dentro de los distintos centros de datos que no pertenecen a estos operadores globales.

Para estos casos Canonical, la empresa detrás de Ubuntu Linux, tiene disponible una potente herramienta libre de lo más interesante a la vez que desconocida para muchos administradores de sistemas.

Me refiero a MAAS con la que podrás gestionar todos tus servidores de forma desatendida pudiendo elegir entre VMWare ESXi, Windows, CentOS, RHEL y, como no, Ubuntu.

MAAS tiene dos entidades para poder gestionar la infraestructura TIC de una empresa siendo la entidad principal el controlador de región.

Este controlador ofrece la interfaz Web y una API REST y los servicios globales para gestionar nuestra infraestructura privada (DNS, NTP, Syslog, Squid Proxy).

Mi consejo es que esté alojado en tu proveedor de nube de confianza por ser una infraestructura de Alta Disponibilidad (HA) u opcionalmente puedes alojarla en tu infraestructura siguiendo estas indicaciones. En ambos casos la base de datos Postgres tiene que ser externa y en configuración HA.

Por otro lado, en cada rack, debemos instalar el controlador de rack, la otra entidad de MAAS, que provee de los servicios locales necesarios para gestionar nuestros nodos (PXE, IPMI, DHCP, TFTP, ISCSI, NTP).

NOTA: El controlador de rack estará alojado en la propia infraestructura del rack y podemos optar por una instalación con soporte HA.

maasHowItWorks

* Sólo visible correctamente con el tema oscuro

MAAS nos permite definir distintas zonas de disponibilidad que reflejarán zonas separadas físicamente bien sea por rack, sala o centro de datos. Estas zonas nos permiten declarar zonas de fallo aisladas, al estilo de los grandes proveedores de nube, para darnos una idea de cómo distribuir mejor las aplicaciones de HA.

physical availability zones


Servidores

Cada servidor físico controlado por MAAS estará configurado para que pueda ser apagado, reseteado o encendido a través de su BMC (IPMI, iLO, etc.) y para arrancar desde la red por PXE-boot.

NOTA: en MAAS a los servidores se les llama máquina/machine y a al resto de dispositivos, routers, switch, etc., dispositivos/devices.

Para MAAS cada nodo está en un punto de su ciclo de vida:

node life cycle

  • Nuevo/New: Podemos dar de alta manualmente una nueva máquina o puede ser detectada cuando arranque por PXE-boot si se detectan automaticamente los parametros para acceder a su BMC.

  • Puesta en servicio/Commissioning: MAAS arranca la máquina desde una imagen de Ubuntu para recopilar el listado del hardware y añadirlo a su inventario.

  • Lista/Ready: el administrador puede pasar a configurar los interfaces de red, particiones de disco, etc.

  • Asignada/Allocated: el administrador ya ha definido su configuración de disco y de red asignando sus IPs que pasan a ser reservadas para esta máquina.

  • Desplegada/Deploying: MAAS instala el OS y configura automáticamente los interfaces de red y las particiones de disco.

  • Liberada/Releasing: el administrador puede dar de baja una máquina liberándola, MAAS iniciará un proceso para borrar el disco de la máquina y dejará de estar disponible para albergar servicios.

Sin entrar en profundidad vamos a ver algunos ejemplos del inventario de un servidor en MAAS:

Resumen:
machine summary

Configuración de red:
machine network

Configuración de almacenamiento:
machine storage


Networking

Es una de las partes más potentes ya que nos permite dar de alta todos los recursos relacionados con nuestra red IP.

Fábrica

Es la principal forma de agrupar a los recursos de red.

Una fábrica la forman todos los recursos que tienen como finalidad atender a un servicio concreto sin relación con otros. Por ejemplo, podemos tener 3 servidores sobre los que trabaja nuestro cluster de Kubernetes con rangos de red y VLANs distintas a otros 2 servidores que dan soporte a un cluster Proxmox VE.

En esta línea, podemos ver en la imagen inferior que hay dos fábricas con distintas subredes y VLANs dentro de ellas.

subnets

Detalle de una subred:
subnet summary

NOTA: la primera VLAN de una fábrica no está marcada/untagged ya que es la utilizada para arrancar los nodos por PXE-boot y es obligatorio que tenga el servicio DHCP activado para asignar al menos una IP al servidor.

Otra forma de entender el concepto de fábrica es que se recomienda configurar nuestros switches y trunks para permitir conectividad directa a nivel de capa 2 dentro de la misma mientras que la comunicación entre distintas fábricas necesariamente pase por un router capa 3.

MAAS Region scheme

Espacio

Es la otra forma de agrupar a los recursos de red, por ejemplo, podemos tener un espacio WAN y otro LAN o DRBD o cualquier concepto que represente una distinción importante común dentro de las distintas Fábricas.

Máquinas Virtuales

Otra característica que nos ofrece MAAS es la posibilidad de dar de alta a nuestros servidores como servidores de VM para crear sobre ellos nuevas máquinas que a efectos prácticos son idénticas a las físicas pudiendo desplegar los servicios en cualquiera de ellas.

Canonical ha elegido LXD como soporte para crear las VM lo cual es bastante interesante ya que es una implementación nueva de LXC que entra dentro de la virtualización ligera por lo que podemos esperar que se aprovechen al máximo los recursos de nuestro hardware.

LXD VM Project

Imágenes

Para poder trabajar con los distintos sistemas operativos, MAAS, nos ofrece el apartado para gestionar las imágenes de los mismos.

Por defecto trabaja con Ubuntu y CentOS pero se pueden cocinar imágenes personalizadas o añadir otros sistemas incluido Windows y sus licencias para poder realizar también instalaciones desatendidas.

Otra detalle importante es que podemos trabajar con otras arquitecturas, como por ejemplo arm64, de forma que también es una herramienta útil para gestionar infraestructuras de IoT o Edge computing.

Ubuntu images

CentOS images

Hasta aquí hemos visto los conceptos más importantes ya que este post sólo pretende ser una introducción conceptual a esta herramienta tan interesante. La documentación oficial es muy buena y el resto es cuestión de probarla y adquirir experiencia 😉.

Discussion (0)