Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
358 lines (259 sloc) 14.87 kb
These are build instructions for the development version of Eucalyptus.
=======================================================================
***NOTE*** The following install instructions are still under development and
may be INCOMPLETE. Contributions encouraged! :)
What follows are instructions to build and install Eucalyptus from source on
CentOS/RHEL 5/6 and Ubuntu 10.04 LTS/12.04 LTS/13.04. Eucalyptus only supports
64-bit installations of CentOS/RHEL.
You must install all dependencies to be able to build and install Eucalyptus.
1. Get the source code
======================
git clone git://github.com/eucalyptus/eucalyptus --recursive
2. Install dependencies
=======================
Please follow the following instructions to install required build and run-time
dependencies.
CentOS/RHEL 6
-------------
Install the EPEL repository:
yum install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Install the ELRepo repository (needed on the Walrus host only for DRBD packages):
yum install http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/elrepo-release-6-5.el6.elrepo.noarch.rpm
Use the following repository baseurl to get extra dependencies by creating a repo file in /etc/yum.repos.d/euca-deps.repo with file content:
[euca-deps]
name=euca-deps
baseurl=http://downloads.eucalyptus.com/software/eucalyptus/build-deps/3.4/rhel/6/x86_64
gpgcheck=1
enabled=1
Install the following build dependencies:
yum groupinstall development
yum install ant ant-nodeps apache-ivy axis2-adb axis2-adb-codegen axis2c-devel \
axis2-codegen axis2c-devel curl-devel gawk git java-1.6.0-openjdk-devel \
java-1.7.0-openjdk-devel jpackage-utils libvirt-devel libxml2-devel \
libxslt-devel m2crypto openssl-devel python-devel python-setuptools \
rampartc-devel swig xalan-j2-xsltc json-c-devel libuuid libuuid-devel
Install the following runtime dependencies (this is the superset of all
dependencies. Not all may be required for every component):
yum install gcc make ant ant-nodeps apache-ivy axis2-adb-codegen axis2-codegen axis2c \
axis2c-devel bitstream-vera-fonts bridge-utils coreutils curl curl-devel \
dejavu-serif-fonts device-mapper dhcp \
drbd83-utils e2fsprogs euca2ools file gawk httpd iptables iscsi-initiator-utils \
java java-1.7.0-openjdk java-1.7.0-openjdk-devel java-devel jpackage-utils kvm \
PyGreSQL libcurl libvirt libvirt-devel libxml2-devel libxslt-devel lvm2 m2crypto \
openssl-devel parted patch perl-Crypt-OpenSSL-RSA perl-Crypt-OpenSSL-Random \
postgresql92 postgresql92-server python-boto python-devel python-setuptools \
rampartc rampartc-devel rsync scsi-target-utils sudo swig util-linux vconfig \
velocity vtun wget which xalan-j2-xsltc ipset ebtables bc
Package-name & availability notes for CentOS 6.2 (and possibly earlier?):
- libcurl4 was replaced by libcurl.
- apache2 was replaced by httpd.
- dhcp-server was replaced by dhcp.
- tgt was replaced by scsi-target-utils.
- bitstream-vera-fonts is no longer available.
Download and save the following file:
https://raw.github.com/eucalyptus/eucalyptus-rpmspec/master/euca-WSDL2C.sh
Copy it to /opt/euca-WSDL2C.sh and make it executable.
Download Apache Ivy 2.1.0 tarball and copy the Ivy jar file.
wget http://archive.apache.org/dist/ant/ivy/2.1.0/apache-ivy-2.1.0-bin.tar.gz
tar -zxvf apache-ivy-2.1.0-bin.tar.gz
cp apache-ivy-2.1.0/ivy-2.1.0.jar /usr/share/java/ivy.jar
Add symlink to fix Java 7 support for Apache Ant.
ln -s /usr/lib/java-1.6.0 /usr/lib/java-1.7.0
Download and save the following file:
https://raw.github.com/eucalyptus/eucalyptus-rpmspec/master/euca-WSDL2C.sh
Copy it to /opt/euca-WSDL2C.sh and make it executable.
Ubuntu 12.04 LTS (precise) and 13.04 (raring)
---------------------------------------------
Patch source to remove tests that are unable to compile on Ubuntu.
wget https://gist.github.com/mspaulding06/7003053/raw/0dbbab1be04bfc9c0213ba8a32331a0a25f38c9f/ubuntu.patch
Install the following build dependencies.
apt-get install build-essential
apt-get install cdbs debhelper libaxis2c-dev librampart-dev \
default-jdk libvirt-dev libfuse-dev libfuse2 libcurl4-openssl-dev \
libssl-dev ant-optional zlib1g-dev pkg-config swig python \
python-setuptools rsync wget open-iscsi libxslt1-dev gengetopt ant \
groovy postgresql-server-dev-9.1 iputils-arping unzip
Install the superset of runtime dependencies.
apt-get install adduser apache2 apache2-mpm-worker bc bridge-utils \
default-jre-headless dmsetup drbd8-utils ebtables euca2ools file ipset \
iptables iputils-arping isc-dhcp-server libapache2-mod-axis2c \
libaxis2c0 libc6 libcrypt-openssl-random-perl libcrypt-openssl-rsa-perl \
libcrypt-x509-perl libcurl3 libgetargs-long-perl \
libhibernate-commons-annotations-java libjboss-common-java libpam-modules \
libpostgresql-jdbc-java librampart0 libssl1.0.0 libvirt-bin libxslt1.1 \
lvm2 ntp open-iscsi openssh-client openssh-server parted postgresql-9.1 \
postgresql-client-9.1 python python-boto python-psutil \
python-pygresql rsync sudo tgt vblade velocity vlan vtun
Note: You can use apache2-mpm-prefork in place of apache2-mpm-worker
Download axis2-1.4 from:
http://archive.apache.org/dist/ws/axis2/1_4/axis2-1.4-bin.zip
Then unzip it in /opt, so /opt/axis2-1.4 exists.
Install the following runtime dependencies if needed. Dependencies are broken down
by Eucalyptus component.
Cloud Controller:
apt-get install libc6 adduser openssh-server openssh-client sudo rsync \
postgresql-client-9.1 python rsync python-boto python-psutil \
python-pygresql lvm2 libgetargs-long-perl postgresql-9.1 \
vblade dmsetup default-jre-headless java6-runtime-headless velocity \
libpostgresql-jdbc-java libjboss-common-java \
libhibernate-commons-annotations-java
Walrus:
apt-get install libc6 adduser openssh-server openssh-client sudo rsync \
postgresql-client-9.1 python python-boto python-psutil \
python-pygresql drbd8-utils
Storage Controller:
apt-get install libc6 adduser openssh-server openssh-client sudo rsync \
postgresql-client-9.1 python python-boto python-psutil \
tgt open-iscsi libcrypt-openssl-random-perl libcrypt-openssl-rsa-perl \
libcrypt-x509-perl lvm2 vblade
Cluster Controller:
apt-get install libaxis2c0 libc6 libcurl3 librampart0 libssl1.0.0 adduser \
openssh-server openssh-client sudo rsync python python-boto \
python-psutil apache2 libapache2-mod-axis2c libssl1.0.0 \
bridge-utils vlan isc-dhcp-server iptables vtun libpam-modules \
iputils-arping
Node Controller:
apt-get install libaxis2c0 libc6 librampart0 libssl1.0.0 libxslt1.1 \
apache2-mpm-worker libapache2-mod-axis2c apache2 \
libc6 adduser openssh-server openssh-client sudo adduser parted \
libvirt-bin open-iscsi libcrypt-openssl-random-perl libcrypt-openssl-rsa-perl \
libcrypt-x509-perl euca2ools python python-boto python-psutil \
file rsync
Node Controller (using EDGE mode):
apt-get install libaxis2c0 libc6 librampart0 libssl1.0.0 libxslt1.1 \
apache2-mpm-worker libapache2-mod-axis2c apache2 \
libc6 adduser openssh-server openssh-client sudo adduser parted \
libvirt-bin open-iscsi libcrypt-openssl-random-perl libcrypt-openssl-rsa-perl \
libcrypt-x509-perl euca2ools python python-boto python-psutil \
file rsync ipset ebtables
Ubuntu 10.04 LTS
----------------
Add Martin Pitt's PPA to get postgreSQL 9.1
sudo add-apt-repository ppa:pitti/postgresql (You might need to install
python-software-properties)
Run "apt-get update"
Install the following build dependencies.
cdbs debhelper libaxis2c-dev librampart-dev default-jdk libvirt-dev libfuse-dev
libfuse2 libcurl4-openssl-dev libssl-dev ant-optional zlib1g-dev pkg-config
swig python python-setuptools rsync wget open-iscsi libxslt1-dev gengetopt ant
groovy postgresql-server-dev-9.1 iputils-arping
Install the following runtime dependencies. Dependencies are broken down by
Eucalyptus component.
CLC: libc6, adduser, openssh-server, openssh-client, sudo, rsync,
postgresql-client-9.1, python2.6, python (>= 2.5), rsync, python-boto,
python-psutil, python-pygresql, lvm2, libgetargs-long-perl, postgresql-9.1,
vblade, dmsetup, default-jre-headless | java6-runtime-headless, velocity,
libpostgresql-jdbc-java (>= 9.1), libjboss-common-java,
libhibernate-commons-annotations-java
Walrus: libc6, adduser, openssh-server, openssh-client, sudo, rsync,
postgresql-client-9.1, python (>= 2.5), python2.7, python-boto (>= 2.1),
python-psutil, python-pygresql, drbd8-utils
SC: libc6, adduser, openssh-server, openssh-client, sudo, rsync,
postgresql-client-9.1, python, python2.7, python-boto (>= 2.1), python-psutil,
tgt, open-iscsi, libcrypt-openssl-random-perl, libcrypt-openssl-rsa-perl,
libcrypt-x509-perl, lvm2, vblade
CC: libaxis2c0, libc6 (>= 2.14), libcurl3 (>= 7.16.2-1), librampart0 (>=
1.3.0-1euca2), libssl1.0.0 (>= 1.0.0), adduser, openssh-server, openssh-client,
sudo, rsync, python (>= 2.5), python2.7, python-boto (>= 2.1), python-psutil
(>= 0.1.2), apache2, libapache2-mod-axis2c, libssl1.0.0 (>= 1.0.0),
bridge-utils, vlan, dhcp3-server, iptables, vtun, libpam-modules (>=
1.0.1-9ubuntu3), iputils-arping
NC: libaxis2c0, libc6 (>= 2.14), libcurl3 (>= 7.16.2-1), librampart0 (>=
1.3.0-1euca2), libssl1.0.0 (>= 1.0.0), libvirt0 (>= 0.3.0), libxml2 (>= 2.7.4),
libxslt1.1 (>= 1.1.25), apache2-mpm-worker | apache2-mpm-prefork,
libapache2-mod-axis2c, apache2, libc6 (>= 2.2.5), adduser, openssh-server,
openssh-client, sudo, adduser, parted, libvirt-bin, open-iscsi,
libcrypt-openssl-random-perl, libcrypt-openssl-rsa-perl, libcrypt-x509-perl,
euca2ools (>= 1.4~), libdevmapper, python (>= 2.5), python2.7, python-boto (>=
2.1), python-psutil (>= 0.1.2), file, rsync
3. Build Eucalyptus
===================
First, make sure JAVA_HOME and EUCALYPTUS are defined. For example,
For instance, on Ubuntu,
export JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-amd64/"
export JAVA="$JAVA_HOME/jre/bin/java"
export EUCALYPTUS="/"
On RHEL or CentOS,
export JAVA_HOME="/usr/lib/jvm/java-1.7.0/"
export JAVA="$JAVA_HOME/bin/java"
export EUCALYPTUS="/"
Then run the "configure" script.
For instance, on Ubuntu,
./configure --with-axis2c=/usr/lib/axis2 \
--with-axis2c-services=/usr/lib/axis2/services --prefix=$EUCALYPTUS \
--with-apache2-module-dir=/usr/lib/apache2/modules \
--with-db-home=/usr/lib/postgresql/9.1 \
--with-axis2=/opt/axis2-1.4
On RHEL or CentOS,
./configure '--with-axis2=/usr/share/axis2-*' \
--with-axis2c=/usr/lib64/axis2c --prefix=$EUCALYPTUS \
--with-apache2-module-dir=/usr/lib64/httpd/modules \
--with-db-home=/usr/pgsql-9.1 \
--with-wsdl2c-sh=/opt/euca-WSDL2C.sh
make clean ; make ; make install
4. Deploy Eucalyptus
====================
At this point, if you plan to use Eucalyptus on more than one system, you're
ready to push the software out to the other systems (although not all software
components are required on all systems, it is simpler to just mirror everything
and selectively enable components via start-up scripts). If you installed
Eucalyptus in its own directory, you can just sync the entire package to all of
the hosts listed above using whatever mechanism you typically use to push
changes to systems (rsync, for instance).
rsync -a $EUCALYPTUS/ root@{host-2}:$EUCALYPTUS/
rsync -a $EUCALYPTUS/ root@{host-3}:$EUCALYPTUS/
...
On installations without a root user that can log in, such as Ubuntu, it may be
easier to pull the software from each system one at a time:
host-2# rsync -a {user}@{host-1}:$EUCALYPTUS/ $EUCALYPTUS/
host-3# rsync -a {user}@{host-1}:$EUCALYPTUS/ $EUCALYPTUS/
NOTE: For the system running the NC you will also need to install the policykit
configuration. Copy the file './tools/eucalyptus-nc-libvirt.pkla' to the NC and
put it under the directory '/var/lib/polkit-1/localauthority/10-vendor.d/'
5. Configure and Use Eucalyptus
===============================
At this point forward, please follow instructions from the "Configuring
Eucalyptus" section of the Installation Guide.
You can access Eucalyptus Documentation here:
http://www.eucalyptus.com/docs
6. Running Eucalyptus
=====================
Eucalyptus comes with the euca_conf script for configuring Eucalyptus. For some
requests it modifies the configuration file located in
'$EUCALYPTUS/etc/eucalyptus/eucalyptus.conf' (which can also be edited
manually), for other requests it modifies the database maintained by the Cloud
Controller (much of that functionality is duplicated in the Web interface, to
be described later).
In addition to modifying the configuration, euca_conf attempts to synchronize
x509 credentials across the nodes of a Eucalyptus installation by relying on
rsync and scp. We highly recommend setting up password-less SSH access for the
root user across all nodes of your Eucalyptus installation (otherwise,
euca_conf will prompt you for remote system passwords).
As explained in the overview, a Eucalyptus installation consists of five types
of components: cloud controller (CLC), User Facing Services (UFS/API), cluster controller (CC), storage
controller (SC), and the node controller(s) (NCs). In following instructions we
assume that all components except the NCs are co-located on one machine that we
refer to as the front end and that NCs run on one or more other machines
referred to ascompute nodes.
To run Eucalyptus, first, make sure that you have all of the runtime
dependencies of Eucalyptus installed, based on your chosen set of configuration
parameters. If there is a problem with runtime dependencies (for instance, if
Eucalyptus cannot find/interact with them), all errors will be reported in log
files located in $EUCALYPTUS/var/log/eucalyptus. For more information on
Eucalyptus log files and error reports, please see Troubleshooting Eucalyptus.
Next, inspect the contents of $EUCALYPTUS/etc/eucalyptus/eucalyptus.conf
carefully, on each machine, to make sure that the settings are appropriate for
your environment. Once you have confirmed that everything is configured
properly, enable the cloud services on the front-end:
# enable services on the front-end
$EUCALYPTUS/usr/sbin/euca_conf -d $EUCALYPTUS --setup
#Initialize the DB on the host that will be the CLC component.
$EUCALYPTUS/usr/sbin/euca_conf -d $EUCALYPTUS --initialize
Start each component on the appropriate host.
# start enabled front-end services
$EUCALYPTUS/etc/init.d/eucalyptus-cloud start
# start the cluster controller
$EUCALYPTUS/etc/init.d/eucalyptus-cc start
And on each of the compute nodes run:
$EUCALYPTUS/etc/init.d/eucalyptus-nc start
To stop them you call the script with stop instead of start.
Jump to Line
Something went wrong with that request. Please try again.