There are two versions of this lab in the repo; choose the version that your hardware is able to support best. A minimum of 16GB of RAM is recommended for the Full version of the lab.
The Full version uses two vQFX images that consist of two VMs, the virtual Routing Engine (vqfx-re) and virtual Packet Forwarding Engine (vqfx-pfe). The Lite version omits the PFE image, reducing the RAM footprint, but does not support certain features such as DHCP or IPv6 Route Advertisements.
The VyOS images are identical between labs. The Centos host images receive IP and IPv6 addresses dynamically in the Full version, but are configured statically in the Lite (due to aforementioned lack of support from vqfx-re).
All VM Settings and provisioning data are defined in Vagrantfile. This includes NIC-to-bridge mappings, per-role Ansible playbooks/host data (for vQFX and VyOS), and post-boot shell commands to run on CentOS hosts.
For additional documentation on Vagrantfile commands, see https://www.vagrantup.com/docs/vagrantfile
Full Lab Topology:
Lite Lab Topology:
sudo dnf -y install https://releases.hashicorp.com/vagrant/2.2.14/vagrant_2.2.14_x86_64.rpm
1. Enable repo
sudo dnf -y install wget
sudo wget https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo
sudo mv virtualbox.repo /etc/yum.repos.d/
sudo wget -q https://www.virtualbox.org/download/oracle_vbox.asc
sudo rpm --import oracle_vbox.asc
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
2. Install required libs/modules
sudo dnf -y install binutils kernel-devel kernel-headers libgomp make patch gcc glibc-headers glibc-devel dkms
sudo dnf install -y VirtualBox-6.1
1. Create and activate python3 virtual environment
python3 -m venv {{ name_of_virtual_env }}
source {{ name_of_virtual_env }}/bin/activate
2. Install Ansible and plugins
sudo dnf install -y ansible
ansible-galaxy install Juniper.junos
pip3 install netaddr junos-eznc jxmlease
https://www.virtualbox.org/wiki/Downloads
https://www.vagrantup.com/downloads
1. Create and activate python3 virtual environment
python3 -m venv {{ name_of_virtual_env }}
source {{ name_of_virtual_env }}/bin/activate
2. Install Ansible and required modules
pip3 install ansible netaddr junos-eznc jxmlease
ansible-galaxy install Juniper.junos
ansible-galaxy collection install vyos.vyos
Clone the lab repo
sudo dnf install -y git
mkdir lab
cd lab
git clone https://github.com/nanog/hackathon81_lab
Launch VMs defined in Vagrantfile
cd full|lite-vqfx-vyos
export VAGRANT_DEFAULT_PROVIDER=virtualbox
vagrant up
If centos1/2 provisioning displays errors about invalid routes, recreate those VMs
vagrant destroy -f centos1 centos2 && vagrant up centos1 centos2
Instantiate and provision all unprovisioned images defined in Vagrantfile
vagrant up
Instantiate and provision a specific VM
vagrant up {{ vm_name }}
ssh to VM
vagrant ssh {{ vm_name }}
Delete all images (often needed to re-provision after making changes to the Vagrantfile)
vagrant destroy [-f]
Delete a specific VM
vagrant destroy [-f] {{ vm_name }}
Get state of all VMs defined in Vagrantfile
vagrant status
Run provisioning operations on active VM
vagrant provision [-f] {{ vm_name }}

