Cloud images and uvtool
2. Cloud images and uvtool
2.1. Introduction
With Ubuntu being one of the most used operating systems on most of the cloud platforms, the availability of stable and secure cloud images has become very important. As of 12.04 the utilization of cloud images outside of a cloud infrastructure has been improved. It is now possible to use those images to create a virtual machine without the need of a complete installation.
2.2. Creating virtual machines using uvtool
Starting with 14.04 LTS, a tool called uvtool greatly facilitates the task of generating virtual machines (VM) using the cloud images. uvtool provides a simple mechanism to to synchronize cloud-images locally and use them to create new VMs in minutes.
2.2.1. Uvtool packages The following packages and their dependancies will be required in order to use uvtool:
• uvtool • uvtool-libvirt
Installation of uvtool is done the same as for any other application by using apt-get: $ apt-get -y install uvtool
This will install uvtool's main commands: • uvt-simplestreams-libvirt • uvt-kvm
2.2.2. Get the Ubuntu Cloud Image with uvt-simplestreams-libvirt This is one of the major simplifications that uvtool brings. It is aware of where to find the cloud
images so only one command is required to get a new cloud image. For instance, if you want to synchronize all cloud images for the amd64 architecture, the uvtool command would be:
$ uvt-simplestreams-libvirt sync arch=amd64 After an amount of time required to download all the images from the internet, you will have a
complete set of cloud images stored locally. To see what has been downloaded use the following command:
$ uvt-simplestreams-libvirt query release=oneiric arch=amd64 label=release (20130509) release=precise arch=amd64 label=release (20140227) release=quantal arch=amd64 label=release (20140302) release=saucy arch=amd64 label=release (20140226)
Virtualization
release=trusty arch=amd64 label=beta1 (20140226.1) In the case where you want to synchronize only one specific cloud-image, you need to use the
release= and arch= filters to identify which image needs to be synchronized. $ uvt-simplestreams-libvirt sync release=precise arch=amd64
2.2.3. Create the VM using uvt-kvm In order to be able to connect to the virtual machine once it has been created, it is necessary to have
a valid SSH key available for the ubuntu user. If your environment does not have a ssh key, you can easily create one using the following command:
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ubuntu/.ssh/id_rsa. Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub. The key fingerprint is: 4d:ba:5d:57:c9:49:ef:b5:ab:71:14:56:6e:2b:ad:9b ubuntu@TrustyS The key's randomart image is: +--[ RSA 2048]----+ | ..| | o.=| | . **| | + o+=| | S . ...=.| | o . .+ .| | .. oo| | * | | E | +-----------------+
The creation of a new virtual machine using uvtool is easy. In its simplest form, you only need to do: $ uvt-kvm create firsttest
This will create a VM named firsttest using the current LTS cloud image available locally. If you want to specify a release to be used to create the VM, you need to use the release= filter
$ uvt-kvm create secondtest release=trusty The uvt-kvm wait {name} can be used to wait until the creation of the VM has completed
$ uvt-kvm wait secondttest --insecure Warning: secure wait for boot-finished not yet implemented; use --insecure.
2.2.4. Connect to the running VM Once the virtual machine creation is completed, you can connect to it using ssh:
Virtualization
$ uvt-kvm ssh secondtest --insecure For the time being, the --insecure is required so you should be using this mechanism to connect to
your VM only if you completely trust your network infrastructure You can also connect to your VM using a regular ssh session using the IP address of the VM. The
address can be queried using the following command:
$ uvt-kvm ip secondtest 192.168.123.242 $ ssh -i ~/.ssh/id_rsa [email protected] The authenticity of host '192.168.123.242 (192.168.123.242)' can't be established. ECDSA key fingerprint is 3a:12:08:37:79:24:2f:58:aa:62:d3:9d:c0:99:66:8a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.123.242' (ECDSA) to the list of known hosts. Welcome to Ubuntu Trusty Tahr (development branch) (GNU/Linux 3.13.0-12-generic x86_64)
* Documentation: https://help.ubuntu.com/ System information disabled due to load higher than 1.0
Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud
0 packages can be updated. 0 updates are security updates.
Last login: Fri Mar 21 13:25:56 2014 from 192.168.123.1
2.2.5. Get the list of running VMs You can get the list of VM running on your system with this command:
$ uvt-kvm list secondtest
2.2.6. Destroy your VM Once you are done with your VM, you can proceed to destroy it with:
$ uvt-kvm destroy secondtest
2.2.7. More uvt-kvm options The following options can be used to change some of the characteristics of the virtual memory that
you are creating • --memory : Amount of RAM in megabytes. Default: 512 • --disk : Size of the OS disk in gigabytes. Default: 8
Virtualization
• --cpu : Number of CPU cores. Default: 1 Some other parameters will have an impact on the cloud-init configuration
• --password password : Allow login to the VM using the ubuntu account and this provided password • --run-script-one script_file : Run script_file as root on the VM the first time it is booted, but never
again. • --packages package_list : Install the comma-separated packages specified in package_list on first
boot.
A complete description of all available modifiers is available in the manpage of uvt-kvm
2.3. Resources
If you are interested in learning more, have questions or suggestions, please contact the Ubuntu Server Team at:
• IRC: #ubuntu-server on freenode • Mailing list: ubuntu-server at lists.ubuntu.com 8
8 https://lists.ubuntu.com/mailman/listinfo/ubuntu-server
Virtualization