Gli sviluppatori della piattaforma PaaS open source Cozystack hanno preparato il progetto Talm, progettato per semplificare la configurazione dei server bare-metal per Talos Linux, un sistema operativo per l'esecuzione di Kubernetes, che possiede un'API simile a Kubernetes e può essere configurato con un singolo manifesto YAML. Anche se Talm è stato creato per descrivere l'installazione dichiarativa di Cozystack, non è specificamente legato a questa piattaforma e può essere utilizzato per gestire qualsiasi configurazione di Talos Linux. Il progetto è in sviluppo sotto la licenza MPL.
La necessità di sviluppare un ulteriore gestore di configurazioni per Talos Linux è dovuta all'orientamento verso i server bare-metal. Gli sviluppatori hanno cercato di creare un'interfaccia il più semplice possibile, simile a Helm e kubectl, utilità ben conosciute dagli amministratori Kubernetes.
Poiché ogni server fisico presenta una configurazione differente (indirizzi MAC, interfacce e dischi), è necessario avere un file di configurazione separato per ogni nodo. È necessario un gestore semplice che consenta di generare tali file di configurazione basati sulle informazioni raccolte e di aggiornarli in modo dichiarativo.
A tal fine, si utilizza la generazione dinamica di file di configurazione basata su un modello. Sono disponibili preset predefiniti 'generic' e 'cozystack'. Talm è in grado di raccogliere informazioni dall'API di Talos durante la fase di generazione e di utilizzarle per i file di configurazione risultanti. Questi file di configurazione non contengono segreti, ma solo modifiche, il che consente di conservarli comodamente in Git e di gestirli in modo dichiarativo.
In larga misura, Talm replica la struttura di Helm, operando con il concetto di chart, che descrive i modelli per la generazione della configurazione. Sono supportate funzioni simili a Helm per interrogare direttamente l'API di Talos e raccogliere ulteriori metadati per generare file di configurazione utilizzando 'go templates' e la libreria sprig.
Comando: talm template -t templates/controlplane.yaml -e 1.2.3.4 -n 1.2.3.4 > nodes/srv1.yaml
Interroga il nodo '1.2.3.4' tramite API, genera un nuovo file di configurazione per esso a partire dal modello, inserendo i dati necessari. Il file di configurazione ottenuto può essere applicato immediatamente con un solo comando: talm apply -f nodes/srv1.yaml
In ogni file di configurazione di questo tipo, Talm imposta il proprio modeline, in cui memorizza gli endpoint del nodo e i template da cui è stato ottenuto, in modo da poterli applicare e aggiornare facilmente senza specificare opzioni aggiuntive. Talm supporta tutti gli stessi comandi dell'utility upstream talosctl, ma consente di passare il file di configurazione del nodo, ad esempio: talm dashboard -f nodes/srv1.yaml -f nodes/srv2.yaml -f nodes/srv3.yaml
resterà un dashboard interattivo per tutti e tre i nodi. E il comando: talm get routes -f nodes/srv1.yaml
resterà un elenco di route sul nodo "srv1"
Se necessario, i file di configurazione possono essere esportati con l'opzione "—full" su un server PXE separato, consentendo ai nodi di scaricarli automaticamente. In questo modo, Talm mantiene la variabilità bare-metal server, garantendo una gestione facile in conformità con le migliori pratiche GitOps.
Fonte: opennet.ru
