Build VM Images using Diskimage-builder
OpenStack has this nice tool diskimage-builderto create virtual machine images without the need of a cloud. These vm images can then be uploaded to cloud (e.g. in Glance for OpenStack cloud), and they become immediately usable. You can also create VMs in virtualbox from these images (though I don't remember exact steps to make the image work with VirtualBox. Do let me know if you get the VM working with VirtualBox/Vagrant)
Here I'll describe ways to create a bare cloud-uploadable Ubuntu image. I will also provide information as to how to build an image which will have some packages pre-installed in them. Note that the commands here will create only one image file as opposed to three – one each for ramdisk, kernel and machine image.
Prerequisites
sudo apt-get install qemu-utils
git clone http://github.com/openstack/diskimage-builder
cd diskimage-builder
sudo pip install -r requirements.txt
All the binaries are in bin filder. You can go in the bin\
directory to
execute diskimage-builder commands, or add that directory to your $PATH
Create bare Ubuntu image, which you can directly upload to a cloud e.g. OpenStack.
disk-image-create -a amd64 -o ubuntu-amd64 vm ubuntu
Image generated will be of name ubuntu-amd64.qcow2
. Such an image will be for
same OS version as your host Ubuntu version. If you want
to build an image against a different OS version, specify
DIB_RELEASE=<releasename>
as a prefix to the command.
DIB_RELEASE=trusty disk-image-create -a amd64 -o ubuntu-amd64 vm ubuntu
Create an Ubuntu VM image which you can boot via KVM or VirtualBox/Vagrant. You will need to manually add public keys to authorized_keys for a user inside that VM.
disk-image-create -o base -a amd64 vm base ubuntu cloud-init-nocloud
Create an image with mysql-server
and tmux
package (and their dependencies) installed inside the image:
disk-image-create -a amd64 -o ubuntu-amd64 -p mysql-server,tmux vm ubuntu
How to upload image to glance:
glance image-create --name dib-ubuntu --disk-format=qcow2 --container-format=bare < img/ubuntu-amd64.qcow2
Where ubuntu-amd64.qcow2
is the image to upload.
Thanks!