I’ll start at the KVM-Virtualization Host („Ubuntu Desktop“) again.
Folder Structure
I’ll create a folder „isr-service-container“ for common stuff (package.yaml, create_ova.sh) and a for each VM a dedicated sub-folder, today: „ubuntu-server16.04“
user@KVM-1:~$ mkdir isr-service-container user@KVM-1:~$ cd isr-service-container user@KVM-1:~/isr-service-container$ mkdir ubuntu-server16.04
Download the Cisco-provided „templates.tar“ from GitHub (GitHub: Templates.tar).
It contains:
- package.yaml
- create_ova.sh
Prepare a compressed virtual harddisk of the „Ubuntu-Server“-VM
Locate the original virtual harddisk:
user@KVM-1:~$ sudo ls /var/lib/libvirt/images/ -l total 3238172 -rw------- 1 root root 21478375424 Feb 2 23:14 ubuntu-server16.04.qcow2
Convert the original „.qcow2“-File into a compressed „copy“:
user@KVM-1:~/isr-service-container$ sudo qemu-img convert -p -c -o compat=0.10 -O qcow2 /var/lib/libvirt/images/ubuntu-server16.04.qcow2 ./ubuntu-server16.04/ubuntu-server16.04.qcow2 (100.00/100%) user@KVM-1:~/isr-service-container$ cd ubuntu-server16.04/ user@KVM-1:~/isr-service-container/ubuntu-server16.04$ ls -lh total 1,2G -rw-r--r-- 1 root root 1,2G Feb 2 23:26 ubuntu-server16.04.qcow2
Change the Owner of this new file:
user@KVM-1:~/isr-service-container/ubuntu-server16.04$ sudo chown user:user ubuntu-server16.04.qcow2 user@KVM-1:~/isr-service-container/ubuntu-server16.04$ ls -lh total 1,2G -rw-r--r-- 1 user user 1,2G Feb 2 23:26 ubuntu-server16.04.qcow2 user@KVM-1:~/isr-service-container/ubuntu-server16.04$ copy ../package.yaml ./package.yaml
I’ll change:
- Description: „KVM Ubuntu 16.04 LTS“
- resources/vcpu: 1
- disk/file: ubuntu-server16.04.qcow2
The vCPU# got decreased since the CSR1000v only supports Service-VMs with one vCPU.
user@KVM-1:~/isr-service-container/ubuntu-server16.04$ joe ./package.yaml manifest-version: 1.0 info: name: ubuntu description: "KVM Ubuntu 16.04 LTS" version: 1.1 app: # Indicate app type (vm, paas, lxc etc.,) apptype: vm resources: cpu: 10 memory: 854016 vcpu: 1 disk: - target-dev: hdc file: ubuntu-server16.04.qcow2 interfaces: - target-dev: net1 serial: - console - aux # Specify runtime and startup startup: runtime: kvm boot-dev: hd
Another File „version.ver“ has to be created:
- the „version“ must match the „manifest-version“ of the yaml-file.
user@KVM-1:~/isr-service-container/ubuntu-server16.04$ echo 1.0 > version.ver
Check the content of the VM-folder
user@KVM-1:~/isr-service-container/ubuntu-server16.04$ ls -l total 1206788 -rw-rw-r-- 1 user user 437 Feb 3 20:13 package.yaml -rw-r--r-- 1 user user 1239148032 Feb 2 23:26 ubuntu-server16.04.qcow2 -rw-rw-r-- 1 user user 4 Feb 2 23:33 version.ver
Create the OVA-File
user@KVM-1:~/isr-service-container/ubuntu-server16.04$ cd .. user@KVM-1:~/isr-service-container$ ./create_ova.sh -mts 200000 -mfs 100000 ubuntu-server16.04 create_ova.sh v1.0(Linux) - Create a virtual-service OVA package User inputs: Compress=(files > '100000M' if total file size > '200000M') Directory=ubuntu-server16.04 Package name : ubuntu Generating SHA1 on files... Running SHA1 over all files in '/home/user/isr-service-container/ubuntu-server16.04' and creating manifest file ' ubuntu.mf', please wait... Done creating ' ubuntu.mf' file ...Done Generating SHA1 on files Creating ' ubuntu.ova' please wait... package.yaml ubuntu.mf ubuntu-server16.04.qcow2 version.ver '/home/user/isr-service-container/ubuntu-server16.04/ ubuntu.ova' created Manifest Contents: SHA1(package.yaml)= fb47cf5b764a7bb062561a4f67d830003f8e4d5a SHA1(ubuntu-server16.04.qcow2)= 732c8ac9dc81ab6b2695fe6c045bec4493d77168 SHA1(version.ver)= 61652cd1568dcf2614df833eba241755eee34e89
Copy the OVA-File to the Router:
user@KVM-1:~/isr-service-container$ scp ./ubuntu-server16.04/ubuntu.ova <ios-user>@<csr1000v-management-router-ip>:bootflash:ubuntu1604.ova Password: <ios-password> ubuntu.ova 100% 1182MB 1.2MB/s 17:05 Connection to 192.168.2.189 closed by remote host.
Check the ISR-Router:
SERVICECONTAINER#dir *.ova Directory of bootflash:/ 22 -rw- 1239152640 Feb 3 2018 19:00:42 +00:00 ubuntu1604.ova 7897796608 bytes total (4507389952 bytes free)