Jump to: navigation, search

XenServer/Development

< XenServer
Revision as of 00:00, 1 January 1970 by (talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

XenServer Development

<<TableOfContents()>>

Prepare Nova

Install dependencies

sudo apt-get install bzr mysql-server build-essential rabbitmq-server euca2ools unzip
sudo apt-get install python-twisted python-gflags python-carrot python-eventlet python-ipy python-sqlalchemy python-mysqldb python-webob python-redis python-mox python-routes python-daemon python-boto


Setup development branch

mkdir ~/openstack && cd ~/openstack

bzr whoami "Your Name <first.last@doman.tld>"
bzr lp-login <LP ID>
bzr init-repo .

bzr branch lp:nova


Setup MySQL

mysql -u root -p
create database nova;
exit


Configure Nova flags

cd nova

cat > ../nova.conf << EOF
--verbose
--nodaemon
--sql_connection=mysql://root:<password>@127.0.0.1/nova
--network_manager=nova.network.manager.FlatManager
--flat_network_bridge=xenbr0
--s3_host=<nova-objectstore IP>
--connection_type=xenapi
--xenapi_connection_url=https://<XenServer IP>
--xenapi_connection_username=root
--xenapi_connection_password=password
EOF


Install XenAPI

wget -O XenAPI.py "http://community.citrix.com/download/attachments/38633496/XenAPI.py?version=1"
sudo mv ./XenAPI.py /usr/lib/python-2.6/<site-packages|dist-packages>


Ensure tests pass

python run_tests.py


Test XenAPI

python
import XenAPI
import nova.virt.xenapi_conn
nova.virt.xenapi_conn.XenAPI = XenAPI
x = nova.virt.xenapi_conn.XenAPIConnection("https://<XenServer IP>", "root", "password")
x.list_instances()

# After XenTools are installed on the instance
x.get_diagnostics("instance-<id>")


Setup Nova

cd ./CA && ./genrootca.sh && cd ..

./bin/nova-manage --flagfile=../nova.conf user admin <name>
./bin/nova-manage --flagfile=../nova.conf project create <project> <name>
./bin/nova-manage --flagfile=../nova.conf network create 10.0.0.0/8 3 16
./bin/nova-manage --flagfile=../nova.conf project zip <project> <name>

unzip nova.zip
. novarc


Run Nova

screen  # each process gets its own window

./bin/nova-api --flagfile=../nova.conf
./bin/nova-objectstore --flagfile=../nova.conf
./bin/nova-compute --flagfile=../nova.conf
./bin/nova-network --flagfile=../nova.conf
./bin/nova-scheduler --flagfile=../nova.conf


Prepare XenServer

Install Nova plugin

cd ~/openstack/nova/plugins/xenapi
scp -r etc/ root@<XenServer IP>:/

ssh root@<XenServer IP> chmod u+x /etc/xapi.d/plugins/objectstore
ssh root@<XenServer IP> sed -i -e "s/enabled=0/enabled=1/" /etc/yum.repos.d/CentOS-Base.repo
ssh root@<XenServer IP> yum install parted


Instance Management

Prepare Images

mkdir ~/openstack/images && cd ~/openstack/images

wget -q -O - http://173.203.107.207/ubuntu-lucid.tar | tar xSv

euca-bundle-image -i vmlinuz-2.6.32-23-server --kernel true
euca-bundle-image -i initrd.img-2.6.32-23-server --ramdisk true
euca-bundle-image -i ubuntu-maverick.img

BUCKET=<name>

euca-upload-bundle -b ${BUCKET} -m /tmp/vmlinuz-2.6.32-23-server.manifest.xml
euca-upload-bundle -b ${BUCKET} -m /tmp/initrd.img-2.6.32-23-server.manifest.xml
euca-upload-bundle -b ${BUCKET} -m /tmp/ubuntu-maverick.img.manifest.xml

euca-register ${BUCKET}/vmlinuz-2.6.32-23-server.manifest.xml
euca-register ${BUCKET}/initrd.img-2.6.32-23-server.manifest.xml
euca-register ${BUCKET}/ubuntu-maverick.img.manifest.xml


Run Instance

euca-describe-images
euca-run-instances <machine ID> --kernel <kernel ID> --ramdisk <ramdisk ID>
euca-describe-instances

ssh root@<XenServer IP> xe vm-list
ssh root@<XenServer IP> xe vm-param-set uuid=<instance UUID> PV-args="console=hvc0 xencons=tty clocksource=jiffies root=/dev/xvda1"

euca-reboot-instances <instance ID>
euca-describe-instances


Connect to instance console

ssh root@<XenServer IP> netstat -tuanp | grep vncterm
ssh -L 590N:localhost:590N root@<XenServer IP>
vnc://localhost:590N


Install XenTools

Make xs-tools.iso available to the instance in XenCenter, OpenXenManager or the CLI (not documented here) before proceeding.


ssh root@<instance IP>
mount /dev/xvdb /mnt
cd /mnt/Linux
dpkg -i ./xe-guest-utilities_5.5.0-464_amd64.deb
update-rc.d -f xe-linux-distribution remove
update-rc.d xe-linux-distribution defaults
reboot


Install OpenXenManager on OS X

  1. Download: http://sourceforge.net/projects/openxenmanager/
  2. Compile pygtk:
sudo port install py26-gtk
  1. Open a X11 shell and go to the openxenmanager directory
  2. Run OpenXenManager:
python window.py