← Проекты

multipass-compose в архиве

Оркестрация виртуальных машин одним манифестом

multipass-compose

multipass-compose - это docker-compose для Multipass от Canonical. Вы описываете несколько виртуальных машин Ubuntu в одном YAML-⁠файле и поднимаете или удаляете их разом.

Проект в архиве - репозиторий доступен только для чтения с 2023-11-21. Если нужно похожее сегодня, поддерживаемая альтернатива - lima / colima. Оставлен здесь для справки.

Зачем

Делать это руками - значит несколько раз запускать multipass launch с одними и теми же флагами, настраивать cloud-init на каждой машине и помнить, какая ВМ за что отвечает. multipass-compose складывает всё в один файл.

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

Возможности

  • Один файл - все ВМ в одном multipass-compose.yaml, в стиле docker-compose.
  • Размер под каждую машину - CPU, память и диск задаются на каждую ВМ.
  • cloud-init - каждой машине можно дать свой cloud-init для настройки при первом запуске.
  • Провижининг - настройка машин после запуска по SSH (пароль или ключ) или через Ansible.
  • Apple Silicon и Intel - один и тот же файл работает на обоих.

Установка

Сначала нужен сам Multipass, затем поставьте CLI через Go:

brew install --cask multipass   # необходим Multipass
go install github.com/petr-korobeinikov/multipass-compose/cmd/multipass-compose@latest

Использование

Опишите машины в multipass-compose.yaml:

services:
  web-server:
    image: focal
  database:
    image: focal
  backend:
    image: focal

Затем запустите:

multipass-compose up       # запустить все машины
multipass-compose status   # проверить их состояние
multipass-compose down     # остановить и удалить их

Стек

  • Go, установка через go install
  • YAML-⁠манифест поверх CLI Multipass
  • cloud-init для настройки при первом запуске, Ansible для провижининга

Ссылки

  • GitHub - исходники и релизы (архив, read-only, MIT)
  • Документация - быстрый старт, установка, руководства
  • Примеры - девять примеров, от одной ВМ до провижининга через Ansible