Dezvoltatorii platformei PaaS Cozystack au pregătit proiectul Talm, menit să simplifice configurarea serverelor bare-metal pentru Talos Linux, un sistem de operare destinat rulării Kubernetes, care are o API similară cu Kubernetes și se configurează printr-un manifest Yaml. Deși Talm a fost creat pentru a descrie instalarea declarativă a Cozystack, nu este legat în mod specific de această platformă și poate fi utilizat pentru a gestiona orice configurații Talos Linux. Proiectul se dezvoltă sub licența MPL.
Necesitatea dezvoltării unui alt manager de configurații pentru Talos Linux se explică prin orientarea către serverele bare-metal. Dezvoltatorii și-au propus să creeze o interfață cât mai simplă, asemănătoare cu Helm și kubectl, utilități bine cunoscute de administratorii Kubernetes.
Întrucât fiecare server fizic are o configurație diferită (adrese MAC, interfețe și discuri), este necesar un fișier de configurație separat pentru fiecare nod. Este nevoie de un manager simplu care să permită generarea acestor fișiere de configurație pe baza informațiilor colectate și să le actualizeze declarativ.
Pentru aceasta, se folosește generarea dinamică a fișierelor de configurație pe baza unui șablon. Există presetări gata făcute „generic” și „cozystack”. Talm poate, în timpul generării, să colecteze informații din API-ul Talos și să le utilizeze pentru rezultatele configurațiilor. Aceste fișiere de configurație nu conțin secrete, ci doar modificări, ceea ce permite stocarea lor convenabil în Git și gestionarea declarativă.
În majoritatea cazurilor, Talm repetă structura Helm, operând cu noțiunea de chart, în care sunt descrise șabloanele pentru generarea configurației. Sunt suportate funcții asemănătoare cu cele din Helm pentru interogarea directă a API-ului Talos și colectarea de metadate suplimentare pentru generarea fișierelor de configurație utilizând „go templates” și biblioteca sprig.
Comanda: talm template -t templates/controlplane.yaml -e 1.2.3.4 -n 1.2.3.4 > nodes/srv1.yaml
Interoghează nodul „1.2.3.4” prin API, generează pentru acesta un nou fișier de configurație din șablon, substituind datele necesare. Fișierul de configurație obținut poate fi aplicat imediat cu o singură comandă: talm apply -f nodes/srv1.yaml
De asemenea, în fiecare astfel de fișier de configurație, Talm stabilește propriul său model, în care memorizesc endpoint-urile nodului și șabloanele din care a fost obținut, pentru a fi ușor aplicabile și actualizabile fără a fi nevoie de opțiuni suplimentare. Talm suportă aceleași comenzi ca și utilitarul upstream talosctl, dar permite transmiterea fișierului de configurație al nodului, de exemplu: talm dashboard -f nodes/srv1.yaml -f nodes/srv2.yaml -f nodes/srv3.yaml
va genera un tablou de bord interactiv pentru toate cele trei noduri. Iar comanda: talm get routes -f nodes/srv1.yaml
va genera o listă a rutelor pe nodul „srv1”
Dacă este necesar, fișierele de configurație pot fi descărcate cu opțiunea „—full” pe un server PXE distinct, ceea ce permite nodurilor să le descarce automat. Astfel, Talm păstrează variabilitatea bare-metal servere, asigurând o gestionare ușoară a acestora conform celor mai bune practici GitOps.
Sursa: opennet.ro
