Разработчиците на платформата с отворен код Cozystack разработиха проекта Talm, предназначен да улесни конфигурацията на bare-metal сървъри за Talos Linux, операционна система за стартиране на Kubernetes, която има Kubernetes-подобно API и се конфигурира с един Yaml манифест. Въпреки че Talm е създаден за описване на декларативна инсталация на Cozystack, той не е конкретно свързан с тази платформа и може да се използва за управление на всякакви конфигурации на Talos Linux. Проектът се развива под лицензия MPL.
Необходимостта от разработката на още един мениджър на конфигурации за Talos Linux е продиктувана от спецификата на bare-metal сървърите. Разработчиците се стремят да създадат най-лесния интерфейс, подобен на Helm и kubectl, съзнателно познати утилити за администратори на Kubernetes.
Тъй като всеки физически сървър има различна конфигурация (MAC адреси, интерфейси и дискове), е необходимо да съществува отделен конфигурационен файл за всяка нода. Нужен е прост мениджър, който да генерира такива конфигурационни файлове на базата на събрана информация и да ги обновява декларативно.
За целта се използва динамично генериране на конфигурационни файлове по зададен шаблон. Има готови пресети „generic“ и „cozystack“. Talm може на етапа на генериране да събира информация от Talos API и да я използва за финалните конфигурации. Тези конфигурационни файлове не съдържат секрети, а само промени, което позволява удобно съхранение в Git и декларативно управление.
В повечето случаи Talm повтаря структурата на Helm, оперирайки с понятието чарт, в който се описват шаблони за генериране на конфигурация. Поддържат се Helm-подобни функции lookup за запитване към Talos API директно и събиране на допълнителни метаданни за генериране на конфигурационни файлове с помощта на „go templates“ и библиотеката sprig.
Команда: talm template -t templates/controlplane.yaml -e 1.2.3.4 -n 1.2.3.4 > nodes/srv1.yaml
Запитва нодата „1.2.3.4“ по API, генерира за нея нов конфигурационен файл от шаблона, замествайки необходимите данни. Полученият конфигурационен файл може веднага да бъде приложен с една команда: talm apply -f nodes/srv1.yaml
Във всеки такъв конфигурационен файл Talm задава своя modeline, в който запомня ендпоинтите на нодата и шаблоните, от които е получен, за да могат удобно да се прилагат и обновяват без необходимост от допълнителни опции. Talm поддържа всички същите команди като upstream утилитата talosctl, но позволява предаване на конфигурационен файл на нодата, например: talm dashboard -f nodes/srv1.yaml -f nodes/srv2.yaml -f nodes/srv3.yaml
ще изведе интерактивен дашборд за всички три ноди. А командата: talm get routes -f nodes/srv1.yaml
ще изведе списък с роутовете на нодата „srv1“
При необходимост конфигурационните файлове могат да се изтеглят с опцията „—full“ на отделен PXE-сървър, позволявайки на нодите да ги свалят автоматично. По този начин Talm запазва вариативността на bare-metal сървъри, осигурявайки удобно управление съгласно най-добрите практики GitOps.
Източник: opennet.ru
