Building a Cisco IOSv Vagrant Libvirt Box

Cisco IOSv is supported by the netlab libvirt package command. To build a IOSv box:

  • Create an empty directory on a Ubuntu machine with libvirt and Vagrant.

  • Copy the IOSv disk image (.vmdk file) into that directory

  • Execute netlab libvirt package iosv virtual-disk-file-name and follow the instructions


  • The ‌netlab libvirt package iosv command has been tested on Ubuntu 20.04 LTS and 22.04 LTS and might not work on other Linux distros.

  • On Ubuntu 22.04 LTS, libvirt-qemu user needs read and execute access to the VM disk file. It’s easiest if you create Vagrant boxes in a subdirectory of the /tmp directory.

Initial Device Configuration

During the box-building process (inspired by this recipe) you’ll have to copy-paste initial device configuration. netlab libvirt config iosv command displays the build recipe:

Creating initial configuration for Cisco IOSv

* Answer 'no' to the 'Would you like to enter the initial configuration dialog' prompt
* Press ENTER to start a CLI session
* Go into enable mode, enter configuration mode
* Copy-paste the following configuration (see also NOTE below the configuration)

hostname iosv
no ip domain lookup
ip domain name lab.local
no service config
crypto key generate rsa modulus 2048
ip ssh version 2
aaa new-model
aaa authentication login default local
aaa authorization exec default local
username vagrant privilege 15 secret vagrant
ip ssh pubkey-chain
 username vagrant
  key-hash ssh-rsa DD3BB82E850406E9ABFFA80AC0046ED6
vrf definition MGMT
 description Management interface
 address-family ipv4
interface GigabitEthernet0/0
 vrf forwarding MGMT
 description vagrant-management
 ip address dhcp
 no shutdown
line vty 0 4
 transport input ssh
event manager applet ENABLE-MGMT
 event syslog pattern "SYS-5-RESTART"
 action 0 cli command "enable"
 action 1 cli command "conf t"
 action 2 cli command "interface GigabitEthernet0/0"
 action 3 cli command "no shutdown"
 action 4 cli command "exit"
 action 5 cli command "crypto key generate rsa modulus 2048"

* On a system with slow CPU, you might have to change the "event syslog ..."
  trigger to "event timer countdown time 5"

After copying the configuration:

* Exit the configuration mode
* Save the configuration with 'wr mem'
* Disconnect from console (ctrl-] usually works).