Open Source Routing: Practical Lab
Earlier, I wrote about some interesting open source routing software that I’ve been exploring lately. In this post, I’ll provide you with some tools to get this lab running on your lab, using Vagrant and Ansible.
In this post, I’ll be using VirtualBox, and also Ansible and Vagrant. For this purpose, I’m assuming you’re at least somewhat familiar with these tools.
Please checkout my GitHub repository for access to the latest versions of all of the files we’ll discuss below - and an easy way to spin all of this up yourself.
Topology
First, here’s the topology we’ll be working with.
All “circuits” are implemented using VirtualBox host networks, described in the Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "trusty64"
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.define "r1" do |r1|
r1.vm.host_name = "r1"
r1.vm.network "private_network",
ip: "192.168.12.11",
virtualbox__intnet: "01-to-02"
r1.vm.network "private_network",
ip: "192.168.31.11",
virtualbox__intnet: "03-to-01"
r1.vm.network "private_network",
ip: "1.1.1.10",
virtualbox__intnet: "Network to Advertise"
r1.vm.provision "ansible" do |ansible|
ansible.playbook = "r1.yml"
Continue reading