Die Entwickler der freien PaaS-Plattform Cozystack haben das Projekt Talm vorbereitet, das darauf abzielt, die Konfiguration von Bare-Metal-Servern für Talos Linux zu vereinfachen. Talos Linux ist ein Betriebssystem zum Ausführen von Kubernetes, das eine Kubernetes-ähnliche API hat und mit einem Yaml-Manifest konfiguriert werden kann. Obwohl Talm zur Beschreibung der deklarativen Installation von Cozystack entwickelt wurde, ist es nicht spezifisch an diese Plattform gebunden und kann zur Verwaltung beliebiger Konfigurationen von Talos Linux verwendet werden. Das Projekt entwickelt sich unter der MPL-Lizenz.
Die Notwendigkeit, einen weiteren Konfigurationsmanager für Talos Linux zu entwickeln, ergibt sich aus der Ausrichtung auf Bare-Metal-Server. Die Entwickler strebten an, eine möglichst einfache Schnittstelle zu schaffen, die Helm und kubectl ähnelt, bekannte Werkzeuge für Kubernetes-Administratoren.
Da jeder physische Server eine unterschiedliche Konfiguration (MAC-Adressen, Schnittstellen und Festplatten) aufweist, ist es notwendig, für jede Node eine separate Konfigurationsdatei zu haben. Es wird ein einfacher Manager benötigt, der es ermöglicht, solche Konfigurationsdateien basierend auf gesammelten Informationen zu generieren und sie deklarativ zu aktualisieren.
Hierfür wird eine dynamische Generierung von Konfigurationsdateien nach einem festgelegten Template verwendet. Es gibt bereits vorgefertigte Presets „generic“ und „cozystack“. Talm kann während der Generierung Informationen aus der Talos API sammeln und diese für die resultierenden Konfigurationen nutzen. Diese Konfigurationsdateien enthalten keine Geheimnisse, sondern nur Änderungen, was es ermöglicht, sie bequem in Git zu speichern und deklarativ zu verwalten.
In der Mehrheit entspricht Talm der Struktur von Helm und verwendet das Konzept des Charts, in dem Vorlagen zur Generierung von Konfigurationen beschrieben werden. Es werden Helm-ähnliche Lookup-Funktionen unterstützt, um die Talos API direkt abzufragen und zusätzliche Metadaten zur Generierung von Konfigurationsdateien mithilfe von „go templates“ und der Bibliothek sprig zu sammeln.
Befehl: talm template -t templates/controlplane.yaml -e 1.2.3.4 -n 1.2.3.4 > nodes/srv1.yaml
Fragt die Node „1.2.3.4“ über die API ab, generiert eine neue Konfigurationsdatei aus der Vorlage, indem die erforderlichen Daten eingefügt werden. Die erhaltene Konfigurationsdatei kann sofort mit nur einem Befehl angewendet werden: talm apply -f nodes/srv1.yaml
In jeder solchen Talm-Konfigurationsdatei legt Talm seine eigene Modeline fest, in der es die Endpunkte der Nodes und die Vorlagen speichert, aus denen es abgerufen wurde, um sie bequem zu nutzen und ohne zusätzliche Optionen zu aktualisieren. Talm unterstützt alle gleichen Befehle wie das Upstream-Tool talosctl, erlaubt aber das Übergeben einer Konfigurationsdatei für die Nodes, zum Beispiel: talm dashboard -f nodes/srv1.yaml -f nodes/srv2.yaml -f nodes/srv3.yaml
zeigt ein interaktives Dashboard für alle drei Nodes an. Und der Befehl: talm get routes -f nodes/srv1.yaml
zeigt eine Liste von Routen auf dem Node "srv1" an.
Wenn nötig, können die Konfigurationsdateien mit der Option "—full" auf einen separaten PXE-Server heruntergeladen werden, was es den Nodes ermöglicht, diese automatisch herunterzuladen. Auf diese Weise bewahrt Talm die Variabilität von Bare-Metal Server, und sorgt für eine bequeme Verwaltung gemäß den besten GitOps-Praktiken.
Quelle: opennet.ru
