Part 1 – Introduction
I’ve been experimenting with Vagrant to automate the creation of virtual Software-Defined Networking (SDN) labs. This blog explains how create SDN labs with Vagrant.
Why SDN labs? Maybe you’re a network student or engineer learning new skills. Maybe you want to develop the next killer SDN app. Perhaps you’re doing SDN research. Virtual labs are a great way to test ideas without having to invest in SDN switch hardware, and can be set up quickly.
Vagrant is useful for automating standing up and configuring virtual machines for development environments. It is ideal for virtual SDN labs, as it allows designs to be shared easily, without need for shipping large binaries or manual build instructions. A text file (called a Vagrantfile) is all that is required to stand up a complete virtual lab, with multiple VMs, including networking.
SDN lab architecture, built with Vagrant, looks like this:
How it works (at a very high level)
- From a command prompt in the directory that the Vagrantfile is in type ‘vagrant up’
- Vagrant reads it’s configuration from the Vagrantfile
- Vagrant configures and instructs the hypervisor (provider) to stand up guests, from packaged VM images called boxes. This can include custom network configurations.
- Vagrant runs any provisioning required inside the new guest(s), as described in Vagrantfile, and associated configuration files (example bootstrap.sh)
I’ve started a repo of Vagrant configurations for SDN labs at https://github.com/mattjhayes/Vagrant
Part 2 of this blog will cover installation.