Skip to content

feat: replace Vagrant with Multipass for ARM64 VM management - #2

Open
NormB wants to merge 1 commit into
mainfrom
feat/multipass-vms
Open

feat: replace Vagrant with Multipass for ARM64 VM management#2
NormB wants to merge 1 commit into
mainfrom
feat/multipass-vms

Conversation

@NormB

@NormB NormB commented Dec 30, 2025

Copy link
Copy Markdown
Owner

Summary

Replaces the failed Vagrant approach with Multipass for VM management on Apple Silicon.

Why Vagrant Failed

  • vagrant-qemu: VMs boot but SSH never connects (cloud-init hangs)
  • VirtualBox: No ARM64 boxes available (only x86)
  • VMware: Requires paid software

New Approach: Multipass

Multipass is Canonical's native VM manager that works reliably on Apple Silicon:

  • Native ARM64 Ubuntu images
  • Simple CLI
  • VMs get routable IPs
  • Integrates with Ansible

Changes

  • Added scripts/multipass-vms.sh for VM lifecycle management
  • Archived vagrant/ to archive/vagrant-failed/
  • Script auto-generates Ansible inventory with dynamic IPs

Usage

brew install --cask multipass
./scripts/multipass-vms.sh create
./scripts/multipass-vms.sh inventory
ansible-playbook -i ansible/inventory/multipass.yml ansible/playbooks/provision-vms.yml

Test plan

  • Install Multipass
  • Create VMs with script
  • Verify SSH connectivity
  • Run Ansible provisioning

Vagrant on Apple Silicon proved unreliable:
- vagrant-qemu: VMs boot but SSH never connects
- VirtualBox: No ARM64 boxes available
- VMware: Requires paid software

New approach uses Multipass which works natively on ARM64:
- Added scripts/multipass-vms.sh for VM lifecycle management
- Archived failed vagrant/ to archive/vagrant-failed/
- Ubuntu 22.04 ARM64 VMs with proper networking
- Simple: create, destroy, start, stop, status, ssh commands
- Auto-generates Ansible inventory with VM IPs

Usage:
  brew install --cask multipass
  ./scripts/multipass-vms.sh create
  ./scripts/multipass-vms.sh inventory
  ansible-playbook -i ansible/inventory/multipass.yml ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant