Virtforge

Легковесный оркестратор виртуальных машин с HTTP API и декларативными YAML-конфигурациями

VirtForge — это инструмент для управления виртуальными машинами через API и конфигурации в стиле Infrastructure as Code.

Он занимает пространство между простым virt-manager, который удобен для ручной работы, и тяжёлыми платформами вроде Proxmox или OpenStack, которые требуют отдельной экосистемы, базы данных, веб-интерфейса и заметной операционной нагрузки.

Идея VirtForge проще: описать виртуальные машины, сети и хранилища в YAML, отправить конфигурацию агенту, а агент создаст нужное состояние через libvirt.

Что делает VirtForge

VirtForge позволяет описывать инфраструктуру виртуальных машин как код: диски, сети, ресурсы, образы, cloud-init, Ignition, снапшоты и параметры запуска хранятся в обычных YAML-файлах.

CLI отправляет эти описания на агент, установленный на хосте виртуализации. Агент предоставляет HTTP/HTTPS API, подключается к libvirt и управляет виртуальными машинами через KVM/QEMU на Linux или HVF/QEMU на macOS.

Такой подход позволяет не держать всю логику в ручных командах, скриптах или веб-интерфейсе. Конфигурацию можно хранить в Git, ревьюить, изменять, экспортировать обратно из существующих ВМ и повторно применять.

Зачем это нужно

Во многих небольших инфраструктурах OpenStack избыточен, Proxmox слишком привязан к собственному веб-интерфейсу и модели управления, а ручная работа через virsh или virt-manager плохо масштабируется и плохо воспроизводится.

VirtForge решает более узкую задачу: дать простой API-first и CLI-first слой управления виртуальными машинами поверх libvirt.

Он не пытается стать облачной платформой общего назначения. Его задача — сделать управление ВМ предсказуемым, автоматизируемым и удобным для инженера, который мыслит конфигурациями, API и Git, а не кликами в панели управления.

Архитектура

Проект состоит из двух основных частей.

VirtForge Agent работает на хосте виртуализации. Он подключается к libvirt, управляет виртуальными машинами, сетями, пулами хранения, образами и снапшотами, а наружу предоставляет JSON API.

VirtForge CLI работает на любой операционной системе и обращается к агенту по HTTP или HTTPS. Через CLI можно деплоить ВМ из YAML, получать список машин, запускать и останавливать их, экспортировать конфигурации, управлять снапшотами и использовать JSON-вывод для автоматизации.

Архитектурно VirtForge остаётся тонким control-plane над libvirt. Он не заменяет гипервизор, не хранит сложное состояние в собственной базе данных и не навязывает отдельную платформу. Основная работа остаётся за KVM, QEMU, HVF и libvirt.

Infrastructure as Code для виртуальных машин

Ключевая идея VirtForge — полный жизненный цикл ВМ через декларативные файлы.

В одном YAML можно описать одну машину, группу машин или сразу несколько сущностей: пулы хранения, сети и виртуальные машины. Multi-document YAML позволяет развернуть инфраструктуру в правильном порядке и удалить её в обратном порядке.

Это полезно для тестовых стендов, домашних лабораторий, CI/CD, небольших production-нагрузок и воспроизводимых dev-окружений. Вместо набора ручных действий появляется понятный цикл: описать, применить, проверить, экспортировать, изменить, применить снова.

Безопасность и эксплуатация

VirtForge рассчитан не только на локальные эксперименты, но и на эксплуатацию на удалённых хостах.

Агент поддерживает HTTPS, mTLS и bearer-token аутентификацию. Это позволяет использовать его не как локальную игрушку, а как управляемый API-сервис, доступ к которому можно ограничить и встроить в нормальную инфраструктурную модель безопасности.

Для наблюдаемости предусмотрены health endpoints и метрики Prometheus. Можно отслеживать состояние libvirt, количество ВМ, ошибки деплоя, задержки API и другие эксплуатационные показатели.

Для кого предназначен

VirtForge подходит DevOps- и SRE-инженерам, системным администраторам, разработчикам и владельцам домашних лабораторий, которым нужно управлять виртуальными машинами проще, чем через OpenStack, но системнее, чем через ручные команды.

Это хороший инструмент для небольших KVM-хостов, тестовых окружений, CI/CD-пайплайнов, edge-узлов, локальных стендов и инфраструктурных экспериментов.

Он не предназначен для замены Kubernetes, публичных облаков или больших enterprise-платформ виртуализации. Если нужна полноценная мультитенантная облачная платформа, стоит смотреть в сторону OpenStack. Если нужен готовый веб-интерфейс с кластеризацией, ZFS и Ceph, лучше подойдёт Proxmox.

VirtForge нужен там, где хочется оставить виртуализацию простой, но сделать её управляемой как код.

Текущий статус

Проект поддерживает создание, запуск, остановку и удаление виртуальных машин, декларативный деплой из YAML, управление сетями и пулами хранения, работу с образами, cloud-init и Ignition, снапшоты, TLS/mTLS, токен-аутентификацию, CLI-конфигурацию, Prometheus-метрики и health checks.

Планируемое развитие включает живую миграцию между хостами и готовые Grafana-дашборды для визуализации метрик.

Главная идея

VirtForge — это не попытка написать новый OpenStack.

Это попытка сделать маленький, понятный и проверяемый слой управления виртуализацией: без базы данных, без тяжёлого веб-интерфейса, без лишней платформенной магии.

Виртуальные машины остаются обычными ВМ libvirt. Конфигурации остаются обычными YAML-файлами. Управление остаётся доступным через CLI и HTTP API.

Именно в этом смысл проекта: дать инженеру простой способ управлять виртуализацией как кодом, не превращая небольшой сервер с KVM в отдельное облако со всей его сложностью.