| .. 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. |
| |
| |
| Quick Installation Guide |
| ======================== |
| |
| Overview |
| -------- |
| |
| What exactly are we building? |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| 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. |
| |
| |
| .. warning:: |
| This guide is meant to be used to build CloudStack test/demo cloud only, |
| as certain networking choices have been made to get you up and running with |
| minimal amount of time. This guide can NOT be used for production setup. |
| |
| .. warning:: |
| In case you don't have physical server to "play with", you can use e.g. Oracle VirtualBox 6.1+. |
| The requirement is that you enable "Enable Nested VT-x/AMD-V" as the Extended Feature on the System page of the Settings of the VM. |
| You will want to create a VM of "Red Hat (64-bit)" type and 40+GB disk space. |
| You will need to have 1 NIC in your VM, bridged to the NIC of your laptop/desktop |
| (wifi or wired NIC, doesn't matter), and optimally to set Adapter Type="Paravirtualized Network (virtio-net)" |
| for somewhat better network performance (Settings of VM, Network section, Adapter1, |
| expand "Advanced"). Make sure the NIC on your VM is configured as promiscuous (in VirtualBox, |
| choose "Allow All" or just "Allow VMs" as the Promiscuous Mode), so that it can pass traffic from |
| CloudStack's system VMs to the gateway. Also, make sure you have allowed enough ram (6G+) and |
| enough CPU cores (3+) for demo purposes. |
| |
| |
| High level overview of the process |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| This guide will focus on building a CloudStack cloud using KVM on CentOS |
| 7.9 with NFS storage and layer-2 isolation using VLANs, |
| (flat home network can be used for this as well) and on a single piece of |
| hardware (server/VM) |
| |
| KVM, or Kernel-based Virtual Machine is a virtualization technology for the |
| Linux kernel. KVM supports native virtualization atop processors with hardware |
| virtualization extensions. |
| |
| |
| Prerequisites |
| ~~~~~~~~~~~~~ |
| |
| To complete this guide you'll need the following items: |
| |
| #. At least one computer which supports and has enabled hardware virtualization. |
| |
| #. An `CentOS 7.9 minimal x86_64 install ISO, on bootable media |
| <http://isoredirect.centos.org/centos/7/isos/x86_64/>`_ |
| |
| #. A /24 network with the gateway being at (e.g.) xxx.xxx.xxx.1, no DHCP is needed |
| on this network and none of the computers running CloudStack will have a |
| dynamic address. Again this is done for the sake of simplicity. |
| |
| |
| 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 7.9.2009 minmal x86_64 install ISO, you'll need to install |
| CentOS 7 on your hardware. The defaults will generally be acceptable for this |
| installation - but make sure to configure IP address/parameters so that you can later install needed |
| packages from internet. Later, we will change the network configuration as needed. |
| |
| Once this installation is complete, you'll want to gain access to your |
| server - through SSH. |
| |
| It is always wise to update the system before starting: |
| |
| .. parsed-literal:: |
| # yum -y upgrade |
| |
| |
| .. _conf-network: |
| |
| Configuring the network |
| ^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| Before going any further, make sure that "bridge-utils" and "net-tools" are installed and available: |
| |
| .. parsed-literal:: |
| # yum install bridge-utils net-tools -y |
| |
| Connecting via the console or SSH, you should login as root. We will start by creating |
| the bridge that Cloudstack will use for networking. Create and open |
| /etc/sysconfig/network-scripts/ifcfg-cloudbr0 and add the following settings: |
| |
| .. note:: |
| 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 e.g. 192.168.55.0/24 network you would use 192.168.55.2. Another example |
| would be if you are using i.e. VirtualBox on your local home network on 192.168.1.0/24 network - |
| in this case you can use a single free IP address from your home range (VirtualBox NIC for this VM |
| should be in bridged mode for correct functioning) |
| |
| :: |
| |
| DEVICE=cloudbr0 |
| TYPE=Bridge |
| ONBOOT=yes |
| BOOTPROTO=static |
| IPV6INIT=no |
| IPV6_AUTOCONF=no |
| DELAY=5 |
| IPADDR=172.16.10.2 #(or e.g. 192.168.1.2) |
| GATEWAY=172.16.10.1 #(or e.g. 192.168.1.1 - this would be your physical/home router) |
| NETMASK=255.255.255.0 |
| DNS1=8.8.8.8 |
| DNS2=8.8.4.4 |
| STP=yes |
| USERCTL=no |
| NM_CONTROLLED=no |
| |
| Save the configuration and exit. We will then edit the NIC so that it |
| makes use of this bridge. |
| |
| Open the configuration file of your NIC (e.g. /etc/sysconfig/network-scripts/ifcfg-eth0) |
| and edit it as follows: |
| |
| .. note:: |
| Interface name (eth0) used as example only. Replace eth0 with your default ethernet interface name. |
| |
| .. parsed-literal:: |
| TYPE=Ethernet |
| BOOTPROTO=none |
| DEFROUTE=yes |
| NAME=eth0 |
| DEVICE=eth0 |
| ONBOOT=yes |
| BRIDGE=cloudbr0 |
| |
| .. note:: |
| If your physical nic (eth0 in the case of our example) has already been |
| setup before following this guide, make sure that there is no duplication |
| between IP configuration of /etc/config/network-scripts/ifcfg-cloudbr0 and |
| /etc/sysconfig/network-scripts/ifcfg-eth0 which will cause a failure that |
| would prevent the network from starting. Basically, IP configuration |
| of eth0 should be moved to the bridge and eth0 will be added to the bridge. |
| |
| |
| Now that we have the configuration files properly set up, we need to run a few |
| commands to start up the network: |
| |
| .. parsed-literal:: |
| |
| # systemctl disable NetworkManager; systemctl stop NetworkManager |
| # systemctl enable network |
| # reboot |
| |
| .. _conf-hostname: |
| |
| Hostname |
| ^^^^^^^^ |
| |
| CloudStack requires that the hostname is 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: |
| |
| .. parsed-literal:: |
| |
| # hostname --fqdn |
| |
| At this point it will likely return: |
| |
| .. parsed-literal:: |
| |
| 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 (remember to replace |
| the IP with your IP which might be e.g. 192.168.1.2): |
| |
| .. parsed-literal:: |
| |
| 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: |
| |
| .. parsed-literal:: |
| |
| # systemctl restart network |
| |
| Now recheck with the |
| |
| .. parsed-literal:: |
| |
| # hostname --fqdn |
| |
| and ensure that it returns a FQDN response |
| |
| |
| .. _conf-selinux: |
| |
| SELinux |
| ^^^^^^^ |
| |
| At the moment, for CloudStack to work properly SELinux must be set to |
| permissive or disabled. 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: |
| |
| .. parsed-literal:: |
| |
| # 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: |
| |
| .. parsed-literal:: |
| |
| # 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 |
| |
| |
| .. _conf-ntp: |
| |
| 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: |
| |
| .. parsed-literal:: |
| |
| # 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: |
| |
| .. parsed-literal:: |
| |
| # systemctl enable ntpd |
| # systemctl start ntpd |
| |
| |
| .. _qigconf-pkg-repo: |
| |
| Configuring the CloudStack Package Repository |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| We need to configure the machine to use a CloudStack package repository. |
| |
| .. note:: |
| 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. Furthermore, this example |
| assumes a |release| Cloudstack install - substitute versions as needed. |
| |
| To add the CloudStack repository, create /etc/yum.repos.d/cloudstack.repo and |
| insert the following information. |
| |
| .. parsed-literal:: |
| |
| [cloudstack] |
| name=cloudstack |
| baseurl=http://download.cloudstack.org/centos/$releasever/|version|/ |
| 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. |
| |
| .. parsed-literal:: |
| |
| # yum -y install nfs-utils |
| |
| We now need to configure NFS to serve up two different shares. This is handled |
| in the /etc/exports file. You should ensure that it has the following content: |
| |
| .. parsed-literal:: |
| |
| /export/secondary \*(rw,async,no_root_squash,no_subtree_check) |
| /export/primary \*(rw,async,no_root_squash,no_subtree_check) |
| |
| 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: |
| |
| .. parsed-literal:: |
| |
| # mkdir -p /export/primary |
| # mkdir /export/secondary |
| |
| CentOS 7.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: |
| |
| .. parsed-literal:: |
| Domain = cloud.priv |
| |
| Now you'll need to add the configuration values at the bottom in the file |
| /etc/sysconfig/nfs (or merely uncomment and set them) |
| |
| .. parsed-literal:: |
| |
| LOCKD_TCPPORT=32803 |
| LOCKD_UDPPORT=32769 |
| MOUNTD_PORT=892 |
| RQUOTAD_PORT=875 |
| STATD_PORT=662 |
| STATD_OUTGOING_PORT=2020 |
| |
| For simplicity, we need to disable the firewall, so that it will not block connections. |
| |
| .. note:: |
| |
| Configuration of the firewall on CentOS7 is beyond the purview of this |
| guide. |
| |
| To do so, simply use the following two commands: |
| |
| .. parsed-literal:: |
| |
| # systemctl stop firewalld |
| # systemctl disable firewalld |
| |
| We now need to configure the nfs service to start on boot and actually start |
| it on the host by executing the following commands: |
| |
| .. parsed-literal:: |
| |
| # systemctl enable rpcbind |
| # systemctl enable nfs |
| # systemctl start rpcbind |
| # systemctl start nfs |
| |
| |
| Management Server Installation |
| ------------------------------ |
| |
| We're going to install the CloudStack management server and surrounding tools. |
| |
| |
| Database Installation and Configuration |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| We'll start with installing MySQL and configuring some options to ensure it |
| runs well with CloudStack. |
| |
| First, as CentOS 7 no longer provides the MySQL binaries, we need to add a MySQL community repository, |
| that will provide MySQL Server (and the Python MySQL connector later) : |
| |
| .. parsed-literal:: |
| # yum -y install wget |
| # wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm |
| # rpm -ivh mysql-community-release-el7-5.noarch.rpm |
| |
| Install by running the following command: |
| |
| .. parsed-literal:: |
| |
| # yum -y install mysql-server |
| |
| This should install MySQL 5.x, as of the time of writing this guide. |
| With MySQL now 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: |
| |
| .. parsed-literal:: |
| |
| innodb_rollback_on_timeout=1 |
| innodb_lock_wait_timeout=600 |
| max_connections=350 |
| log-bin=mysql-bin |
| binlog-format = 'ROW' |
| |
| .. note:: |
| |
| For Ubuntu 16.04 and later, make sure you specify a ``server-id`` in your ``.cnf`` file for binary logging. Set the ``server-id`` according to your database setup. |
| |
| .. parsed-literal:: |
| |
| server-id=source-01 |
| 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: |
| |
| .. parsed-literal:: |
| |
| # systemctl enable mysqld |
| # systemctl start mysqld |
| |
| |
| MySQL Connector Installation |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Install Python MySQL connector from the MySQL community repository (which we've added previously): |
| |
| .. parsed-literal:: |
| |
| # yum -y install mysql-connector-python |
| |
| Please note that the previously required ``mysql-connector-java`` library is now bundled with CloudStack |
| Management server and is no more required to be installed separately. |
| |
| Installation |
| ~~~~~~~~~~~~ |
| |
| We are now going to install the management server. We do that by executing the |
| following command: |
| |
| .. parsed-literal:: |
| |
| # yum -y install cloudstack-management |
| |
| CloudStack |version| requires Java 11 JRE. Installing the management server |
| will automatically install Java 11, but it's good to explicitly confirm that the Java 11 |
| is the selected/active one (in case you had a previous Java version already installed): |
| |
| .. parsed-literal:: |
| |
| $ alternatives --config java |
| |
| Make sure that Java 11 is the chosen one. |
| |
| With the application itself installed we can now setup the database, we'll do |
| that with the following command and options: |
| |
| .. parsed-literal:: |
| |
| # 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: |
| |
| .. parsed-literal:: |
| |
| # 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. |
| |
| We need to download the systemVM template and deploy that to the secondary storage. |
| We will use the local path (/export/secondary) since we are already on the NFS server itself, |
| but otherwise you would need to mount your Secondary Storage to a temporary mount point, and use |
| that mount point instead of the /export/secondary path. |
| |
| Execute the followint script: |
| |
| .. parsed-literal:: |
| |
| /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \ |
| -m /export/secondary \ |
| -u |sysvm64-url-kvm| \ |
| -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. |
| |
| |
| KVM Setup and Installation |
| -------------------------- |
| |
| Prerequisites |
| ~~~~~~~~~~~~~ |
| |
| We 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: |
| |
| :ref:`conf-network` |
| |
| :ref:`conf-hostname` |
| |
| :ref:`conf-selinux` |
| |
| :ref:`conf-ntp` |
| |
| :ref:`qigconf-pkg-repo` |
| |
| You don't need to do that for the management server now as we've already done that. |
| |
| |
| Installation |
| ~~~~~~~~~~~~ |
| |
| Installation of the KVM agent is trivial with just a single command, but |
| afterwards we'll need to configure a few things. We need to install the EPEL repository also. |
| |
| .. parsed-literal:: |
| |
| # yum -y install epel-release |
| # yum -y install cloudstack-agent |
| |
| |
| KVM Configuration |
| ~~~~~~~~~~~~~~~~~~~~ |
| |
| We have two different parts of KVM to configure, libvirt, and QEMU. |
| |
| |
| QEMU Configuration |
| ^^^^^^^^^^^^^^^^^^^ |
| |
| 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. |
| |
| #. Even though we are using a single host, the following steps are recommended |
| to get faimilar with the general requirements. |
| 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 = "16509" |
| auth_tcp = "none" |
| mdns_adv = 0 |
| |
| #. Turning on "listen_tcp" in libvirtd.conf is not enough, we have to change |
| the parameters as well we also need to modify /etc/sysconfig/libvirtd: |
| |
| Uncomment the following line: |
| |
| :: |
| |
| #LIBVIRTD_ARGS="--listen" |
| |
| #. Restart libvirt |
| |
| .. parsed-literal:: |
| |
| # systemctl restart libvirtd |
| |
| |
| KVM configuration complete |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| For the sake of completeness, you should check if KVM is running OK on your |
| machine (you should see kvm_intel or kvm_amd modules shown as loaded): |
| |
| .. parsed-literal:: |
| |
| # lsmod | grep kvm |
| kvm_intel 55496 0 |
| kvm 337772 1 kvm_intel |
| kvm_amd # if you are in AMD cpu |
| |
| 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. |
| |
| |
| Configuration |
| ------------- |
| |
| UI Access |
| ~~~~~~~~~ |
| |
| To get access to CloudStack's web interface, merely point your browser to |
| the IP address of your machine e.g. http://172.16.10.2:8080/client |
| The default username is 'admin', and the default password is 'password'. |
| |
| Setting up a Zone |
| ----------------- |
| |
| Zone Type |
| ~~~~~~~~~ |
| |
| A zone is the largest organization entity in CloudStack - and we'll be |
| creating one. |
| |
| .. warning:: |
| We will be configuring an Advanced Zone in a way that will allow us to access both |
| the "Management" network of the cloud as well as the "Public" network - we will do so |
| by using the same CIDR (but different part of it, i.e. different IP ranges) for both |
| "Management" (Pod) and "Public" networks - which is something your would NEVER do |
| in a production - this is done strictly for testing purposes only in this guide! |
| |
| Click "Continue with Installation" to continue - you will be offered to change your |
| root admin password - please do so, and click on OK. |
| |
| A new Zone wizard will pop-up. Please chose Advanced (don't tick the "Security Groups") and click on Next. |
| |
| Zone Details |
| ~~~~~~~~~~~~ |
| |
| On this page, we enter where our DNS servers are located. |
| 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 will indeed set them to look to the same |
| external resource so as to not add a namerserver setup to our list of |
| requirements. |
| |
| #. Name - we will set this to the ever-descriptive 'Zone1' for our cloud. |
| |
| #. IPv4 DNS 1 - we will set this to ``8.8.8.8`` for our cloud. |
| |
| #. IPV4 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.4.4`` for our cloud. |
| |
| #. Hypervisor - this will be the primary hypervisor used in this zone. In our |
| case, we will select KVM. |
| |
| Click "Next" to continue. |
| |
| Physical Network |
| ~~~~~~~~~~~~~~~~ |
| There are various network isolation methods supported by Cloudstack. The |
| default VLAN option will be sufficient for our purposes. For improved |
| performance and/or security, Cloudstack allows different traffic types to run |
| over specifically dedicated network interface cards attached to hypervisors. |
| We will not be making any changes here, the default settings are fine |
| for this demo installation of Cloudstack. |
| |
| Click "Next" to continue. |
| |
| |
| Public Traffic |
| ~~~~~~~~~~~~~~ |
| Publicly-accessible IPs must be allocated for this purpose in normal/public cloud installations, |
| but since we are deploying merely a demo/test env, we will use a PART of our local network (e.g. from .11 to .20 or other free range) |
| |
| #. Gateway - We'll use ``172.16.10.1`` #or whatever is your physical gateway e.g. 192.168.1.1 |
| |
| #. Netmask - We'll use ``255.255.255.0`` |
| |
| #. VLAN/VNI - We'll leave this one empty |
| |
| #. Start IP - We'll use ``172.16.10.11`` # (or e.g. 192.168.1.11) |
| |
| #. End IP - We'll use ``172.16.10.20`` # (or e.g. 192.168.1.20) |
| |
| Click "Add" to add the range. |
| |
| Click "Next" to continue. |
| |
| Pod Configuration |
| ~~~~~~~~~~~~~~~~~ |
| |
| Here we will configure a range for Cloudstack's internal management traffic - CloudStack |
| will assign IPs from this range to system VMs. This will also be part of our local network |
| (i.e. different part of your local home network, from .21 to .30), with the rest of the IP parameters |
| (netmaks/gateway) being the same as used for the Public Traffic. |
| |
| #. Pod Name - We'll use ``Pod1`` for our cloud. |
| |
| #. Reserved system gateway - we'll use ``172.16.10.1`` # (or whatever is your physical gateway e.g. 192.168.1.1) |
| |
| #. Reserved system netmask - we'll use ``255.255.255.0`` |
| |
| #. Start reserved system IPs - we will use ``172.16.10.21`` # (or e.g. 192.168.1.21) |
| |
| #. End Reserved system IP - we will use ``172.16.10.30`` # (or e.g. 192.168.1.30) |
| |
| Click "Next" to continue. |
| |
| Guest Traffic |
| ~~~~~~~~~~~~~ |
| |
| Next we will configure a range of VLAN IDs for our guest VMs. |
| |
| A range of ``100`` - ``200`` would suffice. |
| |
| Click "Next" to continue. |
| |
| Cluster |
| ~~~~~~~ |
| |
| Multiple clusters can belong to a pod and multiple hosts can belong to a |
| cluster. We will have one cluster and we have to give our cluster a name. |
| |
| Enter ``Cluster1`` |
| |
| Click "Next" to continue. |
| |
| Host |
| ~~~~ |
| This is where we specify the details of our hypervisor host. In our case, |
| we are running the management server on the same machine that we will be using |
| as a hypervisor. |
| |
| #. Hostname - we'll use the IP address ``172.16.10.2`` since we didn't set up a |
| DNS server for name resolution. (this is your local server, so swap with the correct IP) |
| |
| #. Username - we'll use ``root`` |
| |
| #. Password - enter the operating system password for the root user |
| |
| Click "Next" to continue. |
| |
| Primary Storage |
| ^^^^^^^^^^^^^^^ |
| |
| With your cluster now setup - you should be prompted for primary storage |
| information. Enter the following values in the fields: |
| |
| #. Name - We'll use ``Primary1`` |
| |
| #. Scope - We'll use ``Cluster`` even though either is fine in this case. With |
| "Zone" scope, all hosts in all clusters would have access to this storage |
| pool. |
| |
| #. Protocol - We'll use ``NFS`` |
| |
| #. Server - We'll be using the IP address ``172.16.10.2`` (this is your local server, so swap with the correct IP) |
| |
| #. Path - Well define ``/export/primary`` as the path we are using |
| |
| Click "Next" to continue. |
| |
| Secondary Storage |
| ^^^^^^^^^^^^^^^^^ |
| |
| You'll be prompted for secondary storage information - populate it as follows: |
| |
| #. Provider - Choose ``NFS`` |
| |
| #. Name - ``Secondary1`` |
| |
| #. NFS server - We'll use the IP address ``172.16.10.2`` (this is your local server, so swap with the correct IP) |
| |
| #. Path - We'll use ``/export/secondary`` |
| |
| Click "Next" to continue. |
| |
| Now, click "Launch Zone" and your cloud should begin setup - it may take |
| several minutes for setup to finalize. |
| |
| When done, click on "Enable Zone" and your zone will be ready. |
| |
| That's it, you are done with installation of your Apache CloudStack demo cloud. |
| |
| To check the health of your CloudStack installation, go to Infrastructure --> System VMs and refresh |
| the UI from time to time - you should see “S-1-VM” and “V-2-VM” system VMs (SSVM and CPVM) in State=Running and Agent State=Up |
| After that you can go to Images --> Templates, click on the built-in template named "CentOS 5.5(64-bit) no GUI (KVM)", |
| then click on "Zones" tab - and observe how the Status is moving from a few percents downloaded up to fully downloaded, |
| after which the Status will show as "Download Complete" and "Ready" column will say "Yes". |
| After this is done, you will be able to deploy a VM from this template. |
| |