Hey,
Before hacking on Aeolus, I wanted to have a dev setup where:
- I build and run all the main Aeolus-specific bits from git, to make
it easy to debug and modify anything I need. I figure I want
conductor, deltacloud, iwhd and image factory
- I want to do as much as non-root as possible to avoid needing to
change system configuration or screwing up a RPM/puppet install
of Aeolus
- I want to have all the various daemons running in the foreground to
make it easy to keep an eye on logs, kill them if needed or debug
them
- I want to avoid as much "magic" going on as possible - even if
means making some work for myself, I'd prefer to get a feel for all
the pieces of the system rather than having something done
automatically that I don't know about
My notes below. I'd have put them here:
http://www.aeolusproject.org/page/Development_Setup
but perhaps this is too sadistic a setup to be generally recommended?
Thoughts?
Cheers,
Mark.
First up, we need to enable the aeolus RPM repository which we'll pull
various dependencies from:
$> sudo wget -O /etc/yum.repos.d/fedora-aeolus.repo
http://repos.fedorapeople.org/repos/aeolus/packages/fedora-aeolus.repo
Next, create an aeolus directory:
$> mkdir aeolus
Set up image factory:
$> cd aeolus
$> git clone
git://github.com/jacobian/python-cloudservers.git
$> git clone
git://github.com/clalancette/oz.git
$> git clone
git://github.com/aeolusproject/image_factory
$> yum install -y python-qmf python-zope-interface python-libguestfs
$> service qpidd start
$> cd image_factory
$> PYTHONPATH=../oz/:../python-cloudservers/ ./imgfac.py --debug --foreground --qmf
IWHD:
$> cd aeolus
$> git clone
git://git.fedorahosted.org/iwhd.git
$> yum install -y jansson-devel libmicrohttpd-devel hail-devel gc-devel gperf
mongodb-devel
$> cd iwhd
$> ./boostrap
$> ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
$> make check
$> ./iwhd -a
Deltacloud:
$> cd aeolus
$> git clone
git://git.apache.org/deltacloud.git
$> yum install -y rubygem-net-ssh rubygem-haml
$> cd deltacloud/server
$> ./bin/deltacloudd -i mock -p 3002
$> ./bin/deltacloudd -i ec2 -p 3003 --provider us-east-1
$> ./bin/deltacloudd -i ec2 -p 3004 --provider us-west-1
Conductor:
$> cd aeolus
$> git clone
git://git.fedorahosted.org/git/aeolus/conductor.git -b next
$> cd conductor
$> yum install -y rubygem-delayed_job ruby-sqlite3 rubygem-net-scp
$> yum install -y rubygem-sunspot_rails
$> cp config/database.sqlite config/database.yml
$> rake sunspot:solr:start
$> rake dc:setup
$> rake sunspot:reindex
$> ./script/server -P /conductor server
Condor:
$> cd aeolus/conductor
$> yum install -u classads-devel rest-devel
$> ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$> make install # as root
$> cp
~markmc/projects/aeolus/configure/recipes/aeolus_recipe/files/condor_config.local
/var/lib/condor/condor_config.local
$> service condor start
Check for any stale jobs and remove them:
$> condor_q
$> condor_rm -all
dbomatic:
$> cd aeolus/conductor/src/dbomatic
$> ./dbomatic -f . -r . -l - -n
condor_refreshd:
$> cd aeolus/conductor/src/condor_refreshd
$> ./condor_refreshd -f . -l - -n
warehouse_sync:
$> cd aeolus/conductor/src/warehouse_sync
$> ./warehouse_sync-server -f . -l - -n
delayed_job:
$> cd aeolus/conductor/src
$> ./script/delayed_job run
Set up providers and a hardware profile:
$> /usr/bin/curl -c /tmp/aeolus-admin.cookie -f -i --location --post301 --post302 -d
user_session[login]=admin -d user_session[password]=password -d commit=submit -X POST
http://localhost:3000/user_session
$> /usr/bin/curl -b /tmp/aeolus-admin.cookie -f -i --silent --location --post301
--post302 -H 'Accept: application/xml' -d provider[name]=mock -d
provider[url]=http://localhost:3002/api -d provider[provider_type_codename]=mock -X POST
http://localhost:3000/admin/providers
$> /usr/bin/curl -b /tmp/aeolus-admin.cookie -f -i --silent --location --post301
--post302 -H 'Accept: application/xml' -d provider[name]=ec2-us-east-1 -d
provider[url]=http://localhost:3003/api -d provider[provider_type_codename]=ec2 -X POST
http://localhost:3000/admin/providers
$> /usr/bin/curl -b /tmp/aeolus-admin.cookie -f -i --silent --location --post301
--post302 -H 'Accept: application/xml' -d provider[name]=ec2-us-west-1 -d
provider[url]=http://localhost:3004/api -d provider[provider_type_codename]=ec2 -X POST
http://localhost:3000/admin/providers
$> /usr/bin/curl -b /tmp/aeolus-admin.cookie -f -i --silent --location --post301
--post302 -H 'Accept: application/xml' -d hardware_profile[name]=hwp1 -d
hardware_profile[memory_attributes][value]=1 -d hardware_profile[cpu_attributes][value]=1
-d hardware_profile[storage_attributes][value]=1 -d
hardware_profile[architecture_attributes][value]=x86_64 -d
hardware_profile[memory_attributes][name]=memory -d
hardware_profile[memory_attributes][unit]=MB -d hardware_profile[cpu_attributes][name]=cpu
-d hardware_profile[cpu_attributes][unit]=count -d
hardware_profile[storage_attributes][name]=storage -d
hardware_profile[storage_attributes][unit]=GB -d
hardware_profile[architecture_attributes][name]=architecture -d
hardware_profile[architecture_attributes][unit]=label -d commit=Save -X POST
http://localhost:3000/admin/hardware_profiles
$> /usr/bin/curl -c /tmp/aeolus-admin.cookie -f -i --location
http://localhost:3000/logout
Now you should be able to login through
http://localhost:3000 with
username 'admin' and password 'password'.
Do some basic testing by:
1) Adding a provider account for each of the three providers
2) Importing an image from
http://fedoraproject.org/wiki/Cloud_SIG/EC2_Images
3) Starting an EC2 instance the image