Standardize the Terkin-Sandbox using Vagrant

Introduction

As we found Standardize the Terkin-Sandbox using Docker is currently not suitable to use for standardizing the sandbox environment for users on Windows and macOS, we will have to look into different directions.

Having refreshed our Vagrant skills just recently within GitHub - tunfish/tunfish-vxlan: A proof-of-concept for creating convenient VPN environments on top of secure WireGuard tunnels, with VXLAN. and GitHub - tunfish/tunfish-system: Create a convenient VPN infrastructure on top of secure WireGuard tunnels., we might well think about using a Vagrant Box running within VirtualBox on Windows and macOS in order to continue the standardization efforts.

State of the onion

We will get through some things we would need to assemble this step by step.

VirtualBox-USB-forwarding support for Windows and macOS

Support for privileged access of USB/UART ports from within virtual machines invoked from VirtualBox should be well supported.

Using Vagrant to automate VirtualBox-USB-forwarding

We will have to look into appropriate support for Vagrant in order to be able to automate things further.

Vagrant on Windows

According to Download - Vagrant by HashiCorp, Vagrant is available natively on Windows. There are even Chocolatey packages already, see

VirtualBox-USB-forwarding support for Vagrant

Outlook

In general, this looks good from 10.000 feet. If everything goes well, getting things up and running could be fully automated like:

Installation

# Install Chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

# Install VirtualBox
choco install virtualbox

# Install Vagrant
choco install vagrant

# Acquire sources from repository
git clone https://github.com/hiveeyes/hiveeyes-micropython-firmware
cd hiveeyes-micropython-firmware

# Provision and invoke workhorse machine
vagrant up

Usage

export TERKIN_WORKHORSE=vagrant

# All that jazz
make erase-device
make install-pycom-firmware
make setup
make install