2013-04-06 21:04:51 +00:00
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
|
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="ch_creating_images_manually">
|
|
|
|
|
<title>Creating images manually</title>
|
2013-09-11 09:22:20 +00:00
|
|
|
|
|
|
|
|
|
<para>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.
|
|
|
|
|
</para>
|
2013-04-06 21:04:51 +00:00
|
|
|
|
<para>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
|
2013-09-07 04:40:23 +00:00
|
|
|
|
this. Or, if you have a GUI desktop virtualization tool (such as, VMWare Fusion and VirtualBox),
|
2013-04-06 21:04:51 +00:00
|
|
|
|
you can use that instead and just convert the file to raw once you're done.</para>
|
|
|
|
|
<para>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 <link
|
|
|
|
|
xlink:href="https://en.wikipedia.org/wiki/Virtual_Network_Computing">VNC</link> (Virtual
|
|
|
|
|
Network Computing) protocol or the newer <link xlink:href="http://spice-space.org"
|
|
|
|
|
>SPICE</link> 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.</para>
|
2013-09-03 02:56:27 +00:00
|
|
|
|
<section xml:id="net-running">
|
|
|
|
|
<title>Ensuring the libvirt default network is running</title>
|
|
|
|
|
<para>Before starting a virtual machine with libvirt, verify that the libvirt "default"
|
|
|
|
|
network has been started. This network must be active for your virtual machine to be
|
|
|
|
|
able to connect out to the network. Starting this network will create a Linux bridge
|
|
|
|
|
(usually called <literal>virbr0</literal>), iptables rules, and a dnsmasq process that
|
|
|
|
|
will serve as a DHCP server.</para>
|
|
|
|
|
<para>To verify that the libvirt "default" network is enabled, use the <command>virsh
|
|
|
|
|
net-list</command> command and verify that the "default" network is
|
2013-09-14 18:28:53 +00:00
|
|
|
|
active:<screen><prompt>#</prompt> <userinput>virsh net-list</userinput>
|
2013-09-03 02:56:27 +00:00
|
|
|
|
<computeroutput>Name State Autostart
|
|
|
|
|
-----------------------------------------
|
2013-09-14 18:28:53 +00:00
|
|
|
|
default active yes</computeroutput></screen>
|
|
|
|
|
</para>
|
2013-09-03 02:56:27 +00:00
|
|
|
|
<para>If the network is not active, start it by
|
2013-09-14 18:28:53 +00:00
|
|
|
|
doing:<screen><prompt>#</prompt> <userinput>virsh net-start default</userinput></screen>
|
|
|
|
|
</para>
|
2013-09-03 02:56:27 +00:00
|
|
|
|
</section>
|
2013-04-06 21:04:51 +00:00
|
|
|
|
<section xml:id="virt-manager">
|
|
|
|
|
<title>Using the virt-manager X11 GUI</title>
|
|
|
|
|
<para>If you plan to create a virtual machine image on a machine that can run X11 applications,
|
|
|
|
|
the simplest way to do so is to use the <command>virt-manager</command> GUI, which is
|
|
|
|
|
installable as the <literal>virt-manager</literal> package on both Fedora-based and
|
|
|
|
|
Debian-based systems. This GUI has an embedded VNC client in it that will let you view and
|
|
|
|
|
interact with the guest's graphical console.</para>
|
2013-08-02 16:00:26 +00:00
|
|
|
|
<para>If you are building the image on a headless server, and you have an X server on your
|
2013-04-06 21:04:51 +00:00
|
|
|
|
local machine, you can launch <command>virt-manager</command> 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:<screen><prompt>$</prompt> <userinput>ssh -X root@server virt-manager</userinput></screen></para>
|
|
|
|
|
<para>If the account you use to ssh into your server does not have permissions to run libvirt,
|
2013-09-07 04:40:23 +00:00
|
|
|
|
but has sudo privileges, do:<screen><prompt>$</prompt> <userinput>ssh -X root@server</userinput>
|
2013-04-06 21:04:51 +00:00
|
|
|
|
<prompt>$</prompt> <userinput>sudo virt-manager</userinput> </screen><note>
|
|
|
|
|
<para>The <literal>-X</literal> flag passed to ssh will enable X11 forwarding over ssh.
|
|
|
|
|
If this does not work, try replacing it with the <literal>-Y</literal> flag.</para>
|
|
|
|
|
</note></para>
|
|
|
|
|
<para>Click the "New" button at the top-left and step through the instructions. <mediaobject>
|
|
|
|
|
<imageobject>
|
|
|
|
|
<imagedata fileref="figures/virt-manager-new.png" format="PNG" contentwidth="6in"/>
|
|
|
|
|
</imageobject>
|
|
|
|
|
</mediaobject>You will be shown a series of dialog boxes that will allow you to specify
|
|
|
|
|
information about the virtual machine.</para>
|
|
|
|
|
</section>
|
|
|
|
|
<section xml:id="virt-install">
|
|
|
|
|
<title>Using virt-install and connecting using a local VNC client</title>
|
|
|
|
|
<para>If you do not with to use virt-manager (e.g., you don't want to install the
|
|
|
|
|
dependencies on your server, you don't have an X server running locally, the X11
|
|
|
|
|
forwarding over SSH isn't working), you can use the <command>virt-install</command> tool
|
|
|
|
|
to boot the virtual machine through libvirt and connect to the graphical console from a
|
|
|
|
|
VNC client installed on your local machine.</para>
|
|
|
|
|
<para>Since VNC is a standard protocol, there are multiple clients available that implement
|
|
|
|
|
the VNC spec, including <link
|
|
|
|
|
xlink:href="http://sourceforge.net/apps/mediawiki/tigervnc/index.php?title=Welcome_to_TigerVNC"
|
|
|
|
|
>TigerVNC</link> (multiple platforms), <link xlink:href="http://tightvnc.com/"
|
|
|
|
|
>TightVNC</link> (multiple platforms), <link xlink:href="http://realvnc.com/"
|
|
|
|
|
>RealVNC</link> (multiple platforms), <link
|
|
|
|
|
xlink:href="http://sourceforge.net/projects/chicken/">Chicken</link> (Mac OS X),
|
|
|
|
|
<link xlink:href="http://userbase.kde.org/Krdc">Krde</link> (KDE), and <link
|
|
|
|
|
xlink:href="http://projects.gnome.org/vinagre/">Vinagre</link> (GNOME).</para>
|
2013-09-07 04:40:23 +00:00
|
|
|
|
<para>The following example shows how to use the <command>qemu-img</command> command to create an empty
|
2013-04-06 21:04:51 +00:00
|
|
|
|
image file <command>virt-install</command> command to start up a virtual machine using
|
|
|
|
|
that image file. As root:</para>
|
|
|
|
|
<screen><prompt>#</prompt> <command>qemu-img create -f qcow2 /data/centos-6.4.qcow2 10G</command>
|
|
|
|
|
<prompt>#</prompt> <userinput>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</userinput>
|
|
|
|
|
<computeroutput>
|
|
|
|
|
Starting install...
|
|
|
|
|
Creating domain... | 0 B 00:00
|
|
|
|
|
Domain installation still in progress. You can reconnect to
|
2013-09-11 09:22:20 +00:00
|
|
|
|
the console to complete the installation process.</computeroutput></screen>
|
2013-04-06 21:04:51 +00:00
|
|
|
|
<para>This uses the KVM hypervisor to start up a virtual machine with the libvirt name of
|
2013-09-07 04:40:23 +00:00
|
|
|
|
<literal>centos-6.4</literal> with 1024MB of RAM, with a virtual CD-ROM drive
|
2013-04-06 21:04:51 +00:00
|
|
|
|
associated with the <filename>/data/CentOS-6.4-x86_64-netinstall.iso</filename> file,
|
|
|
|
|
and a local hard disk which is stored in the host at
|
|
|
|
|
<filename>/data/centos-6.4.qcow2</filename> that is 10GB in size in qcow2 format. 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 (<literal>--no-autoconsole</literal>).
|
|
|
|
|
Finally, libvirt will attempt to optimize the configuration for a Linux guest running a
|
|
|
|
|
RHEL 6.x distribution.<note>
|
|
|
|
|
<para>When using the libvirt <literal>default</literal> network, libvirt will
|
|
|
|
|
connect the virtual machine's interface to a bridge called
|
|
|
|
|
<literal>virbr0</literal>. 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.</para>
|
|
|
|
|
</note></para>
|
2013-09-07 04:40:23 +00:00
|
|
|
|
<para>Run the <command>virt-install --os-variant list</command> command to see a range of allowed
|
2013-04-06 21:04:51 +00:00
|
|
|
|
<literal>--os-variant</literal> options.</para>
|
|
|
|
|
<para>Use the <command>virsh vncdisplay <replaceable>vm-name</replaceable></command> command
|
|
|
|
|
to get the VNC port
|
2013-09-07 04:40:23 +00:00
|
|
|
|
number.</para><screen><prompt>#</prompt> <userinput>virsh vncdisplay centos-6.4</userinput>
|
|
|
|
|
<computeroutput>:1</computeroutput></screen>
|
2013-04-06 21:04:51 +00:00
|
|
|
|
<para>In the example above, the guest <literal>centos-6.4</literal> uses VNC display
|
|
|
|
|
<literal>:1</literal>, which corresponds to tcp port <literal>5901</literal>. You
|
|
|
|
|
should be able to connect to a VNC client running on your local machine to display :1 on
|
|
|
|
|
the remote machine and step through the installation process.</para>
|
|
|
|
|
</section>
|
2013-09-07 04:40:23 +00:00
|
|
|
|
<xi:include href="section_centos-example.xml"/>
|
|
|
|
|
<xi:include href="section_ubuntu-example.xml"/>
|
|
|
|
|
<xi:include href="section_windows-example.xml"/>
|
2013-04-06 21:04:51 +00:00
|
|
|
|
</chapter>
|