This document describes how to develop, build, package and install Apache CloudStack (Incubating). For more information please refer to the project's website:
http://incubator.apache.org/cloudstack
Apache CloudStack developers use various platforms for development, this guide was tested against a CentOS 6.2 x86_64 setup.
Refer to the wiki for the latest information, especially:
Install tools and dependencies used for development:
$ yum install git ant ant-devel java-1.6.0-openjdk java-1.6.0-openjdk-devel mysql mysql-server tomcat6 mkisofs gcc python MySQL-python openssh-clients wget
Set up Maven (3.0.4):
$ wget http://www.us.apache.org/dist/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.tar.gz $ cd /usr/local/ # or any path $ tar -zxvf apache-maven-3.0.4-bin.tar.gz $ echo export M2_HOME=/usr/local/apache-maven-3.0.4 >> ~/.bashrc # or .zshrc or .profile $ echo export PATH=${M2_HOME}/bin:${PATH} >> ~/.bashrc # or .zshrc or .profile
Note: Tomcat 6.0.35 has some known issue with Apache CloudStack, please use Tomcat 6.0.33 from http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.33/bin
Set CATALINA_HOME to path where you extract/install tomcat, put them in your .bashrc or .zshrc or .profile:
$ echo export CATALINA_HOME=/usr/share/tomcat6/ >> ~/.bashrc
Fix permissions on CATALINA_HOME:
$ chown -R <you>:<your-group> $CATALINA_HOME
Generate you ssh keys, useful for ssh-ing to your hosts and vm etc.:
$ ssh-keygen -t rsa -q
Apache CloudStack uses some ports, make sure at least those used by the management server are available and not blocked by any local firewall. Following ports are used by Apache CloudStack and its entities:
8787: Apache CloudStack (Tomcat) debug socket 9090, 8250: Apache CloudStack Management Server, User/Client API 8096: User/Client to CloudStack Management Server (unauthenticated) 3306: MySQL Server 3922, 8250, 80/443, 111/2049, 53: Secondary Storage VM 3922, 8250, 53: Console Proxy VM 3922, 8250, 53: Virtual Router 22, 80, 443: XenServer, XAPI 22: KVM 443: vCenter DNS: 53 NFS: 111/2049
Start the MySQL service:
$ service mysqld start
You may get the source code from the repository hosted on Apache:
$ git clone https://git-wip-us.apache.org/repos/asf/incubator-cloudstack.git
Or, you may fork a repository from the official Apache CloudStack mirror by Apache on Github
To keep yourself updated on a branch, do:
$ git pull <origin> <branch>
For example, for master:
$ git pull origin master
Populate the dependencies using Maven:
$ mvn -P deps
In case you want support for VMWare, SRX and other non-Apache (referred to as nonoss) compliant libs, you may download the following jar artifacts from respective vendors:
deps/cloud-iControl.jar deps/cloud-manageontap.jar deps/cloud-netscaler-sdx.jar deps/cloud-netscaler.jar deps/vmware-apputils.jar deps/vmware-vim.jar deps/vmware-vim25.jar
And apply 4.0-nonoss.patch available from attachments of the [Building]https://cwiki.apache.org/confluence/display/CLOUDSTACK/Building] wiki.
$ git am 4.0-nonoss.patch
Clean previous build, if needed:
$ mvn clean $ ant clean-all $ ant clean-tomcat
Build all sub-modules:
$ ant build-all
Deploy the built project on tomcat:
$ ant deploy-server
Clear old database (if any) and deploy the database schema:
$ ant deploydb
Start the management server in debug mode:
$ ant debug
If this works, you've successfully setup a single server Apache CloudStack installation.
Open the following URL on your browser to access the Management Server UI:
http://localhost:8080/client/
Or,
http://management-server-ip-address:8080/client
The default credentials are; user: admin, password: password and the domain field should be left blank which is defaulted to the ROOT domain.
If you want to contribute your changes, send your git formatted patch to: https://reviews.apache.org/groups/cloudstack or contact on the developer mailing list.
Before packaging, please make sure you go through the “Building” section above. This section describes packaging and installation.
To create debs:
$ mvn -P deps # -D nonoss, for nonoss as described in the "Building" section above $ dpkg-buildpackage
All the deb packages will be created in ../$PWD
To create an apt repo: (assuming appropriate user privileges)
$ path=/path/to/your/webserver/cloudstack $ mv ../*.deb $path $ dpkg-scanpackages $path /dev/null | gzip -9c > $path/Packages.gz
Configure your system to use your new apt repo:
$ echo "deb $path ./" >> /etc/apt/sources.list.d/cloudstack.list
Installation:
Install needed packages, apt-get upgrade for upgrading:
$ apt-get update $ apt-get install cloud-client # management server $ apt-get install mysql-server # mysql server $ apt-get install cloud-agent cloud-system-iso # agent (kvm) $ apt-get install cloud-awsapi # awsapi server $ apt-get install cloud-usage # usage server
To create rpms:
$ mvn -P deps # -D nonoss, for nonoss as described in the "Building" section above $ ./waf rpm
All the rpm packages will be create in artifacts/rpmbuild/RPMS/x86_64
To create a yum repo: (assuming appropriate user privileges)
$ path=/path/to/your/webserver/cloudstack $ cd artifacts/rpmbuild/RPMS/x86_64 $ mv *.rpm $path $ createrepo $path
Configure your system to use your new yum repo, add the following to /etc/yum.repos.d/cloudstack.repo:
[apache-cloudstack] name=Apache CloudStack baseurl=http://webserver.tld/path/to/repo enabled=1 gpgcheck=0
Installation:
Install needed packages:
$ yum update $ yum install cloud-client # management server $ yum install mysql-server # mysql server $ yum install cloud-agent # agent (kvm) $ yum install cloud-usage # usage server
If you will be using Xen as your hypervisor, please download vhd-util
If management server is installed on RHEL/CentOS, then copy vhd-util into: /usr/lib64/cloud/common/scripts/vm/hypervisor/xenserver/
If management server is installed on Ubuntu, then put vhd-util into: /usr/lib/cloud/common/scripts/vm/hypervisor/xenserver/vhd-util
Once, you've successfully installed Apache CloudStack you may read the user manuals and guides which contains technical documentation for Apache CloudStack.