Gli sviluppatori della piattaforma PaaS open-source Cozystack hanno creato il progetto Talm, progettato per semplificare la configurazione dei server bare-metal per Talos Linux, un sistema operativo per l'esecuzione di Kubernetes, dotato di un'API simile a Kubernetes e configurabile tramite un unico 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 è sviluppato sotto licenza MPL.
La necessità di sviluppare un ulteriore gestore di configurazione per Talos Linux è dovuta all'orientamento verso i server bare-metal. Gli sviluppatori hanno cercato di creare un'interfaccia quanto più semplice possibile, simile a Helm e kubectl, utilità ben note agli amministratori di Kubernetes.
Considerando che ogni server fisico ha configurazioni diverse (indirizzi MAC, interfacce e dischi), è necessario avere un file di configurazione separato per ogni nodo. È fondamentale un gestore semplice che consenta di generare tali file di configurazione sulla base delle informazioni raccolte e di aggiornarli in modo dichiarativo.
Questo utilizza la generazione dinamica di file di configurazione basata su un modello specificato. Sono disponibili preset già pronti "generic" e "cozystack". Talm è in grado, durante la generazione, di raccogliere informazioni dall'API di Talos e utilizzarle per le configurazioni risultanti. Questi file di configurazione non contengono segreti, solo modifiche, il che consente di conservarli comodamente in Git e gestirli in modo dichiarativo.
Nella maggior parte dei casi, Talm replica la struttura di Helm, operando sul concetto di chart, in cui sono descritti i modelli per la generazione della configurazione. Sono supportate le funzioni simili a Helm lookup per interpellare direttamente l'API di Talos e raccogliere ulteriori metadati per la generazione di 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 utilizzando un modello, sostituendo 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, Talm imposta il proprio modeline, memorizzando gli endpoint dei nodi e i modelli da cui è stato ottenuto, facilitando l'applicazione e l'aggiornamento senza dover specificare ulteriori opzioni. Talm supporta gli stessi comandi dell'utility upstream talosctl, ma permette di passare i file di configurazione dei nodi, ad esempio: talm dashboard -f nodes/srv1.yaml -f nodes/srv2.yaml -f nodes/srv3.yaml
visualizzerà un dashboard interattivo per tutti e tre i nodi. E il comando: talm get routes -f nodes/srv1.yaml
resterà un elenco delle rotte sul nodo «srv1»
Se necessario, i file di configurazione possono essere esportati con l'opzione «--full» su un server PXE separato, permettendo ai nodi di scaricarli automaticamente. In questo modo, Talm mantiene la variabilità bare-metal server, assicurando una gestione comoda in conformità con le migliori pratiche GitOps.
Fonte: opennet.ru
