openstack-manuals/doc/image-guide/ch_creating_images_automatically.xml
Diane Fleming 64b6c9261e Folder rename, file rename, flattening of directories
Current folder name	New folder name	        Book title
----------------------------------------------------------
basic-install 	        DELETE
cli-guide	        DELETE
common	                common
NEW	                admin-guide-cloud	Cloud Administrators Guide
docbkx-example	        DELETE
openstack-block-storage-admin 	DELETE
openstack-compute-admin 	DELETE
openstack-config 	config-reference	OpenStack Configuration Reference
openstack-ha 	        high-availability-guide	OpenStack High Availabilty Guide
openstack-image	        image-guide	OpenStack Virtual Machine Image Guide
openstack-install 	install-guide	OpenStack Installation Guide
openstack-network-connectivity-admin 	admin-guide-network 	OpenStack Networking Administration Guide
openstack-object-storage-admin 	DELETE
openstack-security 	security-guide	OpenStack Security Guide
openstack-training 	training-guide	OpenStack Training Guide
openstack-user 	        user-guide	OpenStack End User Guide
openstack-user-admin 	user-guide-admin	OpenStack Admin User Guide
glossary	        NEW        	OpenStack Glossary

bug: #1220407

Change-Id: Id5ffc774b966ba7b9a591743a877aa10ab3094c7
author: diane fleming
2013-09-08 15:15:50 -07:00

169 lines
8.4 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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_automatically">
<title>Tool support for image creation</title>
<?dbhtml stop-chunking?>
<para>There are several tools that are designed to automate image
creation.</para>
<section xml:id="oz">
<title>Oz</title>
<para><link
xlink:href="https://github.com/clalancette/oz/wiki"
>Oz</link> 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 call also be using to create
Microsoft Windows images. On Fedora, install Oz with yum:<screen><prompt>#</prompt> <userinput>yum install oz</userinput></screen><note>
<para>As of this writing, there are no Oz packages for
Ubuntu, so you will need to either install from
source or build your own .deb file.</para>
</note></para>
<para>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
<link
xlink:href="https://github.com/rackerjoe/oz-image-build/tree/master/templates"
>rackerjoe/oz-image-build/templates</link>. Here's how
you would create a CentOS 6.4 image with Oz.</para>
<para>Create a template file (we'll call it
<filename>centos64.tdl</filename>) with the following
contents. The only entry you will need to change is the
<literal>&lt;rootpw></literal>
contents.<programlisting language="xml">&lt;template>
&lt;name>centos64&lt;/name>
&lt;os>
&lt;name>CentOS-6&lt;/name>
&lt;version>4&lt;/version>
&lt;arch>x86_64&lt;/arch>
&lt;install type='iso'>
&lt;iso>http://mirror.rackspace.com/CentOS/6/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso&lt;/iso>
&lt;/install>
&lt;rootpw>CHANGE THIS TO YOUR ROOT PASSWORD&lt;/rootpw>
&lt;/os>
&lt;description>CentOS 6.4 x86_64&lt;/description>
&lt;repositories>
&lt;repository name='epel-6'>
&lt;url>http://download.fedoraproject.org/pub/epel/6/$basearch&lt;/url>
&lt;signed>no&lt;/signed>
&lt;/repository>
&lt;/repositories>
&lt;packages>
&lt;package name='epel-release'/>
&lt;package name='cloud-utils'/>
&lt;package name='cloud-init'/>
&lt;/packages>
&lt;commands>
&lt;command name='update'>
yum 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
&lt;/command>
&lt;/commands>
&lt;/template></programlisting>
</para>
<para>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 <link
xlink:href="https://github.com/clalancette/oz/blob/master/oz/auto/RHEL6.auto"
>RHEL6.auto</link>. It adds EPEL as a repository and
install the <literal>epel-release</literal>,
<literal>cloud-utils</literal>, and
<literal>cloud-init</literal> packages, as specified
in the <literal>packages</literal> section of the
file.</para>
<para>After Oz does the initial OS install using the kickstart
file, it will customize the image by doing an update and
removing any reference to the eth0 device that libvirt
creates while Oz was doing the customizing, as specified
in the <literal>command</literal> section of the XML
file.</para>
<para>To run this, do, as root:</para>
<para><screen><prompt>#</prompt> <userinput>oz-install -d3 -u centos64.tdl -x centos64-libvirt.xml</userinput></screen><itemizedlist>
<listitem>
<para>The <literal>-d3</literal> flag tells Oz to
show status information as it runs.</para>
</listitem>
<listitem>
<para>The <literal>-u</literal> tells Oz to do the
customization (install extra packages, run the
commands) once it does the initial
install.</para>
</listitem>
<listitem>
<para>The <literal>-x &lt;filename></literal> flag
tells Oz what filename to use to write out a
libvirt XML file (otherwise it will default to
something like
<filename>centos64Apr_03_2013-12:39:42</filename>.</para>
</listitem>
</itemizedlist>If you leave out the <literal>-u</literal>
flag, or you want to edit the file to do additional
customizations, you can use the
<command>oz-customize</command> command, using the
libvirt XML file that <command>oz-install</command>
creates. For example:
<screen><prompt>#</prompt> <userinput>oz-customize -d3 centos64.tdl centos64-libvirt.xml</userinput></screen>
Oz will invoke libvirt to boot the image inside of KVM,
then Oz will ssh into the instance and perform the
customizations.</para>
</section>
<section xml:id="vmbuilder">
<title>VMBuilder</title>
<para><link xlink:href="https://launchpad.net/vmbuilder"
>VMBuilder</link> (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.</para>
<para>The <link
xlink:href="https://help.ubuntu.com/12.04/serverguide/jeos-and-vmbuilder.html"
><citetitle>Ubuntu Server Guide</citetitle></link>
has documentation on how to use VMBuilder to create an
Ubuntu image.</para>
</section>
<section xml:id="boxgrinder">
<title>BoxGrinder</title>
<para>
<link xlink:href="http://boxgrinder.org/"
>BoxGrinder</link>  is another tool for creating
virtual machine images, which it calls appliances.
BoxGrinder can create Fedora, Red Hat Enterprise Linux, or
CentOS images. BoxGrinder is currently only supported on
Fedora.</para>
</section>
<section xml:id="veewee">
<title>VeeWee</title>
<para><link xlink:href="https://github.com/jedi4ever/veewee">
VeeWee</link> is often used to build <link
xlink:href="http://vagrantup.com">Vagrant</link>
boxes, but it can also be used to build KVM images.</para>
</section>
<section xml:id="imagefactory">
<title>imagefactory</title>
<para><link xlink:href="http://imgfac.org/"
>imagefactory</link> 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.</para>
</section>
<section xml:id="susestudio">
<title>SUSE Studio</title>
<para><link xlink:href="http://susestudio.com">SUSE
Studio</link> 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.</para>
</section>
</chapter>