Los desarrolladores de la plataforma PaaS abierta Cozystack han preparado el proyecto Talm, que busca simplificar la configuración de servidores bare-metal para Talos Linux, un sistema operativo diseñado para ejecutar Kubernetes, que cuenta con una API similar a Kubernetes y se configura mediante un único manifiesto YAML. A pesar de que Talm se creó para describir la instalación declarativa de Cozystack, no está atado específicamente a esta plataforma y puede utilizarse para gestionar cualquier configuración de Talos Linux. El proyecto se desarrolla bajo la licencia MPL.
La necesidad de desarrollar otro administrador de configuraciones para Talos Linux se debe a la orientación hacia servidores bare-metal. Los desarrolladores se propusieron crear la interfaz más simple, similar a Helm y kubectl, herramientas bien conocidas por los administradores de Kubernetes.
Dado que cada servidor físico tiene una configuración diferente (direcciones MAC, interfaces y discos), es necesario tener un archivo de configuración separado para cada nodo. Se requiere un administrador simple que permita generar tales archivos de configuración basándose en la información recopilada y actualizarlos de manera declarativa.
Para esto se utiliza la generación dinámica de archivos de configuración a partir de una plantilla dada. Existen presets listos como 'generic' y 'cozystack'. Talm es capaz de recopilar información de la API de Talos durante la generación y utilizarla para las configuraciones resultantes. Estos archivos de configuración no contienen secretos, solo cambios, lo que permite almacenarlos fácilmente en Git y gestionarlos de manera declarativa.
En su mayoría, Talm replica la estructura de Helm, operando con el concepto de chart, que describe plantillas para la generación de configuraciones. Se admiten funciones similares a las de Helm, como lookup, para consultar la API de Talos directamente y recopilar metadatos adicionales para generar archivos de configuración utilizando ‘go templates’ y la biblioteca sprig.
Comando: talm template -t templates/controlplane.yaml -e 1.2.3.4 -n 1.2.3.4 > nodes/srv1.yaml
Consulta el nodo '1.2.3.4' a través de la API, genera un nuevo archivo de configuración para él a partir de la plantilla, insertando los datos necesarios. El archivo de configuración obtenido se puede aplicar de inmediato con un solo comando: talm apply -f nodes/srv1.yaml
Además, en cada uno de esos archivos de configuración, Talm establece su modeline, en el que recuerda los endpoints del nodo y las plantillas de las que se obtuvo, para que sea fácil aplicarlos y actualizarlos sin necesidad de especificar opciones adicionales. Talm soporta todos los mismos comandos que la herramienta upstream talosctl, pero permite pasarle el archivo de configuración del nodo, por ejemplo: talm dashboard -f nodes/srv1.yaml -f nodes/srv2.yaml -f nodes/srv3.yaml
mostrará un dashboard interactivo para los tres nodos. Y el comando: talm get routes -f nodes/srv1.yaml
mostrará una lista de rutas en el nodo 'srv1'
Si es necesario, los archivos de configuración se pueden exportar con la opción '--full' a un servidor PXE separado, lo que permite que los nodos los descarguen automáticamente. De este modo, Talm mantiene la variabilidad del bare-metal servidores, asegurando una gestión conveniente de los mismos de acuerdo con las mejores prácticas de GitOps.
Fuente: opennet.ru
