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
Warning
The netlab libvirt package ios 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
exit-address-family
!
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"
!
end
=============================================
NOTE:
* 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).