Представляем Talm — менеджер конфигурации для Talos Linux
Автор: Andrei Kvapil (Ænix)
Проект Cozystack выпустил Talm — менеджер конфигурации для Talos Linux
Разработчики open-source PaaS-платформы Cozystack подготовили проект Talm, призванный упростить настройку bare-metal-серверов для Talos Linux — операционной системы, предназначенной для запуска Kubernetes, с Kubernetes-подобным API и настраиваемой через единый Yaml-манифест. Хотя Talm был создан для описания декларативной установки Cozystack, он не привязан именно к этой платформе и может использоваться для управления любыми конфигурациями Talos Linux. Проект развивается под лицензией MPL.
Необходимость разработки ещё одного менеджера конфигурации для Talos Linux обусловлена его ориентацией на bare-metal-серверы. Разработчики стремились создать максимально простой интерфейс, аналогичный хорошо известным инструментам администрирования Kubernetes, таким как Helm и kubectl.
Поскольку каждый физический сервер имеет разные конфигурации (MAC-адреса, интерфейсы и диски), для каждого узла необходим отдельный файл конфигурации. Нужен простой менеджер, способный генерировать такие файлы конфигурации на основе собранной информации и декларативно их обновлять.
Это достигается за счёт динамической генерации файлов конфигурации из заданного шаблона. Есть готовые пресеты generic и cozystack. На этапе генерации Talm может собирать информацию из Talos API и использовать её для итоговых конфигураций. Эти файлы конфигурации не содержат секретов, только изменения, что делает удобным их декларативное хранение и управление в Git.
Во многом Talm повторяет структуру Helm, используя концепцию чарта, в котором описываются шаблоны для генерации конфигураций. Он поддерживает Helm-подобные функции lookup для прямых запросов к Talos API и сбора дополнительных метаданных для генерации файлов конфигурации с помощью go-шаблонов и библиотеки 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, который запоминает endpoint’ы узла и шаблоны, из которых он был получен, что делает удобным их применение и обновление без дополнительных опций. Talm поддерживает все те же команды, что и оригинальная утилита 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.