Vývojáři svobodné platformy Cozystack (PaaS) vydali nástroj Talm, jehož účelem je zjednodušit konfiguraci serverů s Talos Linuxem, operačním systémem pro nasazení Kubernetes, který má podobné API jako samotné Kubernetes. Přestože byl Talm původně vytvořen pro deklarativní instalaci Cozystack, není specificky vázán na tuto platformu a lze ho použít pro správu jakýchkoliv konfigurací Talos Linuxu.
Nástroj řeší zásadní problémy s konfigurací jako jsou decentralizované konfigurační soubory, jejich variabilita a šance špatné konfigurace při replikaci na vícero serverů.
Motivací vývoje tohoto nástroje bylo zjednodušení celého konfiguračního procesu a odstranění těchto nedostatků. Nástroj poskytuje konfigurační management velice podobný nástrojům Helm a Kubectl, které jsou dobře známé správcům Kubernetes.
Projekt je vyvíjen pod licencí MPL.
Vzhledem k tomu, že má každý oddělený fyzický server různou konfiguraci jako jsou např. IP adresy, rozhraní a disky, bylo v minulosti nezbytné mít oddělený konfigurační soubor pro každý z nich. Talm umožňuje dynamicky generovat tyto konfigurační soubory na základě předdefinovaných šablon a shromážděných metadat z API Talos serverů a deklarativně tyto soubory aktualizovat. K dispozici jsou předpřipravené šablony typu "generic" a "cozystack" a vygenerované konfigurační soubory neobsahují žádná tajemství (secrets), pouze změny, což zajišťuje pohodlné uchovávání ve verzovacích systémech a jejich deklarativní nasazení.
Talm v mnoha ohledech opakuje strukturu Helm a používá jeho terminologii např. pojem "chart", ve kterém jsou popsány šablony pro generování konfigurace. Podporovány jsou Helm-podobné funkce jako např. "lookup" pro, již zmíněné, přímé dotazování se na Talos API a shromažďování dodatečných metadat. Pro generování konfiguračních souborů jsou, pod pokličkou, použity "go templates" a knihovna sprig.
Následující příkaz se dotazuje na API serveru "1.2.3.4", generuje pro něj nový konfigurační soubor a schromažďuje potřebná metadata:
talm template -t templates/controlplane.yaml -e 1.2.3.4 -n 1.2.3.4 > nodes/srv1.yaml
Výstupem je konfigurační soubor, kterým lze okamžitě aplikovat konfiguraci na příslušný server pomocí příkazu:
talm apply -f nodes/srv1.yaml
Každý takový konfigurační soubor Talmu také obsahuje svůj "modeline", ve kterém si uchovává historii koncových bodů serveru a šablony, z nichž byl vygenerován,
což usnadňuje jejich aplikaci a aktualizaci bez nutnosti další složité konfigurace.
Talm podporuje veškeré příkazy z upstream nástroje "talosctl" a umožňuje jim předávat konfigurační soubor serveru, například:
talm dashboard -f nodes/srv1.yaml -f nodes/srv2.yaml -f nodes/srv3.yaml
Výstupem tohoto příkazu je spuštění interaktivního dashboardu v příkazové řádce, podobný htopu, obsahujícící potřebné informace, v tomto případě všech třech serverů.
Příkaz talm get routes -f nodes/srv1.yaml
, podobný příkazu "kubectl get ..." zobrazí seznam síťové konfigurace na serveru "srv1".
Nástroj umožňuje různé pokročilé vlastnosti jako např. generování konfiguračních souborů pro PXE server a to s parametrem --full
.
Jednotlivé servery potom mohou tuto konfiguraci automaticky stahovat.
Talm zmíněnými způsoby zachovává variabilitu Linux Talos serverů a zajišťuje pohodlný management konfigurace z centrálního bodu v souladu s postupy GitOps.