This repository provides a modular Infrastructure-as-Code (IaC) framework for deploying reproducible virtualized research environments using Vagrant and VMware Workstation.
The repository is structured to separate base configurations from project-specific logic:
- common-scripts/: Global provisioning scripts (e.g., development environment setup, common tools) shared across multiple projects.
- templates/: Baseline Vagrantfiles for various operating systems. These serve as verified starting points for new projects.
- projects/: Discrete lab environments. Each project directory contains a Vagrantfile that orchestrates specific network and node configurations.
The following components must be installed on the host system:
- VMware Workstation Pro/Player.
- Vagrant (
winget install Hashicorp.Vagrant). - Vagrant VMware Utility.
- Vagrant VMware Desktop Plugin (
vagrant plugin install vagrant-vmware-desktop).
To manage storage efficiently, the VAGRANT_HOME variable should be set to point to a drive with sufficient capacity for virtual machine images:
[System.Environment]::SetEnvironmentVariable("VAGRANT_HOME", "D:\Programs\Vagrant\home", "User")Navigate to the desired project directory:
cd projects/CyberRange
Initialize and provision the environment:
vagrant up
Access a specific node via SSH:
vagrant ssh <machine_name>
Update Boxes: vagrant box update
Resource Cleanup: vagrant destroy (Deletes instances while keeping the project configuration intact).
Prune Metadata: vagrant global-status --prune