Vývojáři otevřené PaaS platformy Cozystack připravili projekt Talm, jehož cílem je zjednodušit konfiguraci bare-metal serverů pro Talos Linux, operační systém pro spuštění Kubernetes, který má Kubernetes-podobné API a nastavuje se jedním Yaml manifestem. Ačkoli byl Talm vytvořen k popisu deklarativní instalace Cozystack, není konkrétně vázán na tuto platformu a může být použit k ovládání jakýchkoli konfigurací Talos Linux. Projekt se vyvíjí pod licencí MPL.
Potřeba vyvinout další manažer konfigurací pro Talos Linux vyplývá z orientace na bare-metal servery. Vývojáři se snažili vytvořit co nejjednodušší rozhraní, podobné Helm a kubectl, které jsou administrátorům Kubernetes dobře známy.
Vzhledem k tomu, že každý fyzický server má různou konfiguraci (MAC adresy, rozhraní a disky), je nutné mít samostatný konfigurační soubor pro každý uzel. Potřebujeme jednoduchého manažera, který by generoval tyto konfigurační soubory na základě shromážděných informací a deklarativně je aktualizoval.
K tomu se používá dynamické generování konfiguračních souborů podle zadané šablony. Jsou k dispozici předem připravené předvolby „generic“ a „cozystack“. Talm dokáže během generace shromáždit informace z Talos API a využít je pro výsledné konfigurace. Tyto konfigurační soubory neobsahují tajemství, ale pouze změny, což umožňuje pohodlné uchovávání v Gitu a deklarativní správu.
Většina Talm opakuje strukturu Helm a operuje s pojmem chart, ve kterém jsou popsány šablony pro generování konfigurace. Podporovány jsou funkce podobné Helm lookup pro dotazování Talos API přímo a shromažďování dalších metadat pro generování konfiguračních souborů s využitím „go templates“ a knihovny sprig.
Příkaz: talm template -t templates/controlplane.yaml -e 1.2.3.4 -n 1.2.3.4 > nodes/srv1.yaml
Dotazuje uzel „1.2.3.4“ přes API, generuje pro něj nový konfigurační soubor ze šablony, přičemž vkládá potřebná data. Získaný konfigurační soubor lze okamžitě aplikovat pouze jedním příkazem: talm apply -f nodes/srv1.yaml
Také v každém takovém konfiguračním souboru Talm nastavuje svou modelinu, ve které si pamatuje koncové body uzlu a šablony, z nichž byl získán, aby je bylo možné snadno používat a aktualizovat bez uvádění dalších možností. Talm podporuje všechny stejné příkazy jako upstream utilita talosctl, ale umožňuje předávat jim konfigurační soubor uzlu, například: talm dashboard -f nodes/srv1.yaml -f nodes/srv2.yaml -f nodes/srv3.yaml
vypíše interaktivní dashboard pro všechny tři uzly. A příkaz: talm get routes -f nodes/srv1.yaml
vypíše seznam rout na uzlu „srv1“
V případě potřeby lze konfigurační soubory exportovat s volbou „—full“ na samostatný PXE server, což umožňuje uzlům stáhnout je automaticky. Takto Talm zachovává variabilitu bare-metal servery, zajišťující snadnou správu v souladu s nejlepšími praktikami GitOps.
Zdroj: opennet.ru
