Using VM Templates and NSX-T for Repeatable Virtual Network Deployments
Published: 2020-12-21 17:56:55

---
title: Using VM Templates and NSX-T for Repeatable Virtual Network Deployments
published: true
date: 2020-10-04 00:46:00 UTC
tags: 
canonical_url: 
---

So far, we've provided the infrastructure for continuous delivery / continuous integration, but it's been for those _ **other guys**._

Is that odd?

Let's try using the principles provided for more infrastructure-oriented reasons. Let's build a network lab using NSX-T.

First, we need some form of a mutable router. Normally, that'd be whatever flavor's "in production," but the specific implementation doesn't really matter. 

First, we need to outline what basic functionality would need to be in place for this basic image to work:

- Management Plane isolation: Build a separate "routing table," or VRF for the first applied interface.
- Automatic connectivity. We should have some way to automatically get network connectivity separate from the "data plane," and perform configuration loading, command invocations, and software lifecycle management. 
- Enable inbound management protocols.

I have built a light configuration to do that [here](https://github.com/ngschmidt/vyos-easy-template-configuration).

  

Once operational, we will want a good process to keep software up-to-date. Once established with this basic configuration, it'll be possible to SSH into this device and run the update process. Here's how:
  

```
vyos@vyos:~$ add system image https://downloads.vyos.io/rolling/current/amd64/vyos-rolling-latest.iso vrf mgmtTrying to fetch ISO file from https://downloads.vyos.io/rolling/current/amd64/vyos-rolling-latest.iso % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 309M 100 309M 0 0 1424k 0 0:03:42 0:03:42 --:--:-- 1551kISO download succeeded.Checking for digital signature file... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (22) The requested URL returned error: 404 Not FoundUnable to fetch digital signature file.Do you want to continue without signature check? (yes/no) [yes] yesChecking MD5 checksums of files on the ISO image...OK.Done!What would you like to name this image? [1.3-rolling-202010020117]:OK. This image will be named: 1.3-rolling-202010020117Installing "1.3-rolling-202010020117" image.Copying new release files...Would you like to save the current configurationdirectory and config file? (Yes/No) [Yes]: YesCopying current configuration...Would you like to save the SSH host keys from yourcurrent configuration? (Yes/No) [Yes]:Copying SSH keys...Running post-install script...Setting up grub configuration...Done.vyos@vyos:~$ show system imageThe system currently has the following image(s) installed: 1: 1.3-rolling-202010020117 (default boot) 2: 1.3-rolling-202009200118vyos@vyos:~$ rebootAre you sure you want to reboot this system? [y/N] y...vyos@vyos:~$ show system imageThe system currently has the following image(s) installed: 1: 1.3-rolling-202010020117 (default boot) (running image) 2: 1.3-rolling-202009200118vyos@vyos:~$ delete system imagePossible completions: Enter Execute the current command 1.3-rolling-202009200118 Name of image image to delete 1.3-rolling-202010020117vyos@vyos:~$ delete system image 1.3-rolling-202009200118Are you sure you want to delete the"1.3-rolling-202009200118" image? (Yes/No) [No]: YesDeleting the "1.3-rolling-202009200118" image...Done
```

Ta-da! new version! We cleaned up the old image for disk space compaction as well.

  

Our virtual router is built - let's shut it down, and then convert it to a template:

[![](https://1.bp.blogspot.com/-6G2Nd2NU1_Q/X3kYAvxhfOI/AAAAAAAABD8/t4BlFdEWLi0fpr8qyGTfdHg-P1IBUy9nACLcBGAsYHQ/s16000/blog-03blog2020-1.PNG)](https://1.bp.blogspot.com/-6G2Nd2NU1_Q/X3kYAvxhfOI/AAAAAAAABD8/t4BlFdEWLi0fpr8qyGTfdHg-P1IBUy9nACLcBGAsYHQ/s840/blog-03blog2020-1.PNG)
  

Ready to go!