Les développeurs de la plateforme PaaS open source Cozystack ont préparé le projet Talm, destiné à simplifier la configuration des serveurs bare-metal pour Talos Linux, un système d'exploitation pour exécuter Kubernetes, qui dispose d'une API similaire à Kubernetes et qui se configure avec un seul manifeste Yaml. Bien que Talm ait été conçu pour décrire l'installation déclarative de Cozystack, il n'est pas spécifiquement lié à cette plateforme et peut être utilisé pour gérer n'importe quelle configuration de Talos Linux. Le projet est développé sous la licence MPL.
La nécessité de développer un autre gestionnaire de configurations pour Talos Linux découle de l'orientation vers les serveurs bare-metal. Les développeurs ont cherché à créer une interface la plus simple possible, semblable à Helm et kubectl, des outils bien connus des administrateurs Kubernetes.
Étant donné que chaque serveur physique a des configurations différentes (adresses MAC, interfaces et disques), il est nécessaire d'avoir un fichier de configuration séparé pour chaque nœud. Un gestionnaire simple est requis pour générer de tels fichiers de configuration à partir des informations collectées et pour les mettre à jour de manière déclarative.
Cela utilise la génération dynamique de fichiers de configuration basée sur un modèle donné. Des préréglages "generic" et "cozystack" sont disponibles. Talm peut collecter des informations à partir de l'API Talos au moment de la génération et les utiliser pour les configurations finales. Ces fichiers de configuration ne contiennent pas de secrets, mais uniquement des modifications, ce qui permet de les stocker facilement dans Git et de les gérer de manière déclarative.
Dans la plupart des cas, Talm répète la structure de Helm, utilisant le concept de chart, dans lequel les modèles de génération de configuration sont décrits. Des fonctions similaires à celles de Helm comme lookup sont prises en charge pour interroger directement l'API Talos et collecter des métadonnées supplémentaires pour la génération de fichiers de configuration en utilisant des « go templates » et la bibliothèque sprig.
Commande : talm template -t templates/controlplane.yaml -e 1.2.3.4 -n 1.2.3.4 > nodes/srv1.yaml
Interroge le nœud « 1.2.3.4 » via l'API, génère pour lui un nouveau fichier de configuration à partir du modèle, en insérant les données nécessaires. Le fichier de configuration obtenu peut être immédiatement appliqué en une seule commande : talm apply -f nodes/srv1.yaml
De plus, dans chaque fichier de configuration, Talm définit sa propre modeline, dans laquelle il mémorise les points d'accès des nœuds et les modèles à partir desquels il a été obtenu, afin de les appliquer et de les mettre à jour facilement sans spécifier d'options supplémentaires. Talm prend en charge toutes les mêmes commandes que l'outil en amont talosctl, mais permet de lui transmettre le fichier de configuration du nœud, par exemple : talm dashboard -f nodes/srv1.yaml -f nodes/srv2.yaml -f nodes/srv3.yaml
affichera un tableau de bord interactif pour les trois nœuds. Et la commande : talm get routes -f nodes/srv1.yaml
affichera la liste des routes sur le nœud « srv1 »
Si nécessaire, les fichiers de configuration peuvent être exportés avec l'option « --full » sur un serveur PXE distinct, ce qui permet aux nœuds de les télécharger automatiquement. Ainsi, Talm conserve la variabilité bare-metal serveurs, offrant une gestion facile d'eux conformément aux meilleures pratiques GitOps.
Source : opennet.ru
