Update 2/2020 - When I originally wrote this I was anticipating that Cisco would release VIRL 2.0 in the near future. This has not been the case and Cisco has yet to commit to a release date. I find the current version of VIRL lacking and do not plan on investing in it further until 2.0 is released.
For my CCENT and CCNA I was able to use a combination of Boson's courseware, (found here and highly recommended) and GNS3 in conjunction with images I had downloaded as part of my VIRL subscription to run through lab scenarios.
While my previous approach worked fine for entry level certifications. I now find myself looking for a lab option that allows me to quickly spin up and tear down labs from any machine as long as I have a reliable internet connection.
I toyed around with the idea of building out or buying a second hand server and running it in my office at home. I may eventually come back to this idea if I find myself building out scenarios that require longer run times or multi-vendor support. For the purposes of the CCNP, VIRL's Cisco only support is not a limitation. I also wasn't keen on the idea of doubling my electricity bill with a noisy R720 or supermicro build.
Hashicorp's Terraform is an IAAS configuration language that allows you to easily define and deploy across multiple providers in addition to on-prem. The cloud provider I'll be using is Packet. Packet is a bare-metal cloud hosting provider that offers decent rates for some very high powered machines. They also have a deal with Cisco in which they are the only authorized cloud provider you can run Virl on, so naturally I chose them as my provider for this experiment.
(All sarcasm aside, my limited experience with the company has been great. It seems that they have a procedure to confirm you are who you claim to be before allowing you to spin up anything. A representative checked my Linkedin to verify my identity.)
In this scenario I'm using my underpowered Ubuntu 19.04 "travel" laptop. All instructions from here on out will assume you are also running the following steps on an ubuntu machine. Instructions for installing and running terraform on your OS can be found here.
Installing on Ubuntu is relatively easy since it was added to the snap store.
To install, simply run 'sudo snap install terraform' in a terminal.
Confirm it is installed by entering 'terraform' in the terminal.
Using your choice of editor, create a file called 'terraform-test.tf'. In that file paste the following content. More info on how the Terraform configuration language works can be found here
Replace 'your-api-key-here' with your api key that you can find in the Packet console. Documentation on how to retreive and use your api key can be found here
Navigate into the directory you plan on using as your home for your .tf files and run 'terraform init'
To stage your changes, run "Terraform Plan"
Enter "yes" when prompted
In my experience it usually takes about one minute to apply the config and get an acknowledgement back.
Once completed, view your settings, including the public ipv4 and ipv6 addresses with the "terraform show" command
Because this is only a "kick the tires" test build, we can go ahead and tear down our environment. To do so enter the "terraform destroy" command. This will destroy both your machine, as well as, the project under which the machine was built and deployed.
Once I get around to renewing my VIRL subscription you can expect the second part in this series which will cover further modifying our .tf file to deploy a fully realized networking lab.






