VM Image Packaging Utility
A VM image package is a TAR archive file with the root disk image and other descriptor files. This packaging method simplifies the process of a VM image registration and deployment. The attributes specified for the image enable resource requirement specification, creation of VM profiles, and a host of other properties for the VM.
The Cisco Enterprise NFVIS VM image packaging tool, nfvpt.py, helps VM owners package their VMs. The tool takes one or more qcow2 images (raw disk file) as the input file along with VM specific properties, bootstrap configuration files (if any), and generates a compressed TAR file.
Contents
The VM image packaging utility contains the following:
-
nfvpt.py—It is a python based packaging tool that bundles the VM raw disk image/s along with VM specific properties.
-
image_properties_template.xml—This is the template file for the VM image properties file, and has the parameters with default values. If the user provides new values to these parameters while creating the VM package, the default values get replaced with the user-defined values.
-
nfvis_vm_packaging_utility_examples.txt—This file contains examples on how to use the image packaging utility to package a VM image.
-
nfvis_vm_packaging_utility_3.3.1_userguide.pdf—This document provides information on how to use the tool.
Usage
To get the list of parameters that can be included in the command, and to get an explanation of each of the parameters, run the help command for the tool.
nfvpt.py --help
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-s, --simple simple packaging with minimal options
-o PACKAGE_FILE_NAME, --package_file_name=PACKAGE_FILE_NAME
[REQUIRED] file name for the target VNF package name-
default is root disk image name with extension .tar.gz
-i DISK_IMG_NAMES, --root_disk_image=DISK_IMG_NAMES
[REQUIRED] List of root disk images to be bundled
example: --root_disk_image isrv.qcow2;
--root_disk_image isrv1.qcow2,isrv2.qcow2
-n IMG_NAME, --image_name=IMG_NAME
[REQUIRED] Name of the VNF image
-t VNF_TYPE, --vnf_type=VNF_TYPE
[REQUIRED] VNF type, e.g. router, firewall.. other
-r VNF_VERSION, --vnf_version=VNF_VERSION
[REQUIRED] VNF version, e.g. --vnf_version 1.0 or
--vnf_version 0.9
--monitored=MONITORED
[REQUIRED] Monitored VNF: --monitored=true/false;
--optimize=OPTIMIZE
[REQUIRED] optimized VM: --optimize=true/false;
--console_type_serial=CONSOLE_TYPE_SERIAL Attach the console serial to the VM;
default is false; --console_type_serial=true/false;
--root_file_disk_bus=ROOT_FILE_DISK_BUS
root disk file type: --root_file_disk_bus=virtio/ide;
default is virtio
--virtual_interface_model=VIRTUAL_INTERFACE_MODEL
--virtual_interface_model=rtl8139; default is none
--thick_disk_provisioning=THICK_DISK_PROVISIONING
--thick_disk_provisioning=true; default is false
--bootstrap_cloud_init_bus_type=BOOTSTRAP_CLOUD_INIT_BUS_TYPE
--bootstrap_cloud_init_bus_type=virtio; default is ide
--bootstrap_cloud_init_drive_type=BOOTSTRAP_CLOUD_INIT_DRIVE_TYPE
--bootstrap_cloud_init_drive_type=disk; default is cdrom
--bootstrap=BOOTSTRAP
bootstrap file/s for the VM (two params required in the format of dst:src; dst filename including path
has to match exactly to what the VM expects; up to 20 bootstrap files accepted.)
Examples: --bootstrap ovf-env.xml:file1,ios-xe.txt:file2 for ISRv; both files get mounted at the root level on the VM
--bootstrap day0-config:filename1 for ASAv --bootstrap
/:bootstrap.xml,/license/lic.txt:license.txt
bootstrap.xml get mounted as bootstrap.xml at root and license.txt get mounted as /license/lic.txt
-v, --verbose verbose
-q, --quiet quiet
--no_compress creates tar file without compressing the input files
--cleanup deletes all the input and configuration files upon tar file creation
resources: min and max - vCPU, memory and disk :
--min_vcpu=MIN_VCPU
min #vCPU : min number of vCPU supported by VM
example:--min_vcpu 2
--max_vcpu=MAX_VCPU
max #vCPU : max number if vCPU required for VM
example:--max_vcpu 4
--min_mem=MIN_MEM
min mem : min mem in MB required for VM
example:--min_mem 1024
--max_mem=MAX_MEM
max mem : max mem in MB required for VM
example:--max_mem 4196
--min_disk=MIN_DISK
min disk : min disk in GB required for VM
example:--min_disk 8
--max_disk=MAX_DISK
max disk : max disk in GB required for VM
example:--max_disk 8
--vnic_max=VNIC_MAX
max number of Vnics allowed for VM
example:--vnic_max 8
Profile options :
--profile=PROFILE
enter the profile name, profile description, number of vCPUs required,
min memory required in MB,
min disk space required in MB,
example:
--profile profile1,"This is profile 1",2,2048,4096
--profile profile2,"This is profile 2",4,4096,4096
--default_profile=DEFAULT_PROFILE
default profile
Driver support options :
--sriov=SRIOV Enable/Disable SRIOV support: --sriov=true/false;
default is false
--sriov_list=SRIOV_LIST
list of SRIOV drivers
example: --sriov_list igb,igbvf,i40evf
--pcie=PCIE
Not supported
--pcie_list=PCIE_LIST
Not supported
Privilege/priority related options :
--privileged=PRIVILEGED
Not supported
Custom properties :
--custom=CUSTOM
custom properties to be supported and/or passed to bootstrap config with tokenized variables
comma separated (key, val) pair to be passed for a list of values, use the same key and different value
NOTE: mandatory for deployment through local portal if bootstrap config has tokenized variables
for local portal to prompt for custom property options
example1: --custom tech_package,ax --custom tech_package, sec
example2: --custom ip_address
The table lists the parameters that can be passed to the nfvpt.py command.
Parameter |
Mandatory/Optional |
Description |
---|---|---|
version |
Not applicable |
Show program's version number and exit. |
help |
Not applicable |
Show this help message and exit. |
PACKAGE_FILE_NAME |
Mandatory |
File name for the target VNF package. The default is the root disk image name with extension .tar.gz. |
DISK_IMG_NAMES |
Mandatory |
List of root disk images to be bundled. Only the qcow2 images are supported. |
IMG_NAME |
Mandatory |
Name of the VNF image. |
VNF_TYPE |
Mandatory |
VNF type Supported types are: ROUTER, FIREWALL, vWAAS, vWLC, and OTHER. |
VNF_VERSION |
Mandatory |
VNF version |
MONITORED |
Mandatory |
VM health monitoring for those VMs that can be bootstrapped Options are: true/false Monitoring timeout period for a monitored VM is 600 seconds by default |
OPTIMIZE |
Mandatory |
Optimized VM Options are: true/false |
VIRTUAL_INTERFACE_MODEL |
Optional |
Default is none. |
THICK_DISK_PROVISIONING |
Optional |
Default is false. |
BOOTSTRAP_CLOUD_INIT_BUS_TYPE |
Optional |
Default is IDE. |
BOOTSTRAP_CLOUD_INIT_DRIVE_TYPE |
Optional |
Mounts the day0 configuration file as disk Default is CD-ROM. |
BOOTSTRAP |
Optional |
Bootstrap files for VNF. Two parameters are required in the format of dst:src; dst filename including path has to match exactly to what the VM expects; up to 20 bootstrap files are accepted. For example: --bootstrap ovf-env.xml for ISRv and --bootstrap day0-config for ASAv. |
MIN_VCPU |
Optional |
Minimum number of vCPUs supported by the VM. The default is 1. |
MAX_VCPU |
Optional |
Maximum number of vCPUs required for the VM. The default is 8. |
MIN_MEM |
Optional |
Minimum memory in MB required for the VM. The default is 4 GB. |
MAX_MEM |
Optional |
Maximum memory in MB required for the VM. Physical memory: 2 GB The default is 8 GB. |
MIN_DISK |
Optional |
Minimum disk in GB required for the VM. The default is 8 GB. |
MAX_DISK |
Optional |
Maximum disk in GB required for the VM. Available disks are SSD and HDD: 15 GB The default is 16 GB |
VNIC_MAX |
Optional |
Maximum number of VNICs allowed for the VM. The default is 8. |
PROFILE |
Optional |
The profile name, profile description, number of vCPUs required, minimum memory required in MB and minimum disk space required in MB. |
DEFAULT_PROFILE |
Optional |
The default profile. |
SRIOV |
Optional |
Enable or disable SRIOV support. The default is false. |
SRIOV_LIST |
Optional |
List of SRIOV drivers. |
PCIE |
Optional |
Not supported. |
PCIE_LIST |
Optional |
Not supported. |
PRIVILEGED |
Optional |
Not supported. |
CUSTOM |
Optional |
Custom properties to be supported and/or passed to the bootstrap configuration with tokenized variables. This is only used for the local portal to display options for the user to choose while deploying. |
VM Packaging Utility Usage Examples
Given below are the contents of the file nfvis_vm_packaging_utility_examples.txt:
Example 1: Usage for TinyLinux
nfvpt.py -o TinyLinux -i TinyLinux.qcow2 -n TinyLinux -t linux -r 1.0 --monitored false
--min_vcpu 1 --max_vcpu 2 --min_mem 1024 --max_mem 1024 --min_disk 1 --max_disk 2
--vnic_max 1 --optimize false
Example 2: Usage for ASAv
Note |
The bootstrap filename has to be day0-config. This cannot be modified as ASAv looks for the exact filename. |
nfvpt.py -o asav961-201 -i asav961-201.qcow2 -n ASAv -t firewall -r 961-201 --monitored true --bootstrap day0-config:filename1
--min_vcpu 1 --max_vcpu 4 --min_mem 1024 --max_mem 8192 --min_disk 8 --max_disk 16 --vnic_max 8 --optimize true
--profile ASAv5,"ASAv5 profile",1,1024,8192 --profile ASAv10,"ASAv10 profile",1,4096,8192 --profile ASAv30,"ASAv30 profile",4,8192,16384
--default_profile ASAv5
Example 3: Usage for ISRv
Note |
The bootstrap filename has to be ovf-env.xml . This cannot be modified as ISRv looks for the exact filename. |
nfvpt.py -o isrv.16.03.01 -i isrv-universalk9.16.03.01.qcow2 -n ISRv.16.03.01 -t ROUTER -r 16.03.01 --monitored true --privileged true
--bootstrap ovf-env.xml:file1,ios-xe.txt:file2 --min_vcpu 2 --max_vcpu 8 --min_mem 4096 --max_mem 8192 --min_disk 8 --max_disk 8
--vnic_max 8 --optimize true --profile ISRv-small,"ISRv small profile",2,4096,8192 --profile ISRv-medium,"ISRv medium profile",4,4096,8192
--default_profile ISRv-small --sriov_list igb,igbvf,i40evf --custom tech_package,ax