Eucalyptus
graziano obertelli
graziano at eucalyptus.com
Wed Feb 17 01:07:16 UTC 2010
Hello,
we got 1.6.2 out, and for now we don't have fedora RPMs. With this
release, as I mentioned, we tried to simplify the way we handle
contributions and we opened up some community wiki part of our web site.
We didn't make it in time to have RPMs for Fedora, but with this release
we are having nightly builds, and we can get the RPMs in there easily
enough and perhaps once they pass long term testing, we can promote them
to the domwnload page.
In this regards I have few questions: we depend on libvirt to run
instances, and we are running into some problems. The first one is: how do
we give permission to the user eucalyptus to run instances? I think you
are using policykit, so how do we configure it correctly?
Also, we need to tell qemu-kvm to drop the console output in a file close
to where we run the instance, but we are having permissions problems. I
think that qemu is running as the user'qemu', so for now the quick fix was
to create the file in the right place, add the 'eucalyptus' user to the
'qemu' group and then start the instance. Is there a more elegant way?
Thanks for all feedback!
graziano
PS: I attach here the spec file after we did a first pass. Comments are
always welcomed of course.
On Thu, Feb 11, 2010 at 10:24:28AM -0600, Garrett Holmstrom wrote:
> On Thu, Feb 11, 2010 at 1:46 AM, graziano obertelli
> <graziano at eucalyptus.com> wrote:
> > So, the reason's why Conflict is there, is beacause we need all the
> > eucalyptus pacakges to be the same version. In our testing it happened
> > that some older versions were left behind, making the experience failry
> > miserable (failure modes in this case are very frustratring to chase). I
> > can remove it, but how do I ensure that all eucalyptus pacakges installed
> > are of the same version?
>
> Just have every subpackage Require the main one with a versioned dependency:
>
> Requires: %{name} = %{version}-%{release}
>
> When one tries to update the main package the older subpackages'
> dependencies will be unsatisfied, causing yum to pull in the new ones
> to fix the problem. Conversely, when a subpackage is updated it will
> require the newer version of the main package and pull it in.
>
> > Does %global exists also in CentOS?
>
> Yes.
>
> > Hopefully I will have sometime tomorrow and over the weekend to work on
> > the packaging and writing a better spec file (there are still quite a few
> > point you mentioned that I have not tackled). Is that ok for me to post
> > the spec file (once I get something which works) on this list to have more
> > feedback?
>
> I certainly wouldn't mind. Then again it isn't difficult to pull up
> the current version in Bazaar either.
>
> The euca2ools spec file from the tarballs doesn't work on Fedora at
> all because it simply assumes the machine runs CentOS with Python 2.5.
> Perhaps I can try working on a version that works but is still
> relatively portable.
> _______________________________________________
> cloud mailing list
> cloud at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/cloud
--
Graziano Obertelli
Eucalyptus Systems, Inc.
130 Castilian St. Goleta, CA 93117
Office: 805-845-8000
www.eucalyptus.com
-------------- next part --------------
%global is_suse %(test -e /etc/SuSE-release && echo 1 || echo 0)
%global is_centos %(grep CentOS /etc/redhat-release > /dev/null && echo 1 || echo 0)
%global is_fedora %(grep Fedora /etc/redhat-release > /dev/null && echo 1 || echo 0)
%global euca_dhcp dhcp
%global euca_httpd httpd
%global euca_curl curl
%global euca_libcurl curl-devel
%global euca_build_req vconfig, wget, rsync
%if %is_suse
%global euca_dhcp dhcp-server
%global euca_httpd apache2
%global euca_libvirt libvirt, xen-tools
%global euca_hypervisor xen
%global euca_curl libcurl4
%global euca_libcurl libcurl-devel
%global euca_bridge br0
%global euca_java java-sdk >= 1.6.0
%global euca_build_req vlan
%endif
%if %is_centos
%global euca_libvirt libvirt >= 0.6
%global euca_hypervisor xen
%global euca_bridge xenbr0
%global euca_java java-sdk >= 1.6.0
%endif
%if %is_fedora
%global euca_libvirt libvirt
%global euca_hypervisor kvm
%global euca_bridge br0
%global euca_java java-devel >= 1:1.6.0
%endif
Summary: Elastic Utility Computing Architecture
Name: eucalyptus
Version: 1.6.2
Release: 1
License: GPLv3
Group: Applications/System
BuildRequires: gcc, make, %{euca_libvirt}-devel, %{euca_libvirt}, %{euca_libcurl}, ant, ant-nodeps, %{euca_java}, euca-axis2c >= 1.6.0, euca-rampartc >= 1.3.0
Requires: %{euca_build_req}
Source: http://eucalyptussoftware.com/downloads/releases/eucalyptus-%{version}-src.tar.gz
URL: http://open.eucalyptus.com
%description
EUCALYPTUS is an open source service overlay that implements elastic
computing using existing resources. The goal of EUCALYPTUS is to allow
sites with existing clusters and server infrastructure to co-host an
elastic computing service that is interface-compatible with Amazon's EC2.
This package contains the common parts: you will need to install either
eucalyptus-cloud, eucalyptus-cluster-contrller or
eucalyptus-node-controller (or all of them).
%package common-java
Summary: Elastic Utility Computing Architecture - ws java stack
Requires: eucalyptus = 1.6.2, %{euca_java}, lvm2
Group: Applications/System
%description common-java
EUCALYPTUS is an open source service overlay that implements elastic
computing using existing resources. The goal of EUCALYPTUS is to allow
sites with existing clusters and server infrastructure to co-host an
elastic computing service that is interface-compatible with Amazon's EC2.
This package contains the java WS stack.
%package walrus
Summary: Elastic Utility Computing Architecture - walrus
Requires: eucalyptus-common-java = 1.6.2, %{euca_java}, lvm2
Group: Applications/System
%description walrus
EUCALYPTUS is an open source service overlay that implements elastic
computing using existing resources. The goal of EUCALYPTUS is to allow
sites with existing clusters and server infrastructure to co-host an
elastic computing service that is interface-compatible with Amazon's EC2.
This package contains storage component for your cloud: images and buckets
are handled by walrus. Tipically this package is installed alongside the
cloud controller.
%package storage-controller
Summary: Elastic Utility Computing Architecture - storage controller
Requires: eucalyptus-common-java = 1.6.2, %{euca_java}, lvm2, vblade
Group: Applications/System
%description storage-controller
EUCALYPTUS is an open source service overlay that implements elastic
computing using existing resources. The goal of EUCALYPTUS is to allow
sites with existing clusters and server infrastructure to co-host an
elastic computing service that is interface-compatible with Amazon's EC2.
This package contains the storage controller part of eucalyptus which
handles the elastic blocks for a given cluster. Tipically you install it
alongside the cluster-controller.
%package cloud
Summary: Elastic Utility Computing Architecture - cloud controller
Requires: eucalyptus-common-java = 1.6.2, %{euca_java}, lvm2
Group: Applications/System
%description cloud
EUCALYPTUS is an open source service overlay that implements elastic
computing using existing resources. The goal of EUCALYPTUS is to allow
sites with existing clusters and server infrastructure to co-host an
elastic computing service that is interface-compatible with Amazon's EC2.
This package contains the cloud controller part of eucalyptus: the cloud
controller needs to be reachable by both the cluster controller and from
the cloud clients.
%package cluster-controller
Summary: Elastic Utility Computing Architecture - cluster controller
Requires: eucalyptus = 1.6.2, eucalyptus-gather-logs = 1.6.2, %{euca_httpd}, euca-axis2c >= 1.6.0, euca-rampartc >= 1.3.0, iptables, bridge-utils, %{euca_dhcp}, vtun
Group: Applications/System
%description cluster-controller
EUCALYPTUS is an open source service overlay that implements elastic
computing using existing resources. The goal of EUCALYPTUS is to allow
sites with existing clusters and server infrastructure to co-host an
elastic computing service that is interface-compatible with Amazon's EC2.
This package contains the cluster controller part of eucalyptus: it
handles multiple node controllers.
%package node-controller
Summary: Elastic Utility Computing Architecture - node controller
Requires: eucalyptus = 1.6.2, eucalyptus-gather-logs = 1.6.2, %{euca_httpd}, euca-axis2c >= 1.6.0, euca-rampartc >= 1.3.0, bridge-utils, %{euca_libvirt}, %{euca_curl}, %{euca_hypervisor}
Group: Applications/System
%description node-controller
EUCALYPTUS is an open source service overlay that implements elastic
computing using existing resources. The goal of EUCALYPTUS is to allow
sites with existing clusters and server infrastructure to co-host an
elastic computing service that is interface-compatible with Amazon's EC2.
This package contains the node controller part of eucalyptus: this is the
components that handles the instances.
%package gather-logs
Summary: Elastic Utility Computing Architecture - log service
Requires: eucalyptus = 1.6.2, %{euca_httpd}, euca-axis2c >= 1.6.0, euca-rampartc >= 1.3.0
Group: Applications/System
%description gather-logs
EUCALYPTUS is an open source service overlay that implements elastic
computing using existing resources. The goal of EUCALYPTUS is to allow
sites with existing clusters and server infrastructure to co-host an
elastic computing service that is interface-compatible with Amazon's EC2.
This package contains the internal log service of eucalyptus.
%prep
%setup -n eucalyptus-%{version}-src
%build
export DESTDIR=$RPM_BUILD_ROOT
./configure --with-axis2=/opt/packages/axis2-1.4 --with-axis2c=/opt/euca-axis2c --enable-debug --prefix=/
cd clc
make deps
cd ..
make 2> err.log > out.log
%install
export DESTDIR=$RPM_BUILD_ROOT
make install
#CWD=`pwd`
#cd $RPM_BUILD_ROOT
#ls usr/share/eucalyptus/*jar | sed "s/^/\//" > $CWD/jar_list
#cd $CWD
%clean
export DESTDIR=$RPM_BUILD_ROOT
make uninstall
[ ${RPM_BUILD_ROOT} != "/" ] && rm -rf ${RPM_BUILD_ROOT}
rm -rf $RPM_BUILD_DIR/eucalyptus-%{version}
%files
%doc LICENSE INSTALL README CHANGELOG
/etc/eucalyptus/eucalyptus.conf
/var/lib/eucalyptus/keys
/var/log/eucalyptus
/var/run/eucalyptus
/usr/share/eucalyptus/add_key.pl
/usr/share/eucalyptus/euca_ipt
/usr/share/eucalyptus/populate_arp.pl
/usr/share/eucalyptus/euca_upgrade
/usr/lib/eucalyptus/euca_rootwrap
/usr/lib/eucalyptus/euca_mountwrap
/etc/bash_completion.d/euca_conf
/usr/sbin/euca_conf
/usr/sbin/euca_sync_key
/usr/sbin/euca_killall
/etc/eucalyptus/httpd.conf
/etc/eucalyptus/eucalyptus-version
#/usr/share/eucalyptus/connect_iscsitarget.pl
#/usr/share/eucalyptus/disconnect_iscsitarget.pl
#/usr/share/eucalyptus/get_iscsitarget.pl
#%files common-java -f jar_list
%files common-java
/etc/init.d/eucalyptus-cloud
/etc/eucalyptus/cloud.d
/var/lib/eucalyptus/db
/var/lib/eucalyptus/modules
/var/lib/eucalyptus/webapps
/usr/lib/eucalyptus/liblvm2control.so
/usr/sbin/eucalyptus-cloud
/usr/share/eucalyptus/*jar*
%files cloud
%files walrus
%files storage-controller
%files cluster-controller
/opt/euca-axis2c/services/EucalyptusCC
/etc/init.d/eucalyptus-cc
/etc/eucalyptus/vtunall.conf.template
%files node-controller
/usr/share/eucalyptus/gen_libvirt_xml
/usr/share/eucalyptus/gen_kvm_libvirt_xml
/usr/share/eucalyptus/partition2disk
/usr/share/eucalyptus/get_xen_info
/usr/share/eucalyptus/get_sys_info
/usr/share/eucalyptus/detach.pl
/usr/sbin/euca_test_nc
/opt/euca-axis2c/services/EucalyptusNC
/etc/init.d/eucalyptus-nc
%files gather-logs
/opt/euca-axis2c/services/EucalyptusGL
%pre
if [ "$1" = "2" ];
then
# let's see where we installed
EUCADIRS="/ /opt/eucalyptus/"
for i in $EUCADIRS
do
if [ -e $i/etc/eucalyptus/eucalyptus-version ]; then
EUCADIR=$i
break
fi
done
cd $EUCADIR
# stop all old services
if [ -x etc/init.d/eucalyptus-cloud ];
then
etc/init.d/eucalyptus-cloud stop
fi
if [ -x etc/init.d/eucalyptus-cc ];
then
etc/init.d/eucalyptus-cc stop
fi
if [ -x etc/init.d/eucalyptus-nc ];
then
etc/init.d/eucalyptus-nc stop
fi
# save a backup of important data
DATESTR=`date +%s`
echo /root/eucalyptus.backup.$DATESTR > /tmp/eucaback.dir
mkdir -p /root/eucalyptus.backup.$DATESTR
cd /root/eucalyptus.backup.$DATESTR
EUCABACKUPS=""
for i in $EUCADIR/var/lib/eucalyptus/keys/ $EUCADIR/var/lib/eucalyptus/db/ $EUCADIR/etc/eucalyptus/eucalyptus.conf $EUCADIR/etc/eucalyptus/eucalyptus-version
do
if [ -e $i ]; then
EUCABACKUPS="$EUCABACKUPS $i"
fi
done
tar cf - $EUCABACKUPS 2>/dev/null | tar xf - 2>/dev/null
cd $EUCADIR
fi
%post
# we need a eucalyptus user
if ! getent passwd eucalyptus > /dev/null ; then
%if %is_suse
groupadd eucalyptus
useradd -M eucalyptus -g eucalyptus
%endif
%if %is_centos
adduser -M eucalyptus
%endif
fi
if [ "$1" = "1" ];
then
# let's configure eucalyptus
/usr/sbin/euca_conf -d / --instances /usr/local/eucalyptus/ -hypervisor %{euca_hypervisor} -bridge %{euca_bridge}
fi
if [ "$1" = "2" ];
then
/usr/sbin/euca_conf -d / --instances /usr/local/eucalyptus/ -hypervisor %{euca_hypervisor} -bridge %{euca_bridge}
if [ -f /tmp/eucaback.dir ]; then
BACKDIR=`cat /tmp/eucaback.dir`
if [ -d "$BACKDIR" ]; then
/usr/share/eucalyptus/euca_upgrade --old $BACKDIR --new / --conf --keys
/usr/sbin/euca_conf -setup
fi
fi
fi
# final setup and set the new user
/usr/sbin/euca_conf -setup -user eucalyptus
%post common-java
if [ "$1" = "2" ];
then
if [ -f /tmp/eucaback.dir ]; then
BACKDIR=`cat /tmp/eucaback.dir`
if [ -d "$BACKDIR" ]; then
/usr/share/eucalyptus/euca_upgrade --old $BACKDIR --new / --db
/usr/sbin/euca_conf -setup
fi
fi
fi
chkconfig --add eucalyptus-cloud
%post cloud
/usr/sbin/euca_conf --enable cloud
%if %is_centos
if [ -e /etc/sysconfig/system-config-securitylevel ];
then
if ! grep 8773:tcp /etc/sysconfig/system-config-securitylevel > /dev/null ;
then
echo "--port=8773:tcp" >> /etc/sysconfig/system-config-securitylevel
echo "--port=8443:tcp" >> /etc/sysconfig/system-config-securitylevel
fi
fi
%endif
# upgrade
#if [ "$1" = "2" ];
#then
# if [ -f /tmp/eucaback.dir ]; then
# BACKDIR=`cat /tmp/eucaback.dir`
# if [ -d "$BACKDIR" ]; then
# /usr/share/eucalyptus/euca_upgrade --old $BACKDIR --new / --db
# /usr/sbin/euca_conf -setup
# fi
# fi
# cd /
# [ -e /opt/eucalyptus/etc/eucalyptus/eucalyptus-version ] && cd /opt/eucalyptus
# if [ -e var/lib/eucalyptus/db/eucalyptus_volumes.properties ];
# then
# # if groovy was installed on the same shell the
# # environment can be wrong: we need to souce groovy env
# if [ -e /etc/profile.d/groovy.sh ];
# then
# . /etc/profile.d/groovy.sh
# fi
# /usr/share/eucalyptus/euca_upgrade --old /opt/eucalyptus --new / --db
# fi
#fi
%post walrus
/usr/sbin/euca_conf --enable walrus
%post storage-controller
/usr/sbin/euca_conf --enable sc
%post cluster-controller
chkconfig --add eucalyptus-cc
%if %is_centos
if [ -e /etc/sysconfig/system-config-securitylevel ];
then
if ! grep 8774:tcp /etc/sysconfig/system-config-securitylevel > /dev/null ;
then
echo "--port=8774:tcp" >> /etc/sysconfig/system-config-securitylevel
fi
fi
%endif
#if [ "$1" = "2" ];
#then
# if [ -f /tmp/eucaback.dir ]; then
# BACKDIR=`cat /tmp/eucaback.dir`
# if [ -d "$BACKDIR" ]; then
# echo /usr/share/eucalyptus/euca_upgrade --old $BACKDIR --new / --conf --keys
# fi
# fi
#fi
%post node-controller
chkconfig --add eucalyptus-nc
%if %is_centos
if [ -e /etc/sysconfig/system-config-securitylevel ];
then
if ! grep 8775:tcp /etc/sysconfig/system-config-securitylevel > /dev/null ;
then
echo "--port=8775:tcp" >> /etc/sysconfig/system-config-securitylevel
fi
fi
%endif
%if %is_suse
if [ -e /etc/PolicyKit/PolicyKit.conf ];
then
if ! grep eucalyptus /etc/PolicyKit/PolicyKit.conf > /dev/null ;
then
sed -i '/<config version/ a <match action="org.libvirt.unix.manage">\n <match user="eucalyptus">\n <return result="yes"/>\n </match>\n</match>' /etc/PolicyKit/PolicyKit.conf
fi
fi
%endif
#if [ "$1" = "2" ];
#then
# if [ -f /tmp/eucaback.dir ]; then
# BACKDIR=`cat /tmp/eucaback.dir`
# if [ -d "$BACKDIR" ]; then
# echo /usr/share/eucalyptus/euca_upgrade --old $BACKDIR --new / --conf --keys
# fi
# fi
#fi
%postun
# in case of removal let's try to clean up the best we can
if [ "$1" = "0" ];
then
rm -rf /var/log/eucalyptus
rm -rf /etc/eucalyptus/http*
fi
%preun cloud
if [ "$1" = "0" ];
then
%if %is_centos
if [ -e /etc/sysconfig/system-config-securitylevel ];
then
sed -i '/^--port=8773/ d' /etc/sysconfig/system-config-securitylevel
sed -i '/^--port=8443/ d' /etc/sysconfig/system-config-securitylevel
fi
%endif
[ -x /usr/sbin/euca_conf ] && /usr/sbin/euca_conf --disable cloud
if [ -e /etc/init.d/eucalyptus-cloud -a /etc/eucalyptus/eucalyptus.conf ];
then
/etc/init.d/eucalyptus-cloud restart || true
fi
fi
%preun walrus
if [ "$1" = "0" ];
then
[ -x /usr/sbin/euca_conf ] && /usr/sbin/euca_conf --disable walrus
if [ -e /etc/init.d/eucalyptus-cloud ];
then
/etc/init.d/eucalyptus-cloud restart || true
fi
fi
%preun storage-controller
if [ "$1" = "0" ];
then
[ -x /usr/sbin/euca_conf ] && /usr/sbin/euca_conf --disable sc
if [ -e /etc/init.d/eucalyptus-cloud -a /etc/eucalyptus/eucalyptus.conf ];
then
/etc/init.d/eucalyptus-cloud restart || true
fi
fi
%preun common-java
if [ "$1" = "0" ];
then
if [ -f /etc/eucalyptus/eucalyptus.conf ]; then
/etc/init.d/eucalyptus-cloud stop
fi
chkconfig --del eucalyptus-cloud
rm -f /var/lib/eucalyptus/services
fi
%preun cluster-controller
if [ "$1" = "0" ];
then
if [ -f /etc/eucalyptus/eucalyptus.conf ]; then
/etc/init.d/eucalyptus-cc cleanstop
fi
chkconfig --del eucalyptus-cc
%if %is_centos
if [ -e /etc/sysconfig/system-config-securitylevel ];
then
sed -i '/^--port=8774/ d' /etc/sysconfig/system-config-securitylevel
fi
%endif
fi
%preun node-controller
if [ "$1" = "0" ];
then
if [ -f /etc/eucalyptus/eucalyptus.conf ]; then
/etc/init.d/eucalyptus-nc stop
fi
chkconfig --del eucalyptus-nc
%if %is_centos
if [ -e /etc/sysconfig/system-config-securitylevel ];
then
sed -i '/^--port=8775/ d' /etc/sysconfig/system-config-securitylevel
fi
%endif
fi
%changelog
* Fri Feb 12 2010 Eucalyptus Systems <support at open.eucalyptus.com>
- 1.6.2
- Thanks to Garrett Holmstrom and cloud at lists.fedoraproject.org for
helping with the RPM pacakging
- Re-worked upgrade path for RPM install
- Re-worked spec file to honor DESTDIR
* Thu Nov 5 2009 Eucalyptus Systems <support at open.eucalyptus.com>
- 1.6.1
- install in / instead of /opt/eucalyptus
* Mon Jun 15 2009 eucalyptus systems <support at open.eucalyptus.com>
- 1.5.2
* Thu Apr 16 2009 mayhem group <support at open.eucalyptus.com>
- 1.5.1
- Elastic Block Store (EBS) support (volumes & snapshots)
- Better Java installation checking
- New command-line administration: euca_conf -addcluster ... -addnode ...
- Non-root user deployment of Eucalyptus
- Binary packages for more distributions (Ubuntu et al)
- Cloud registration with Rightscale (from admin's 'Credentials' tab)
- New configuration options for Walrus
- Better screening of usernames
- Fixed account confirmation glitches
* Mon Jan 5 2009 mayhem group <support at open.eucalyptus.com>
- 1.4
- Added new networking subsystem that no longer depends on VDE
- Added support for elastic IP assignment and security using the 'MANAGED'
networking mode
- Added Walrus: a Amazon S3 interface compatible storage manager. Walrus
handles storage of user data as well as filesystem images, kernels, and
ramdisks.
- Support for new operations: reboot instance and get console output.
- Revamped logging throughout, with five levels a la log4j.
* Thu Aug 28 2008 mayhem group <support at open.eucalyptus.com>
- 1.3
* Mon Jul 28 2008 mayhem group <support at open.eucalyptus.com>
- 1.2
- Removed cloud, cluster controller and node controller and created their
own packages.
- Added the possibility of installing Eucalyptus from RPMs (without ROCKS).
- Added WS-security for internal communication
- Added URL Query Interface for interacting with Eucalyptus
- Cluster Controller improvements:
- Instance caching added to improve performance under
certain conditions
- Thread locks removed to improve performance
- NC resource information gathered asynchronously to
improve scheduler performance
- Network control improvements:
- Added ability to configure 'public' instance interface
network parameters (instead of hardcoded 10. network)
- Lots of reliability changes
- Cloud Controller improvements:
- Pure in-memory database
- Image registration over WS interface
- Improved build procedure
- Web interface improvements:
- For all users (query interface credentials, listing of
available images)
- For the administrator (addition, approval, disabling,
and deletion of users; disabling of images)
- Numerous bug fixes, improving stability and performance.
In particular, but not limited to:
- Recovering Cloud Controller system state
- Timeout-related error reporting
- Slimmer log files, with timestamps
More information about the cloud
mailing list