Image Guide Openstack
Image Guide Openstack
org
VM Image Guide
current
ii
VM Image Guide
current
Table of Contents
Preface ........................................................................................................................... vi
Conventions ............................................................................................................ vi
Document change history ....................................................................................... vi
1. Introduction ................................................................................................................ 1
Disk and container formats for images .................................................................... 3
Image metadata ..................................................................................................... 4
2. Get images .................................................................................................................. 7
CentOS images ........................................................................................................ 7
CirrOS (test) images ................................................................................................ 7
Official Ubuntu images ............................................................................................ 7
Official Red Hat Enterprise Linux images ................................................................. 8
Official Fedora images ............................................................................................. 8
Official openSUSE and SLES images ......................................................................... 8
Official Debian images ............................................................................................ 8
Official images from other Linux distributions .......................................................... 9
Rackspace Cloud Builders (multiple distros) images .................................................. 9
Microsoft Windows images ..................................................................................... 9
3. OpenStack Linux image requirements ........................................................................ 10
Disk partitions and resize root partition on boot (cloud-init) .................................. 10
No hard-coded MAC address information .............................................................. 12
Ensure ssh server runs ........................................................................................... 13
Disable firewall ...................................................................................................... 13
Access instance by using ssh public key (cloud-init) ................................................. 13
Process user data and other metadata (cloud-init) ................................................. 14
Ensure image writes boot log to console ............................................................... 15
Paravirtualized Xen support in the kernel (Xen hypervisor only) ............................. 15
Manage the image cache ...................................................................................... 15
4. Modify images .......................................................................................................... 17
guestfish ............................................................................................................... 17
guestmount ........................................................................................................... 19
virt-* tools ............................................................................................................. 19
Loop devices, kpartx, network block devices .......................................................... 20
5. Create images manually ............................................................................................ 24
Verify the libvirt default network is running .......................................................... 24
Use the virt-manager X11 GUI ............................................................................... 24
Use virt-install and connect by using a local VNC client ........................................... 25
Example: CentOS image ........................................................................................ 26
Example: Ubuntu image ........................................................................................ 34
Example: Fedora image ......................................................................................... 41
Example: Microsoft Windows image ...................................................................... 44
Example: FreeBSD image ....................................................................................... 46
6. Tool support for image creation ................................................................................ 50
Diskimage-builder .................................................................................................. 50
Oz ......................................................................................................................... 50
VMBuilder ............................................................................................................. 52
VeeWee ................................................................................................................ 52
Packer ................................................................................................................... 52
imagefactory ......................................................................................................... 52
iii
VM Image Guide
current
iv
52
53
55
55
56
56
56
57
58
58
58
VM Image Guide
current
List of Tables
3.1. Image cache management configuration options .................................................... 15
7.1. qemu-img format strings ........................................................................................ 53
VM Image Guide
current
Preface
Conventions .................................................................................................................... vi
Document change history ............................................................................................... vi
Conventions
The OpenStack documentation uses several typesetting conventions.
Notices
Notices take these forms:
Note
A handy tip or reminder.
Important
Something you must be aware of before proceeding.
Warning
Critical information about the risk of data loss or security issues.
Command prompts
$ prompt
Any user, including the root user, can run commands that are prefixed with
the $ prompt.
# prompt
The root user must run commands that are prefixed with the # prompt. You
can also prefix these commands with the sudo command, if available, to run
them.
Summary of Changes
Minor revisions for Icehouse - moved property listing into Command-Line Interface Reference
and added a note about Windows time zones.
Havana release.
June 4, 2013
vi
VM Image Guide
current
1. Introduction
Disk and container formats for images ............................................................................ 3
Image metadata ............................................................................................................. 4
An OpenStack Compute cloud is not very useful unless you have virtual machine images
(which some people call "virtual appliances"). This guide describes how to obtain, create,
and modify virtual machine images that are compatible with OpenStack.
To keep things brief, we'll sometimes use the term "image" instead of "virtual machine image".
What is a virtual machine image?
A virtual machine image is a single file which contains a virtual disk that has a bootable operating system installed on it.
Virtual machine images come in different formats, some of which are described below.
Raw
The "raw" image format is the simplest one, and is natively supported
by both KVM and Xen hypervisors. You can think of a raw image as being the bit-equivalent of a block device file, created as if somebody had
copied, say, /dev/sda to a file using the dd command.
Note
We don't recommend creating raw images by dd'ing block device files, we discuss how to create raw images later.
qcow2
Note
Because raw images don't support snapshots, OpenStack
Compute will automatically convert raw image files to qcow2
as needed.
AMI/AKI/ARI
The AMI/AKI/ARI format was the initial image format supported by Amazon EC2. The image consists of three files:
AMI (Amazon Machine Image):
This is a virtual machine image in raw format, as described above.
VM Image Guide
current
Note
Ubuntu Enterprise Cloud refers to a discontinued Eucalyptus-based Ubuntu cloud solution that has been replaced by
the OpenStack-based Ubuntu Cloud Infrastructure.
VMDK
VMware's ESXi hypervisor uses the VMDK (Virtual Machine Disk) format
for images.
VDI
VirtualBox uses the VDI (Virtual Disk Image) format for image files. None
of the OpenStack Compute hypervisors support VDI directly, so you will
need to convert these files to a different format to use them with OpenStack.
VHD
Microsoft Hyper-V uses the VHD (Virtual Hard Disk) format for images.
VHDX
The version of Hyper-V that ships with Microsoft Server 2012 uses the
newer VHDX format, which has some additional features over VHD such
as support for larger disk sizes and protection against data corruption
during power failures.
OVF
OVF (Open Virtualization Format) is a packaging format for virtual machines, defined by the Distributed Management Task Force (DMTF) standards group. An OVF package contains one or more image files, a .ovf
XML metadata file that contains information about the virtual machine,
and possibly other files as well.
An OVF package can be distributed in different ways. For example, it
could be distributed as a set of discrete files, or as a tar archive file with
an .ova (open virtual appliance/application) extension.
OpenStack Compute does not currently have support for OVF packages,
so you will need to extract the image file(s) from an OVF package if you
wish to use it with OpenStack.
ISO
The ISO format is a disk image formatted with the read-only ISO 9660 (also known as ECMA-119) filesystem commonly used for CDs and DVDs.
While we don't normally think of ISO as a virtual machine image format,
since ISOs contain bootable filesystems with an installed operating sys-
VM Image Guide
current
tem, you can treat them the same as you treat other virtual machine image files.
Disk formats
The disk format of a virtual machine image is the format of the underlying disk image. Virtual appliance vendors have different formats for laying out the information contained in a
virtual machine disk image.
Set the disk format for your image to one of the following values:
raw: An unstructured disk image format; if you have a file without an extension it is possibly a raw format.
vhd: The VHD disk format, a common disk format used by virtual machine monitors from
VMware, Xen, Microsoft, VirtualBox, and others.
vmdk: Common disk format supported by many common virtual machine monitors.
vdi: Supported by VirtualBox virtual machine monitor and the QEMU emulator.
iso: An archive format for the data contents of an optical disc, such as CD-ROM.
qcow2: Supported by the QEMU emulator that can expand dynamically and supports
Copy on Write.
aki: An Amazon kernel image.
ari: An Amazon ramdisk image.
ami: An Amazon machine image.
Container formats
The container format indicates whether the virtual machine image is in a file format that also contains metadata about the actual virtual machine.
Note
The Image service and other OpenStack projects do not currently support the
container format. It is safe to specify bare as the container format if you are
unsure.
You can set the container format for your image to one of the following values:
bare. The image does not have a container or metadata envelope.
ovf. The OVF container format.
aki. An Amazon kernel image.
3
VM Image Guide
current
Image metadata
Image metadata can help end users determine the nature of an image, and is used by associated OpenStack components and drivers which interface with the Image service.
Metadata can also determine the scheduling of hosts. If the property option is set on an
image, and Compute is configured so that the ImagePropertiesFilter scheduler filter
is enabled (default), then the scheduler only considers compute hosts that satisfy that property.
Note
Compute's ImagePropertiesFilter value is specified in the
scheduler_default_filter value in the /etc/nova/nova.conf file.
You can add metadata to Image service images by using the --property key=value
parameter with the glance image-create or glance image-update command. More than
one property can be specified. For example:
$ glance image-update img-uuid --property architecture=arm --property
hypervisor_type=qemu
Value
397e713c-b95b-4186-ad46-6126863ea0a9
snapshot
available
snapshot
0
2
5
2048
VM Image Guide
| Property 'instance_type_name'
|
|
| Property 'instance_type_root_gb'
|
|
| Property 'instance_type_rxtx_factor' |
|
| Property 'instance_type_swap'
|
|
| Property 'instance_type_vcpu_weight' |
|
| Property 'instance_type_vcpus'
|
|
| Property 'instance_uuid'
|
|
| Property 'kernel_id'
|
|
| Property 'owner_id'
|
|
| Property 'ramdisk_id'
|
|
| Property 'user_id'
|
|
| checksum
|
|
| container_format
|
|
| created_at
|
|
| deleted
|
|
| disk_format
|
|
| id
|
|
| is_public
|
|
| min_disk
|
|
| min_ram
|
|
| name
|
|
| owner
|
|
| protected
|
|
| size
|
|
| status
|
|
| updated_at
|
|
+--------------------------------------+--------------------------------------+
m1.small
20
1
0
None
1
84c6e57d-a6b1-44b6-81eb-fcb36afd31b5
df430cc2-3406-4061-b635-a51c16e488ac
66265572db174a7aa66eba661f58eb9e
3cf852bd-2332-48f4-9ae4-7d926d50945e
376744b5910b4b4da7d8e6cb483b06a8
8e4838effa1969ad591655d6485c7ba8
ami
2013-07-22T19:45:58
False
ami
7e5142af-1253-4634-bcc6-89482c5f2e8a
False
0
0
myCirrosImage
66265572db174a7aa66eba661f58eb9e
False
14221312
active
2013-07-22T19:46:42
Volume-from-Image properties
When creating Block Storage volumes from images, also consider
your configured image properties. If you alter the core image proper-
current
VM Image Guide
current
ties, you should also update your Block Storage configuration. Amend
glance_core_properties in the /etc/cinder/cinder.conf file on all
controller nodes to match the core properties you have set in the Image service.
VM Image Guide
current
2. Get images
CentOS images ................................................................................................................
CirrOS (test) images ........................................................................................................
Official Ubuntu images ....................................................................................................
Official Red Hat Enterprise Linux images .........................................................................
Official Fedora images .....................................................................................................
Official openSUSE and SLES images .................................................................................
Official Debian images ....................................................................................................
Official images from other Linux distributions ..................................................................
Rackspace Cloud Builders (multiple distros) images ..........................................................
Microsoft Windows images .............................................................................................
7
7
7
8
8
8
8
9
9
9
The simplest way to obtain a virtual machine image that works with OpenStack is to download one that someone else has already created.
CentOS images
The CentOS project maintains official images for direct download.
CentOS 6 images
CentOS 7 images
Note
In a CirrOS image, the login account is cirros. The password is cubswin:)
VM Image Guide
current
Note
In an Ubuntu cloud image, the login account is ubuntu.
Note
In a RHEL image, the login account is cloud-user.
Note
In a Fedora image, the login account is fedora.
If building the image for Wheezy, packages like cloud-init, cloud-utils or cloud-initramfsgrowroot will be pulled from wheezy-backports. Also, the current version of bootlogd in
Wheezy doesn't support logging to multiple consoles, which is needed so that both the
8
VM Image Guide
current
OpenStack Dashboard console and the nova console-log console works. However, a fixed
version is available from the non-official GPLHost repository. To install it on top of the image, it is possible to use the --hook-script option of the build-openstack-debian-image
script, with this kind of script as parameter:
#!/bin/sh
cp bootlogd_2.88dsf-41+deb7u2_amd64.deb ${BODI_CHROOT_PATH}
chroot ${BODI_CHROOT_PATH} dpkg -i bootlogd_2.88dsf-41+deb7u2_amd64.deb
rm ${BODI_CHROOT_PATH}/bootlogd_2.88dsf-41+deb7u2_amd64.deb
Note
In a Debian image, the login account is admin.
VM Image Guide
current
10
12
13
13
13
14
15
15
15
For a Linux-based image to have full functionality in an OpenStack Compute cloud, there
are a few requirements. For some of these, you can fulfill the requirements by installing the
cloud-init package. Read this section before you create your own image to be sure that the
image supports the OpenStack features that you plan to use.
Disk partitions and resize root partition on boot (cloud-init)
No hard-coded MAC address information
SSH server running
Disable firewall
Access instance using ssh public key (cloud-init)
Process user data and other metadata (cloud-init)
Paravirtualized Xen support in Linux kernel (Xen hypervisor only with Linux kernel version < 3.0)
VM Image Guide
current
Non-Xen with cloud-init/cloud-tools: One ext3/ext4 partition (no LVM, no /boot, no swap)
You must configure these items for your image:
The partition table for the image describes the original size of the image.
The file system for the image fills the original size of the image.
Then, during the boot process, you must:
Modify the partition table to make it aware of the additional space:
If you do not use LVM, you must modify the table to extend the existing root partition
to encompass this additional space.
If you use LVM, you can add a new LVM entry to the partition table, create a new LVM
physical volume, add it to the volume group, and extend the logical partition with the
root volume.
Resize the root volume file system.
The simplest way to support this is to install in your image the:
cloud-utils package, which contains the growpart tool for extending partitions.
cloud-initramfs-growroot package for Ubuntu, Debian and Fedora, which supports resizing root partition on the first boot.
cloud-initramfs-growroot package for Centos and RHEL.
cloud-init package.
With these packages installed, the image performs the root partition resize on boot. For example, in the /etc/rc.local file. These packages are in the Ubuntu and Debian package
repository, as well as the EPEL repository (for Fedora/RHEL/CentOS/Scientific Linux guests).
If you cannot install cloud-initramfs-tools, Robert Plestenjak has a GitHub project
called linux-rootfs-resize that contains scripts that update a ramdisk by using growpart so
that the image resizes properly on boot.
11
VM Image Guide
current
If you can install the cloud-utils and cloud-init packages, we recommend that when you create your images, you create a single ext3 or ext4 partition (not managed by LVM).
Note
If you delete the network persistent rules files, you may get a udev kernel warning at boot time, which is why we recommend replacing them with empty files
instead.
12
VM Image Guide
current
Disable firewall
In general, we recommend that you disable any firewalls inside of your image and use
OpenStack security groups to restrict access to instances. The reason is that having a firewall installed on your instance can make it more difficult to troubleshoot networking issues
if you cannot connect to your instance.
13
VM Image Guide
current
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
ATTEMPTS=30
FAILED=0
while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
> /tmp/metadata-key 2>/dev/null
if [ $? -eq 0 ]; then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/metadata-key
echo "Successfully retrieved public key from instance metadata"
echo "*****************"
echo "AUTHORIZED KEYS"
echo "*****************"
cat /root/.ssh/authorized_keys
echo "*****************"
else
FAILED=`expr $FAILED + 1`
if [ $FAILED -ge $ATTEMPTS ]; then
echo "Failed to retrieve public key from instance metadata after $FAILED
attempts, quitting"
break
fi
echo "Could not retrieve public key from instance metadata (attempt #
$FAILED/$ATTEMPTS), retrying in 5 seconds..."
sleep 5
fi
done
Note
Some VNC clients replace : (colon) with ; (semicolon) and _ (underscore) with (hyphen). If editing a file over a VNC session, make sure it's http: not http; and
authorized_keys not authorized-keys.
VM Image Guide
current
If console=ttyS0 does not appear, you must modify your grub configuration. In
general, you should not update the grub.cfg directly, since it is automatically generated. Instead, you should edit /etc/default/grub and modify the value of the
GRUB_CMDLINE_LINUX_DEFAULT variable:
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"
On Fedora-based systems, such as RHEL and CentOS, and on openSUSE, run this command:
# grub2-mkconfig -o /boot/grub2/grub.cfg
(Type) Description
preallocate_images=none
15
VM Image Guide
current
(Type) Description
space. Storage is fully allocated at instance start. The
$instance_dir/ images are fallocated to immediately determine if enough space is available, and to possibly
improve VM I/O performance due to ongoing allocation
avoidance, and better locality of block allocations.
remove_unused_base_images=True
remove_unused_original_minimum_age_seconds=86400
remove_unused_resized_minimum_age_seconds=3600
To see how the settings affect the deletion of a running instance, check the directory where
the images are stored:
# ls -lash /var/lib/nova/instances/_base/
16
VM Image Guide
current
4. Modify images
guestfish .......................................................................................................................
guestmount ...................................................................................................................
virt-* tools .....................................................................................................................
Loop devices, kpartx, network block devices ..................................................................
17
19
19
20
Once you have obtained a virtual machine image, you may want to make some changes to
it before uploading it to the OpenStack Image service. Here we describe several tools available that allow you to modify images.
Warning
Do not attempt to use these tools to modify an image that is attached to a running virtual machine. These tools are designed to only modify images that are
not currently running.
guestfish
The guestfish program is a tool from the libguestfs project that allows you to modify the
files inside of a virtual machine image.
Note
guestfish does not mount the image directly into the local file system. Instead,
it provides you with a shell interface that enables you to view, edit, and delete
files. Many of guestfish commands, such as touch, chmod, and rm, resemble
traditional bash commands.
17
VM Image Guide
current
><fs>
This starts a guestfish session. Note that the guestfish prompt looks like a fish: > <fs>.
We must first use the run command at the guestfish prompt before we can do anything
else. This will launch a virtual machine, which will be used to perform all of the file manipulations.
><fs> run
We can now view the file systems in the image using the list-filesystems command:
><fs> list-filesystems
/dev/vda1: ext4
/dev/vg_centosbase/lv_root: ext4
/dev/vg_centosbase/lv_swap: swap
We need to mount the logical volume that contains the root partition:
><fs> mount /dev/vg_centosbase/lv_root /
Next, we want to delete a file. We can use the rm guestfish command, which works the
same way it does in a traditional shell.
><fs> rm /etc/udev/rules.d/70-persistent-net.rules
We want to edit the ifcfg-eth0 file to remove the HWADDR line. The edit command will
copy the file to the host, invoke your editor, and then copy the file back.
><fs> edit /etc/sysconfig/network-scripts/ifcfg-eth0
If you want to modify this image to load the 8021q kernel at boot time, you must create an
executable script in the /etc/sysconfig/modules/ directory. You can use the touch
guestfish command to create an empty file, the edit command to edit it, and the chmod
command to make it executable.
><fs> touch /etc/sysconfig/modules/8021q.modules
><fs> edit /etc/sysconfig/modules/8021q.modules
VM Image Guide
current
guestmount
For some types of changes, you may find it easier to mount the image's file system directly
in the guest. The guestmount program, also from the libguestfs project, allows you to do
so.
For example, to mount the root partition from our centos63_desktop.qcow2 image to
/mnt, we can do:
# guestmount -a centos63_desktop.qcow2 -m /dev/vg_centosbase/lv_root --rw /mnt
If we didn't know in advance what the mount point is in the guest, we could use the i(inspect) flag to tell guestmount to automatically determine what mount point to use:
# guestmount -a centos63_desktop.qcow2 -i --rw /mnt
Once mounted, we could do things like list the installed packages using rpm:
# rpm -qa --dbpath /mnt/var/lib/rpm
virt-* tools
The libguestfs project has a number of other useful tools, including:
virt-edit for editing a file inside of an image.
virt-df for displaying free space inside of an image.
virt-resize for resizing an image.
virt-sysprep for preparing an image for distribution (for example, delete SSH host keys,
remove MAC address info, or remove user accounts).
virt-sparsify for making an image sparse.
virt-p2v for converting a physical machine to an image that runs on KVM.
virt-v2v for converting Xen and VMware images to KVM images.
19
VM Image Guide
current
Resize an image
Here is an example of how to use virt-resize to resize an image. Assume we have a 16GB
Windows image in qcow2 format that we want to resize to 50GB. First, we use virt-filesystems to identify the partitions:
# virt-filesystems --long --parts --blkdevs -h -a /data/images/win2012.qcow2
Name
Type
MBR Size Parent
/dev/sda1 partition 07
350M /dev/sda
/dev/sda2 partition 07
16G
/dev/sda
/dev/sda
device
16G
-
In this case, it's the /dev/sda2 partition that we want to resize. We create a new qcow2
image and use the virt-resize command to write a resized copy of the original into the new
image:
# qemu-img create -f qcow2 /data/images/win2012-50gb.qcw2 50G
# virt-resize --expand /dev/sda2 /data/images/win2012.qcow2 \
/data/images/win2012-50gb.qcow2
Examining /data/images/win2012.qcow2 ...
**********
Summary of changes:
/dev/sda1: This partition will be left alone.
/dev/sda2: This partition will be resized from 15.7G to 49.7G.
filesystem ntfs on /dev/sda2 will be expanded using the
'ntfsresize' method.
The
**********
Setting up initial partition table on /data/images/win2012-50gb.qcow2 ...
Copying /dev/sda1 ...
100% ###################################################################
00:00
Copying /dev/sda2 ...
100% ###################################################################
00:00
Expanding /dev/sda2 using the 'ntfsresize' method ...
Resize operation completed with no errors. Before deleting the old
disk, carefully check that the resized disk boots and works correctly.
Warning
Mounting untrusted guest images using the tools described in this section is a
security risk, always use libguestfs tools such as guestfish and guestmount if you
have access to them. See A reminder why you should never mount guest disk
images on the host OS by Daniel Berrang for more details.
20
VM Image Guide
current
In this example, /dev/loop0 is free. Associate a loop device with the raw image:
# losetup /dev/loop0 fedora17.img
If the image only has a single partition, you can mount the loop device directly:
# mount /dev/loop0 /mnt
If the image has multiple partitions, use kpartx to expose the partitions as separate devices
(for example, /dev/mapper/loop0p1), then mount the partition that corresponds to the
root file system:
# kpartx -av /dev/loop0
If the image has, say three partitions (/boot, /, swap), there should be one new device created per partition:
$ ls -l /dev/mapper/loop0p*
brw-rw---- 1 root disk 43, 49 2012-03-05 15:32 /dev/mapper/loop0p1
brw-rw---- 1 root disk 43, 50 2012-03-05 15:32 /dev/mapper/loop0p2
brw-rw---- 1 root disk 43, 51 2012-03-05 15:32 /dev/mapper/loop0p3
Next, you need to use the vgscan command to identify the LVM volume groups and then
vgchange to expose the volumes as devices:
# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg_rhel62x8664" using metadata type lvm2
# vgchange -ay
21
VM Image Guide
current
umount /mnt
vgchange -an vg_rhel62x8664
kpartx -d /dev/loop0
losetup -d /dev/loop0
Assuming the first block device (/dev/nbd0) is not currently in use, we can expose the disk
partitions using the qemu-nbd and partprobe commands. As root:
# qemu-nbd -c /dev/nbd0 image.qcow2
# partprobe /dev/nbd0
If the image has, say three partitions (/boot, /, swap), there should be one new device created for each partition:
$ ls -l /dev/nbd3*
brw-rw---- 1 root disk
brw-rw---- 1 root disk
brw-rw---- 1 root disk
brw-rw---- 1 root disk
43,
43,
43,
43,
48
49
50
51
2012-03-05
2012-03-05
2012-03-05
2012-03-05
15:32
15:32
15:32
15:32
/dev/nbd0
/dev/nbd0p1
/dev/nbd0p2
/dev/nbd0p3
Note
If the network block device you selected was already in use, the initial qemu-nbd command will fail silently, and the /dev/nbd3p{1,2,3} device files
will not be created.
If the image partitions are not managed with LVM, they can be mounted directly:
# mkdir /mnt/image
# mount /dev/nbd3p2 /mnt
22
VM Image Guide
23
current
VM Image Guide
current
24
24
25
26
34
41
44
46
Creating a new image is a step done outside of your OpenStack installation. You create the
new image manually on your own system and then upload the image to your cloud.
To create a new image, you will need the installation CD or DVD ISO file for the guest operating system. You'll also need access to a virtualization tool. You can use KVM for this. Or, if
you have a GUI desktop virtualization tool (such as, VMware Fusion or VirtualBox), you can
use that instead and just convert the file to raw once you are done.
When you create a new virtual machine image, you will need to connect to the graphical
console of the hypervisor, which acts as the virtual machine's display and allows you to interact with the guest operating system's installer using your keyboard and mouse. KVM can
expose the graphical console using the VNC (Virtual Network Computing) protocol or the
newer SPICE protocol. We'll use the VNC protocol here, since you're more likely to be able
to find a VNC client that works on your local desktop.
VM Image Guide
current
If you are building the image on a headless server, and you have an X server on your local
machine, you can launch virt-manager using ssh X11 forwarding to access the GUI. Since
virt-manager interacts directly with libvirt, you typically need to be root to access it. If you
can ssh directly in as root (or with a user that has permissions to interact with libvirt), do:
$ ssh -X root@server virt-manager
If the account you use to ssh into your server does not have permissions to run libvirt, but
has sudo privileges, do:
$ ssh -X root@server
$ sudo virt-manager
Note
The -X flag passed to ssh will enable X11 forwarding over ssh. If this does not
work, try replacing it with the -Y flag.
Click the "New" button at the top-left and step through the instructions.
You will be shown a series of dialog boxes that will allow you to specify information about
the virtual machine.
Note
When using qcow2 format images you should check the option 'customize before install', go to disk properties and explicitly select the qcow2 format. This
ensures the virtual machine disk size will be correct.
VM Image Guide
current
Because VNC is a standard protocol, there are multiple clients available that implement the
VNC spec, including TigerVNC (multiple platforms), TightVNC (multiple platforms), RealVNC
(multiple platforms), Chicken (Mac OS X), Krde (KDE), and Vinagre (GNOME).
The following example shows how to use the qemu-img command to create an empty image file, and virt-install command to start up a virtual machine using that image file. As
root:
# qemu-img create -f qcow2 /data/centos-6.4.qcow2 10G
# virt-install --virt-type kvm --name centos-6.4 --ram 1024 \
--cdrom=/data/CentOS-6.4-x86_64-netinstall.iso \
--disk path=/data/centos-6.4.qcow2,size=10,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6
Starting install...
Creating domain...
|
0 B
00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
The KVM hypervisor starts the virtual machine with the libvirt name, centos-6.4, with
1024MB of RAM. The virtual machine also has a virtual CD-ROM drive associated with the
/data/CentOS-6.4-x86_64-netinstall.iso file and a local 10GB hard disk in
qcow2 format that is stored in the host at /data/centos-6.4.qcow2. It configures networking to use libvirt's default network. There is a VNC server that is listening on all interfaces, and libvirt will not attempt to launch a VNC client automatically nor try to display the
text console (--no-autoconsole). Finally, libvirt will attempt to optimize the configuration for a Linux guest running a RHEL 6.x distribution.
Note
When using the libvirt default network, libvirt will connect the virtual
machine's interface to a bridge called virbr0. There is a dnsmasq process managed by libvirt that will hand out an IP address on the 192.168.122.0/24 subnet,
and libvirt has iptables rules for doing NAT for IP addresses on this subnet.
Run the virt-install --os-variant list command to see a range of allowed --os-variant options.
Use the virsh vncdisplay vm-name command to get the VNC port number.
# virsh vncdisplay centos-6.4
:1
In the example above, the guest centos-6.4 uses VNC display :1, which corresponds to
TCP port 5901. You should be able to connect a VNC client running on your local machine
to display :1 on the remote machine and step through the installation process.
VM Image Guide
current
2.
Click one of the HTTP links in the right-hand column next to one of the mirrors.
3.
Click the folder link of the CentOS version that you want to use. For example, 6.4/.
4.
5.
6.
Click the netinstall ISO image that you want to download. For example, CentOS-6.4-x86_64-netinstall.iso is a good choice because it is a smaller image
that downloads missing packages from the Internet during installation.
27
VM Image Guide
current
Configure TCP/IP
The default TCP/IP settings are fine. In particular, ensure that Enable IPv4 support is enabled with DHCP, which is the default.
VM Image Guide
current
Depending on the version of CentOS, the net installer requires the user to specify either a
URL or the web site and a CentOS directory that corresponds to one of the CentOS mirrors.
If the installer asks for a single URL, a valid URL might be http://mirror.umd.edu/
centos/6/os/x86_64.
Note
Consider using other mirrors as an alternative to mirror.umd.edu.
29
VM Image Guide
current
If the installer asks for web site name and CentOS directory separately, you might enter:
Web site name: mirror.umd.edu
CentOS directory: centos/6/os/x86_64
See CentOS mirror page to get a full list of mirrors, click on the "HTTP" link of a mirror to retrieve the web site name of a mirror.
Storage devices
If prompted about which type of devices your installation uses, choose Basic Storage Devices.
Hostname
The installer may ask you to choose a host name. The default
(localhost.localdomain) is fine. You install the cloud-init package later, which
sets the host name on boot when a new instance is provisioned using this image.
30
VM Image Guide
current
To eject a disk by using the virsh command, libvirt requires that you attach an empty disk
at the same target that the CDROM was previously attached, which should be hdc. You
can confirm the appropriate target using the virsh dumpxml vm-image command.
# virsh dumpxml centos-6.4
<domain type='kvm'>
<name>centos-6.4</name>
...
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
...
</domain>
Run the following commands from the host to eject the disk and reboot using virsh, as
root. If you are using virt-manager, the commands below will work, but you can also use
the GUI to detach and reboot it by manually stopping and starting.
# virsh attach-disk --type cdrom --mode readonly centos-6.4 "" hdc
# virsh destroy centos-6.4
# virsh start centos-6.4
31
VM Image Guide
current
The account varies by distribution. On Ubuntu-based virtual machines, the account is called
ubuntu. On Fedora-based virtual machines, the account is called ec2-user.
You can change the name of the account used by cloud-init by editing the /etc/
cloud/cloud.cfg file and adding a line with a different user. For example, to configure
cloud-init to put the key in an account named admin, add this line to the configuration
file:
user: admin
32
VM Image Guide
current
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
ATTEMPTS=30
FAILED=0
while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key \
> /tmp/metadata-key 2>/dev/null
if [ \$? -eq 0 ]; then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/metadata-key
echo "Successfully retrieved public key from instance metadata"
echo "*****************"
echo "AUTHORIZED KEYS"
echo "*****************"
cat /root/.ssh/authorized_keys
echo "*****************"
fi
done
Note
Some VNC clients replace the colon (:) with a semicolon (;) and the underscore
(_) with a hyphen (-). Make sure to specify http: and not http;. Make sure
to specify authorized_keys and not authorized-keys.
Note
The previous script only gets the ssh public key from the metadata server. It
does not get user data, which is optional data that can be passed by the user
when requesting a new instance. User data is often used to run a custom script
when an instance boots.
As the OpenStack metadata service is compatible with version 2009-04-04 of
the Amazon EC2 metadata service, consult the Amazon EC2 documentation on
Using Instance Metadata for details on how to get user data.
Configure console
For the nova console-log command to work properly on CentOS 6.x, you might need to
add the following lines to the /boot/grub/menu.lst file:
serial --unit=0 --speed=115200
terminal --timeout=10 console serial
# Edit the kernel line to add the console entries
kernel ... console=tty0 console=ttyS0,115200n8
33
VM Image Guide
current
Image is complete
The underlying image file that you created with qemu-img create is ready to be uploaded.
For example, you can upload the /tmp/centos-6.4.qcow2 image to the Image service.
VM Image Guide
current
If you are using virt-manager, the commands should look something like this:
# qemu-img create -f qcow2 /tmp/trusty.qcow2 10G
# virt-install --virt-type kvm --name trusty --ram 1024 \
--cdrom=/data/isos/trusty-64-mini.iso \
--disk /tmp/trusty.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=ubuntutrusty
Hostname
The installer may ask you to choose a hostname. The default (ubuntu) is fine. We will install the cloud-init package later, which will set the hostname on boot when a new instance
is provisioned using this image.
Select a mirror
The default mirror proposed by the installer should be fine.
35
VM Image Guide
current
Automatic updates
The Ubuntu installer will ask how you want to manage upgrades on your system. This option depends on your specific use case. If your virtual machine instances will be connected
to the Internet, we recommend "Install security updates automatically".
36
VM Image Guide
current
37
VM Image Guide
current
38
VM Image Guide
current
Note
There is a known bug in Ubuntu 14.04; when you select "Continue", the virtual
machine will shut down, even though it says it will reboot.
To eject a disk using virsh, libvirt requires that you attach an empty disk at the same target
that the CDROM was previously attached, which should be hdc. You can confirm the appropriate target using the virsh dumpxml vm-image command.
# virsh dumpxml trusty
<domain type='kvm'>
<name>trusty</name>
...
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
...
</domain>
Run the following commands in the host as root to start up the machine again as paused,
eject the disk and resume. If you are using virt-manager, you may use the GUI instead.
# virsh start trusty --paused
39
VM Image Guide
current
Note
In the previous example, you paused the instance, ejected the disk, and unpaused the instance. In theory, you could have ejected the disk at the Installation complete screen. However, our testing indicates that the Ubuntu installer
locks the drive so that it cannot be ejected at that point.
Install cloud-init
The cloud-init script starts on instance boot and will search for a metadata provider to fetch
a public key from. The public key will be placed in the default user account for the image.
Install the cloud-init package:
# apt-get install cloud-init
When building Ubuntu images cloud-init must be explicitly configured for the metadata
source in use. The OpenStack metadata server emulates the EC2 metadata service used by
images in Amazon EC2.
To set the metadata source to be used by the image run the dpkg-reconfigure command
against the cloud-init package. When prompted select the EC2 data source:
# dpkg-reconfigure cloud-init
The account varies by distribution. On Ubuntu-based virtual machines, the account is called
"ubuntu". On Fedora-based virtual machines, the account is called "ec2-user".
You can change the name of the account used by cloud-init by editing the /etc/cloud/
cloud.cfg file and adding a line with a different user. For example, to configure cloudinit to put the key in an account named "admin", edit the config file so it has the line:
user: admin
VM Image Guide
current
There is a utility called virt-sysprep, that performs various cleanup tasks such as removing
the MAC address references. It will clean up a virtual machine image in place:
# virt-sysprep -d trusty
Image is complete
The underlying image file that you created with qemu-img create, such as /tmp/
trusty.qcow2, is now ready for uploading to the OpenStack Image service.
41
VM Image Guide
current
2.
3.
Set the timezone, network configuration, installation source, and the root password.
Optionally, you can choose to create a user.
4.
42
VM Image Guide
current
5.
Run the following commands from the host to eject the disk and reboot using virsh, as
root.
# virsh attach-disk --type cdrom --mode readonly fedora-20 "" hdc
# virsh destroy fedora-20
# virsh start fedora-20
You can also use the GUI to detach and reboot it by manually stopping and starting.
6.
Log in as root user when you boot for the first time after installation.
7.
Install and run the acpid service on the guest system to enable the virtual machine to
reboot or shutdown an instance.
Run the following commands inside the Fedora guest to install the ACPI service and
configure it to start when the system boots:
# yum install acpid
# chkconfig acpid on
8.
Install cloud-init package inside the Fedora guest by adding the EPEL repo:
The cloud-init package automatically fetches the public key from the metadata
server and places the key in an account.
# yum install http://download.fedoraproject.org/pub/epel/6/x86_64/epelrelease-6-8.noarch.rpm
43
VM Image Guide
current
You can change the name of the account used by cloud-init by editing the /etc/
cloud/cloud.cfg file and adding a line with a different user. For example, to configure cloud-init to put the key in an account named admin, add this line to the
configuration file:
user: admin
9.
Disable the default zeroconf route for the instance to access the metadata service:
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
10. For the nova console-log command to work properly on Fedora 20, you might need to
add the following lines to the /boot/grub/menu.lst file:
serial --unit=0 --speed=115200
terminal --timeout=10 console serial
# Edit the kernel line to add the console entries
kernel ... console=tty0 console=ttyS0,115200n8
11. Shut down the instance from inside the instance as a root user:
# /sbin/shutdown -h now
13. Undefine the domain since you no longer need to have this virtual machine image
managed by libvirt:
# virsh undefine fedora-20
The underlying image file that you created with qemu-img create is ready to be uploaded
to the Image service.
Download a Windows Server 2012 installation ISO. Evaluation images are available on the Microsoft website (registration required).
b.
Download the signed VirtIO drivers ISO from the Fedora website.
44
VM Image Guide
c.
current
2.
Start the Windows Server 2012 installation with the virt-install command:
# virt-install --connect qemu:///system \
--name ws2012 --ram 2048 --vcpus 2 \
--network network=default,model=virtio \
--disk path=ws2012.qcow2,format=qcow2,device=disk,bus=virtio \
--cdrom /path/to/en_windows_server_2012_x64_dvd.iso \
--disk path=/path/to/virtio-win-0.1-XX.iso,device=cdrom \
--vnc --os-type windows --os-variant win2k8
Use virt-manager or virt-viewer to connect to the VM and start the Windows installation.
3.
4.
5.
6.
To allow Cloudbase-Init to run scripts during an instance boot, set the PowerShell execution policy to be unrestricted:
C:\powershell
C:\Set-ExecutionPolicy Unrestricted
7.
45
VM Image Guide
current
The minimum supported disk size for FreeBSD is 1GB. Because the goal is to make the
smallest possible base image, the example uses that minimum size. This size is sufficient
to include the optional doc, games, and lib32 collections. To include the ports collection, add another 1GB. To include src, add 512MB.
2.
3.
Launch a VM on your local workstation. Use the same hypervisor, virtual disk, and virtual network drivers as you use in your production environment.
The following command uses the minimum amount of RAM, which is 256MB:
$ kvm -smp 1 -m 256 -cdrom FreeBSD-10.1-RELEASE-amd64-bootonly.iso \
-drive if=virtio,file=freebsd.qcow2 \
-net nic,model=virtio -net user
You can specify up to 1GB additional RAM to make the installation process run faster.
This VM must also have Internet access to download packages.
Note
By using the same hypervisor, you can ensure that you emulate the same
devices that exist in production. However, if you use full hardware virtu46
VM Image Guide
current
To install the operating system, complete the following steps inside the VM:
a.
b.
Accept the default keymap or select an appropriate mapping for your needs.
c.
Provide a host name for your image. If you use bsd-cloudinit, it overrides this value
with the name provided by OpenStack when an instance boots from this image.
d.
When prompted about the optional doc, games, lib32, ports, and src system
components, select only those that you need. It is possible to have a fully functional installation without selecting additional components selected. As noted previously, a minimal system with a 1GB virtual disk supports doc, games, and lib32
inclusive. The ports collection requires at least 1GB additional space and possibly more if you plan to install many ports. The src collection requires an additional 512MB.
e.
Configure the primary network interface to use DHCP. In this example, which uses
a virtio network device, this interface is named vtnet0.
f.
g.
VM Image Guide
current
Note
If you modify this example, the root partition, which is mounted on
/, must be the last partition on the drive so that it can expand at run
time to the disk size that your instance type provides. Also note that
bsd-cloudinit currently has a hard-coded assumption that this is the
second partition.
5.
6.
7.
8.
From the list of services to start on boot, you must select ssh. Optionally, select other
services.
9.
48
VM Image Guide
current
11. After you exit, you can open a shell to complete manual configuration steps. Select Yes
to make a few OpenStack-specific changes:
a.
This sets console output to go to the serial console, which is displayed by nova
consolelog, and the video console for sites with VNC or Spice configured.
b.
c.
Download the latest bsd-cloudinit-installer. The download commands differ between FreeBSD 10.1 and 9.2 because of differences in how the fetch command
handles HTTPS URLs.
In FreeBSD 10.1 the fetch command verifies SSL peers by default, so you need to
install the ca_root_nss package that contains certificate authority root certificates
and tell fetch where to find them. For FreeBSD 10.1 run these commands:
# pkg install ca_root_nss
# fetch --ca-cert=/usr/local/share/certs/ca-root-nss.crt \
https://raw.github.com/pellaeon/bsd-cloudinit-installer/master/
installer.sh
FreeBSD 9.2 fetch does not support peer-verification for https. For FreeBSD 9.2,
run this command:
# fetch https://raw.github.com/pellaeon/bsd-cloudinit-installer/
master/installer.sh
d.
Issue this command to download and install the latest bsd-cloudinit package, and
install the necessary prerequisites.
e.
Install sudo and configure the freebsd user to have passwordless access:
# pkg install sudo
# echo 'freebsd ALL=(ALL) NOPASSWD: ALL' > /usr/local/etc/sudoers.d/
10-cloudinit
49
VM Image Guide
current
50
50
52
52
52
52
52
There are several tools that are designed to automate image creation.
Diskimage-builder
Diskimage-builder is an automated disk image creation tool that supports a variety of distributions and architectures. Diskimage-builder (DIB) can build images for Fedora, Red Hat Enterprise Linux, Ubuntu, Debian, CentOS, and openSUSE. DIB is organized in a series of elements that build on top of each other to create specific images.
To build an image, call the following script:
# disk-image-create ubuntu vm
This example creates a generic, bootable Ubuntu image of the latest release.
Further customization could be accomplished by setting environment variables or adding elements to the command-line:
# disk-image-create -a armhf ubuntu vm
This example creates the image as before, but for arm architecture. More elements are
available in the git source directory and documented in the diskimage-builder elements documentation.
Oz
Oz is a command-line tool that automates the process of creating a virtual machine image
file. Oz is a Python app that interacts with KVM to step through the process of installing a
virtual machine. It uses a predefined set of kickstart (Red Hat-based systems) and preseed
files (Debian-based systems) for operating systems that it supports, and it can also be used
to create Microsoft Windows images. On Fedora, install Oz with yum:
# yum install oz
Note
As of this writing, there are no Oz packages for Ubuntu, so you will need to either install from the source or build your own .deb file.
A full treatment of Oz is beyond the scope of this document, but we will provide an example. You can find additional examples of Oz template files on GitHub at rackerjoe/oz-image-build/templates. Here's how you would create a CentOS 6.4 image with Oz.
50
VM Image Guide
current
Create a template file (we'll call it centos64.tdl) with the following contents. The only
entry you will need to change is the <rootpw> contents.
<template>
<name>centos64</name>
<os>
<name>CentOS-6</name>
<version>4</version>
<arch>x86_64</arch>
<install type='iso'>
<iso>http://mirror.rackspace.com/CentOS/6/isos/x86_64/CentOS-6.4-x86_64bin-DVD1.iso</iso>
</install>
<rootpw>CHANGE THIS TO YOUR ROOT PASSWORD</rootpw>
</os>
<description>CentOS 6.4 x86_64</description>
<repositories>
<repository name='epel-6'>
<url>http://download.fedoraproject.org/pub/epel/6/$basearch</url>
<signed>no</signed>
</repository>
</repositories>
<packages>
<package name='epel-release'/>
<package name='cloud-utils'/>
<package name='cloud-init'/>
</packages>
<commands>
<command name='update'>
yum -y update
yum clean all
sed -i '/^HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0
echo -n > /etc/udev/rules.d/70-persistent-net.rules
echo -n > /lib/udev/rules.d/75-persistent-net-generator.rules
</command>
</commands>
</template>
This Oz template specifies where to download the Centos 6.4 install ISO. Oz will use the version information to identify which kickstart file to use. In this case, it will be RHEL6.auto.
It adds EPEL as a repository and install the epel-release, cloud-utils, and cloudinit packages, as specified in the packages section of the file.
After Oz completes the initial OS install using the kickstart file, it customizes the image with
an update. It also removes any reference to the eth0 device that libvirt creates while Oz
does the customizing, as specified in the command section of the XML file.
To run this:
# oz-install -d3 -u centos64.tdl -x centos64-libvirt.xml
VM Image Guide
current
If you leave out the -u flag, or you want to edit the file to do additional customizations,
you can use the oz-customize command, using the libvirt XML file that oz-install creates.
For example:
# oz-customize -d3 centos64.tdl centos64-libvirt.xml
Oz will invoke libvirt to boot the image inside of KVM, then Oz will ssh into the instance
and perform the customizations.
VMBuilder
VMBuilder (Virtual Machine Builder) is a command-line tool that creates virtual machine images for different hypervisors. The version of VMBuilder that ships with Ubuntu can only
create Ubuntu virtual machine guests. The version of VMBuilder that ships with Debian can
create Ubuntu and Debian virtual machine guests.
The Ubuntu Server Guide has documentation on how to use VMBuilder to create an Ubuntu image.
VeeWee
VeeWee is often used to build Vagrant boxes, but it can also be used to build KVM images.
Packer
Packer is a tool for creating machine images for multiple platforms from a single source
configuration.
imagefactory
imagefactory is a newer tool designed to automate the building, converting, and uploading images to different cloud providers. It uses Oz as its back-end and includes support for
OpenStack-based clouds.
SUSE Studio
SUSE Studio is a web application for building and testing software applications in a web
browser. It supports the creation of physical, virtual or cloud-based applications and includes support for building images for OpenStack based clouds using SUSE Linux Enterprise
and openSUSE as distributions.
52
VM Image Guide
current
Argument to qemu-img
qcow2
QED (KVM)
qed
raw
raw
VDI (VirtualBox)
vdi
VHD (Hyper-V)
vpc
VMDK (VMware)
vmdk
This example will convert a raw image file named centos7.img to a qcow2 image file.
$ qemu-img convert -f raw -O qcow2 centos7.img centos7.qcow2
Run the following command to convert a VMDK image file to a raw image file.
$ qemu-img convert -f vmdk -O raw centos7.vmdk centos7.img
Run the following command to convert a VMDK image file to a qcow2 image file.
$ qemu-img convert -f vmdk -O qcow2 centos7.vmdk centos7.qcow2
Note
The -f format flag is optional. If omitted, qemu-img will try to infer the image format.
When converting an image file with Windows OS, ensure the virtio driver is installed. Otherwise, you will get a blue screen of death or BSOD when launching the image due to lack of the virtio driver. Another option is to set the image
properties as below when you update the image in glance to avoid this issue,
but it will reduce performance significantly.
$ glance image-update --property hw_disk_bus='ide' image_id
VM Image Guide
current
alBox stores images by default in the ~/VirtualBox VMs/ directory. The following example creates a raw image in the current directory from a VirtualBox VDI image.
$ VBoxManage clonehd ~/VirtualBox\ VMs/fedora21.vdi fedora21.img --format raw
54
VM Image Guide
current
AppendixA.Community support
Table of Contents
Documentation .............................................................................................................
ask.openstack.org ..........................................................................................................
OpenStack mailing lists ..................................................................................................
The OpenStack wiki ......................................................................................................
The Launchpad Bugs area .............................................................................................
The OpenStack IRC channel ...........................................................................................
Documentation feedback ..............................................................................................
OpenStack distribution packages ...................................................................................
55
56
56
56
57
58
58
58
The following resources are available to help you run and use OpenStack. The OpenStack
community constantly improves and adds to the main features of OpenStack, but if you
have any questions, do not hesitate to ask. Use the following resources to get OpenStack
support, and troubleshoot your installations.
Documentation
For the available OpenStack documentation, see docs.openstack.org.
To provide feedback on documentation, join and use the
<openstack-docs@lists.openstack.org> mailing list at OpenStack Documentation
Mailing List, or report a bug.
The following books explain how to install an OpenStack cloud and its associated components:
Installation Guide for openSUSE 13.2 and SUSE Linux Enterprise Server 12
Installation Guide for Red Hat Enterprise Linux 7, CentOS 7, and Fedora 21
Installation Guide for Ubuntu 14.04 (LTS)
The following books explain how to configure and run an OpenStack cloud:
Architecture Design Guide
Cloud Administrator Guide
Configuration Reference
Operations Guide
Networking Guide
High Availability Guide
55
VM Image Guide
current
Security Guide
Virtual Machine Image Guide
The following books explain how to use the OpenStack dashboard and command-line
clients:
API Quick Start
End User Guide
Admin User Guide
Command-Line Interface Reference
The following documentation provides reference and guidance information for the OpenStack APIs:
OpenStack API Complete Reference (HTML)
API Complete Reference (PDF)
ask.openstack.org
During the set up or testing of OpenStack, you might have questions about how a specific task is completed or be in a situation where a feature does not work correctly. Use
the ask.openstack.org site to ask questions and get answers. When you visit the https://
ask.openstack.org site, scan the recently asked questions to see whether your question has
already been answered. If not, ask a new question. Be sure to give a clear, concise summary
in the title and provide as much detail as possible in the description. Paste in your command
output or stack traces, links to screen shots, and any other information which might be useful.
VM Image Guide
current
VM Image Guide
current
Documentation feedback
To provide feedback on documentation, join and use the
<openstack-docs@lists.openstack.org> mailing list at OpenStack Documentation
Mailing List, or report a bug.
58