diff --git a/docs/qig/en-US/Author_Group.xml b/docs/qig/en-US/Author_Group.xml new file mode 100644 index 00000000000..432ef6fd3ac --- /dev/null +++ b/docs/qig/en-US/Author_Group.xml @@ -0,0 +1,32 @@ + + +%BOOK_ENTITIES; +]> + + + + + + + Apache + CloudStack + + + diff --git a/docs/qig/en-US/Book_Info.xml b/docs/qig/en-US/Book_Info.xml new file mode 100644 index 00000000000..e356de4415a --- /dev/null +++ b/docs/qig/en-US/Book_Info.xml @@ -0,0 +1,52 @@ + + +%BOOK_ENTITIES; +]> + + + + + + Quick Install Guide + Prescriptive instructions for deploying Apache CloudStack + Apache CloudStack + 4.0.2 + 0 + 0 + + + This guide is designed to provide a strict environment to guarantee + a higher degree of success in initial deployments of Apache CloudStack. + All of the elements of the environment will be provided to you. + Apache CloudStack is capable of much more complex configurations, + but they are beyond the scope of this document. + + + + + + + + + + + + + diff --git a/docs/qig/en-US/Chapter.xml b/docs/qig/en-US/Chapter.xml new file mode 100644 index 00000000000..4adf63c207a --- /dev/null +++ b/docs/qig/en-US/Chapter.xml @@ -0,0 +1,53 @@ + + +%BOOK_ENTITIES; +]> + + + + + + Test Chapter + + This is a test paragraph + +
+ Test Section 1 + + This is a test paragraph in a section + +
+ +
+ Test Section 2 + + This is a test paragraph in Section 2 + + + + listitem text + + + + +
+ +
+ diff --git a/docs/qig/en-US/Environment.xml b/docs/qig/en-US/Environment.xml new file mode 100644 index 00000000000..e48b4051bc3 --- /dev/null +++ b/docs/qig/en-US/Environment.xml @@ -0,0 +1,258 @@ + + +%BOOK_ENTITIES; +]> + + + + + + Environment + + Before you begin, you need to prepare the environment before you install CloudStack. + We will go over the steps to prepare now. + +
+ Operating System + + Using the CentOS 6.4 x86_64 minimal install ISO, you'll need to install CentOS + on your hardware. The defaults will generally be acceptable for this installation. + + + Once this installation is complete, you'll want to connect to your freshly + installed machine via SSH as the root user. Note that you should not allow root + logins in a production environment, so be sure to turn off remote logins once you + have finished the installation and configuration. + +
+ Configuring the network + + By default the network will not come up on your hardware and you + will need to configure it to work in your environment. Since we + specified that there will be no DHCP server in this environment + we will be manually configuring your network interface. We will + assume, for the purposes of this exercise, that eth0 is the only network + interface that will be connected and used. + + + Connecting via the console you should login as root. Check the + file /etc/sysconfig/network-scripts/ifcfg-eth0, + it will look like this by default: + +DEVICE="eth0" +HWADDR="52:54:00:B9:A6:C0" +NM_CONTROLLED="yes" +ONBOOT="no" + + + + Unfortunately, this configuration will not permit you to connect to the network, + and is also unsuitable for our purposes with CloudStack. We want to + configure that file so that it specifies the IP address, netmask, etc., as shown + in the following example: + + + Hardware Addresses + You should not use the hardware address (aka MAC address) from our example + for your configuration. It is network interface specific, so you should keep the + address already provided in the HWADDR directive. + + + +DEVICE=eth0 +HWADDR=52:54:00:B9:A6:C0 +NM_CONTROLLED=no +ONBOOT=yes +BOOTPROTO=none +IPADDR=172.16.10.2 +NETMASK=255.255.255.0 +GATEWAY=172.16.10.1 +DNS1=8.8.8.8 +DNS2=8.8.4.4 + + + IP Addressing + Throughout this document we are assuming that you will + have a /24 network for your CloudStack implementation. This can be any + RFC 1918 network. However, we are assuming that you will match the + machine address that we are using. Thus we may use + 172.16.10.2 and because + you might be using the 192.168.55.0/24 network you would use + 192.168.55.2 + + + Now that we have the configuration files properly set up, we need to run a + few commands to start up the network + # chkconfig network on + # service network start +
+
+ Hostname + + Cloudstack requires that the hostname be properly set. If you used the default + options in the installation, then your hostname is currently set to + localhost.localdomain. To test this we will run: + # hostname --fqdn + At this point it will likely return: + localhost + To rectify this situation - we'll set the hostname by editing the + /etc/hosts file so that it follows a similar format to this example: +127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 +::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 +172.16.10.2 srvr1.cloud.priv + + + After you've modified that file, go ahead and restart the network using: +# service network restart + Now recheck with the hostname --fqdn command and ensure that it returns + a FQDN response +
+
+ SELinux + At the moment, for CloudStack to work properly SELinux must be + set to permissive. We want to both configure this for future boots and modify it + in the current running system. + + To configure SELinux to be permissive in the running system we need to run + the following command: + # setenforce 0 + + To ensure that it remains in that state we need to configure the file + /etc/selinux/config to reflect the permissive state, + as shown in this example: + + +# This file controls the state of SELinux on the system. +# SELINUX= can take one of these three values: +# enforcing - SELinux security policy is enforced. +# permissive - SELinux prints warnings instead of enforcing. +# disabled - No SELinux policy is loaded. +SELINUX=permissive +# SELINUXTYPE= can take one of these two values: +# targeted - Targeted processes are protected, +# mls - Multi Level Security protection. +SELINUXTYPE=targeted + + +
+
+ NTP + NTP configuration is a necessity for keeping all of the clocks in your cloud + servers in sync. However, NTP is not installed by default. So we'll install and + and configure NTP at this stage. Installation is accomplished as follows: + + # yum -y install ntp + The actual default configuration is fine for our purposes, so we merely need to + enable it and set it to start on boot as follows: + # chkconfig ntpd on + # service ntpd start +
+
+ Configuring the CloudStack Package Repository + + We need to configure the machine to use a CloudStack package repository. + + The below repository is not an official Apache CloudStack project repository + + The Apache CloudStack official releases are source code. As such there are no + 'official' binaries available. The full installation guide describes how to take + the source release and generate RPMs and and yum repository. This guide attempts + to keep things as simple as possible, and thus we are using one of the + community-provided yum repositories. + + + + To add the CloudStack repository, create /etc/yum.repos.d/cloudstack.repo and insert the following information. + +[cloudstack] +name=cloudstack +baseurl=http://cloudstack.apt-get.eu/rhel/4.1/ +enabled=1 +gpgcheck=0 + +
+
+
+ NFS + + Our configuration is going to use NFS for both primary and secondary + storage. We are going to go ahead and setup two NFS shares for those + purposes. We'll start out by installing + nfs-utils. + + # yum install nfs-utils + + We now need to configure NFS to serve up two different shares. This is handled comparatively easily + in the /etc/exports file. You should ensure that it has the following content: + + +/secondary *(rw,async,no_root_squash) +/primary *(rw,async,no_root_squash) + + + You will note that we specified two directories that don't exist (yet) on the system. + We'll go ahead and create those directories and set permissions appropriately on them with the following commands: + + +# mkdir /primary +# mkdir /secondary + + CentOS 6.x releases use NFSv4 by default. NFSv4 requires that domain setting matches on all clients. + In our case, the domain is cloud.priv, so ensure that the domain setting in /etc/idmapd.conf + is uncommented and set as follows: + Domain = cloud.priv + Now you'll need uncomment the configuration values in the file /etc/sysconfig/nfs + +LOCKD_TCPPORT=32803 +LOCKD_UDPPORT=32769 +MOUNTD_PORT=892 +RQUOTAD_PORT=875 +STATD_PORT=662 +STATD_OUTGOING_PORT=2020 + + Now we need to configure the firewall to permit incoming NFS connections. + Edit the file /etc/sysconfig/iptables + + +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT +-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT + + Now you can restart the iptables service with the following command: + + # service iptables restart + We now need to configure nfs service to start on boot and actually start it on the host by + executing the following commands: + +# service rpcbind start +# service nfs start +# chkconfig rpcbind on +# chkconfig nfs on + +
+
diff --git a/docs/qig/en-US/Management.xml b/docs/qig/en-US/Management.xml new file mode 100644 index 00000000000..8c6040ffa2b --- /dev/null +++ b/docs/qig/en-US/Management.xml @@ -0,0 +1,99 @@ + + +%BOOK_ENTITIES; +]> + + + + + + Installation of the management server + + Now it is time to start installing CloudStack's management server + and some of the related components. + +
+ Database Installation and Configuration + + We'll start out by installing MySQL and configuring + some options to ensure CloudStack runs well. + + + To install MySQL run the following command: + # yum -y install mysql-server + + With MySQL installed we need to make + a few configuration changes to /etc/my.cnf. + Specifically we need to add the following options to the [mysqld] section: + +innodb_rollback_on_timeout=1 +innodb_lock_wait_timeout=600 +max_connections=350 +log-bin=mysql-bin +binlog-format = 'ROW' + + + + Now that MySQL is properly configured we can + start it and configure it to start on boot as follows: + +# service mysqld start +# chkconfig mysqld on + + + +
+ +
+ Installation + We are now going to install the management server. We do that by executing the following command: + # yum -y install cloud-client + + With the application itself installed we can now setup the database, we'll do that with the following command + and options: + + # cloudstack-setup-databases cloud:password@localhost --deploy-as=root + When this process is finished, you should see a message like "CloudStack has successfully initialized the database." + + Now that the database has been created, we can take the final step in setting up the management server by issuing the following command: + # cloudstack-setup-management +
+
+ System Template Setup + CloudStack uses a number of system VMs to provide functionality for + accessing the console of virtual machines, providing various networking + services, and managing various aspects of storage. This step will + acquire those system images ready for deployment when we bootstrap + your cloud. + + + Now we need to download the system VM template and deploy that to the + share we just mounted. The management server includes a script to properly + manipulate the system VMs images. + + # /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F + + + That concludes our setup of the management server. We still need to + configure CloudStack, but we will do that after we get our hypervisor + set up. + +
+
diff --git a/docs/qig/en-US/Overview.xml b/docs/qig/en-US/Overview.xml new file mode 100644 index 00000000000..31915f54475 --- /dev/null +++ b/docs/qig/en-US/Overview.xml @@ -0,0 +1,93 @@ + + +%BOOK_ENTITIES; +]> + + + + + + Overview + + Infrastructure-as-a-Service (IaaS) clouds can be a complex thing to build, + and by definition they have a plethora of options, which often lead to confusion + for even experienced admins who are newcomers to building cloud platforms. + The goal for this runbook is to provide a straightforward set of instructions + to get you up and running with CloudStack with a minimum amount of trouble. + +
+ What exactly are we building? + + This runbook will focus on building a CloudStack cloud using KVM with + CentOS 6.4 with NFS storage on a flat layer-2 network utilizing + layer-3 network isolation (aka Security Groups), and doing it all + on a single piece of hardware. + + + KVM, or Kernel-based Virtual Machine is a virtualization technology + for the Linux kernel. KVM supports native virtualization atop + processors with hardware virtualization extensions. + + + Security Groups act as distributed firewalls that control access + to a group of virtual machines. + +
+
+ High level overview of the process + + Before we actually get to installing CloudStack, we'll start with + installing our base operating system, and then configuring that to act + as an NFS server for several types of storage. We'll install the + management server, download the systemVMs, and finally install the agent + software. Finally we'll spend a good deal of time configuring the entire + cloud in the CloudStack web interface. + +
+
+ Prerequisites + + To complete this runbook you'll need the following items: + + + + At least one computer which supports hardware virtualization. + + + + + The + + CentOS 6.4 x86_64 minimal install CD + + + + + + A /24 network with the gateway being at xxx.xxx.xxx.1, no DHCP should be on this network and + none of the computers running CloudStack will have a dynamic address. Again this is done for + the sake of simplicity. + + + + +
+ +
diff --git a/docs/qig/en-US/Preface.xml b/docs/qig/en-US/Preface.xml new file mode 100644 index 00000000000..d6ba80edb6d --- /dev/null +++ b/docs/qig/en-US/Preface.xml @@ -0,0 +1,33 @@ + + +%BOOK_ENTITIES; +]> + + + + + + Preface + + + + + + diff --git a/docs/qig/en-US/Revision_History.xml b/docs/qig/en-US/Revision_History.xml new file mode 100644 index 00000000000..1ff4d772adc --- /dev/null +++ b/docs/qig/en-US/Revision_History.xml @@ -0,0 +1,42 @@ + + +%BOOK_ENTITIES; +]> + + + + + + Revision History + + + + 0-0 + Fri Jun 28 2013 + + + Initial creation of book by publican + + + + + + + diff --git a/docs/qig/en-US/config.xml b/docs/qig/en-US/config.xml new file mode 100644 index 00000000000..7ff7a72f613 --- /dev/null +++ b/docs/qig/en-US/config.xml @@ -0,0 +1,177 @@ + + +%BOOK_ENTITIES; +]> + + + + + + Configuration + + As we noted before we will be using security groups to provide isolation + and by default that implies that we'll be using a flat layer-2 network. + It also means that the simplicity of our setup means that we can use the + quick installer. + +
+ UI Access + + To get access to CloudStack's web interface, merely point your + browser to http://172.16.10.2:8080/client + The default username is 'admin', and the default password is 'password'. + You should see a splash screen that allows you to choose several options + for setting up CloudStack. You should choose the + option. + + + You should now see a prompt requiring you to change the password for + the admin user. Please do so. + +
+
+ Setting up a Zone + + A zone is the largest organization entity in CloudStack - and we'll be creating one, this + should be the screen that you see in front of you now. And for us there are 5 pieces of + information that we need. + + + Name - we will set this to the ever-descriptive 'Zone1' for our cloud. + + + Public DNS 1 - we will set this to '8.8.8.8' for our cloud. + + + Public DNS 2 - we will set this to '8.8.4.4' for our cloud. + + + Internal DNS1 - we will also set this to '8.8.8.8' for our cloud. + + + Internal DNS2 - we will also set this to '8.8.8.4' for our cloud. + + + + + Notes about DNS settings + + CloudStack distinguishes between internal and public DNS. Internal + DNS is assumed to be capable of resolving internal-only + hostnames, such as your NFS server’s DNS name. Public DNS is + provided to the guest VMs to resolve public IP addresses. You can + enter the same DNS server for both types, but if you do so, you + must make sure that both internal and public IP addresses can + route to the DNS server. In our specific case we will not use any + names for resources internally, and we have indeed them set to look + to the same external resource so as to not add a namerserver setup + to our list of requirements. + + +
+
+ Pod Configuration + Now that we've added a Zone, the next step that comes up is a prompt + for information regading a pod. Which is looking for 4 items. + + + Name - We'll use Pod1 for our cloud. + + + Gateway - We'll use 172.16.10.1 as our gateway + + + Netmask - We'll use 255.255.255.0 + + + Start/end reserved system IPs - we will use 172.16.10.10-172.16.10.20 + + + Guest gateway - We'll use 172.16.10.1 + + + Guest netmask - We'll use 255.255.255.0 + + + Guest start/end IP - We'll use 172.16.10.30-172.16.10.200 + + + +
+
+ Cluster + Now that we've added a Zone, we need only add a few more items for configuring the cluster. + + + Name - We'll use Cluster1 + + + Hypervisor - Choose KVM + + + + You should be prompted to add the first host to your cluster at this point. Only a few bits of information are needed. + + + Hostname - we'll use the IP address 172.16.10.2 since we didn't set up a DNS server. + + + Username - we'll use 'root' + + + Password - enter the operating system password for the root user + + + +
+ Primary Storage + With your cluster now setup - you should be prompted for primary storage information. Choose NFS as the storage type and then enter the following values in the fields: + + + Name - We'll use 'Primary1' + + + Server - We'll be using the IP address 172.16.10.2 + + + Path - Well define /primary as the path we are using + + + +
+
+ Secondary Storage + If this is a new zone, you'll be prompted for secondary storage information - populate it as follows: + + + NFS server - We'll use the IP address 172.16.10.2 + + + Path - We'll use /secondary + + + + Now, click Launch and your cloud should begin setup - it may take several minutes depending on your internet connection speed for setup to finalize. +
+
+ + +
+ diff --git a/docs/qig/en-US/kvm.xml b/docs/qig/en-US/kvm.xml new file mode 100644 index 00000000000..91ed9d5cee9 --- /dev/null +++ b/docs/qig/en-US/kvm.xml @@ -0,0 +1,142 @@ + + +%BOOK_ENTITIES; +]> + + + + + + KVM Setup and installation + + KVM is the hypervisor we'll be using - we will recover the initial setup + which has already been done on the hypervisor host and cover installation + of the agent software, you can use the same steps to add additional KVM + nodes to your CloudStack environment. + +
+ Prerequisites + + We explicitly are using the management server as a compute node as well, + which means that we have already performed many of the prerequisite steps + when setting up the management server, but we will list them here for + clarity. Those steps are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + You shouldn't need to do that for the management server, of course, but + any additional hosts will need for you to complete the above steps. + +
+ +
+ Installation + Installation of the KVM agent is trivial with just a single command, but afterwards we'll need to configure a few things. + # yum -y install cloud-agent +
+ KVM Configuration + We have two different parts of KVM to configure, libvirt, and QEMU. +
+ QEMU Configuration + + KVM configuration is relatively simple at only a single item. We need to + edit the QEMU VNC configuration. This is done by editing + /etc/libvirt/qemu.conf and ensuring the following + line is present and uncommented. + vnc_listen=0.0.0.0 + +
+
+ Libvirt Configuration + + CloudStack uses libvirt for managing virtual machines. Therefore it + is vital that libvirt is configured correctly. Libvirt is a dependency + of cloud-agent and should already be installed. + + + + In order to have live migration working libvirt has to listen + for unsecured TCP connections. We also need to turn off libvirts + attempt to use Multicast DNS advertising. Both of these settings + are in /etc/libvirt/libvirtd.conf + + Set the following paramaters: + listen_tls = 0 + listen_tcp = 1 + tcp_port = "16059" + auth_tcp = "none" + mdns_adv = 0 + + + Turning on "listen_tcp" in libvirtd.conf is not enough, we have to change the parameters as well: + On RHEL or CentOS modify /etc/sysconfig/libvirtd: + Uncomment the following line: + #LIBVIRTD_ARGS="--listen" + On Ubuntu: modify /etc/init/libvirt-bin.conf + Change the following line (at the end of the file): + exec /usr/sbin/libvirtd -d + to (just add -l) + exec /usr/sbin/libvirtd -d -l + + + Restart libvirt + In RHEL or CentOS: + $ service libvirtd restart + In Ubuntu: + $ service libvirt-bin restart + + +
+
+ KVM configuration complete + + That concludes our installation and configuration of KVM, and we'll now move to using the CloudStack UI + for the actual configuration of our cloud. + +
+
+
+
diff --git a/docs/qig/en-US/qig.ent b/docs/qig/en-US/qig.ent new file mode 100644 index 00000000000..3b1649a2ba9 --- /dev/null +++ b/docs/qig/en-US/qig.ent @@ -0,0 +1,22 @@ + + + + + + diff --git a/docs/qig/en-US/qig.xml b/docs/qig/en-US/qig.xml new file mode 100644 index 00000000000..00dd2e4a1f0 --- /dev/null +++ b/docs/qig/en-US/qig.xml @@ -0,0 +1,36 @@ + + +%BOOK_ENTITIES; +]> + + + + + + + + + + + + + + +