XenServer/Development
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
- Download: http://sourceforge.net/projects/openxenmanager/
- Compile pygtk:
sudo port install py26-gtk
- Open a X11 shell and go to the openxenmanager directory
- Run OpenXenManager:
python window.py