Проект Cozystack выпустил Talm, менеджер конфигураций для Talos Linux

Разработчики свободной PaaS-платформы 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.

Источник: http://www.opennet.ru/opennews/art.shtml?num=61223