<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>

<!-- Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<section id="initialize-and-test">
	<title>Initialize and Test</title>
    <para>After everything is configured, &PRODUCT; will perform its initialization. This can take 30 minutes or more, depending on the speed of your network. When the initialization has completed successfully, the administrator's Dashboard should be displayed in the &PRODUCT; UI.</para>
   
    <orderedlist>
   	
        <listitem><para>Verify that the system is ready. In the left navigation bar, select Templates. Click on the CentOS 5.5 (64bit) no Gui (KVM) template. Check to be sure that the status is "Download Complete." Do not proceed to the next step until this status is displayed.</para></listitem>
        	
        <listitem><para>Go to the Instances tab, and filter by My Instances.</para></listitem>
        	
        <listitem><para>Click Add Instance and follow the steps in the wizard.</para>
        	
            <orderedlist numeration="loweralpha">
        	
               <listitem><para>Choose the zone you just added.</para></listitem>
        	
                <listitem><para>In the template selection, choose the template to use in the VM. If this is a fresh installation, likely only the provided CentOS template is available.</para></listitem>
        	
                <listitem><para>Select a service offering.  Be sure that the hardware you have allows starting the selected service offering.</para></listitem>
        
                <listitem><para>In data disk offering, if desired, add another data disk. This is a second volume that will be available to but not mounted in the guest.  For example, in Linux on XenServer you will see /dev/xvdb in the guest after rebooting the VM. A reboot is not required if you have a PV-enabled OS kernel in use.</para></listitem>
        	
                <listitem><para>In default network, choose the primary network for the guest.  In a trial installation, you would have only one option here.</para></listitem>
                        <listitem><para>Optionally give your VM a name and a group.  Use any descriptive text you would like.</para></listitem>
        	
               <listitem><para>Click Launch VM. Your VM will be created and started. It might take some time to download the template and complete the VM startup. You can watch the VMâ€™s progress in the Instances screen.</para></listitem>
        
            </orderedlist>
        
        </listitem>
        	
        <listitem>
        	
            <para>To use the VM, click the View Console button.
        	
                <inlinemediaobject>
        
                    <imageobject><imagedata fileref="./images/console-icon.png" /></imageobject>
        
                    <textobject><phrase>ConsoleButton.png: button to launch a console</phrase></textobject>
        	
                </inlinemediaobject>
        	
            </para>
        
            <para>For more information about using VMs, including instructions for how to allow incoming network traffic to the VM, start, stop, and delete VMs, and move a VM from one host to another, see Working With Virtual Machines in the Administratorâ€™s Guide.</para>
                </listitem>
        	
    </orderedlist>
   
    <para>Congratulations! You have successfully completed a &PRODUCT; Installation.</para>
   	
    <para>If you decide to grow your deployment, you can add more hosts, primary storage, zones, pods, and clusters.</para>
</section>
