====== Kopiluwak: The Build Machine ======
===== Hardware ======
* HP DL145 G3
* Firmware based on coreboot [[http://www.coreboot.org/HP_DL145_G3|Coreboot page on HP DL145 g3]]
* original bios did not support hardware virtualisation
* bootloader is embedded in the firmware and is similar to grub. Config file in /boot/filo/menu.lst .
* Dual Opteron 2218HE
* 8GB reg ecc ram (kingston)
* dual 200GB sata drives (software raid 1)
===== Idea ======
The machine hosts virtual machines. Other than that no functionality runs on the machine.
===== Host =====
==== Software ====
^ software ^ version ^ website ^
| Lunar Linux | 1.6.4 x86_64 | [[http://lunar-linux.org]] |
| Linux | 2.6.30.5 | |
| kvm | 88 | [[http://kvm.qumranet.com]] |
| vde | 2.2.2 | [[http://vde.sourceforge.net]] |
| lvm2 | 2.02.45 | [[http://sources.redhat.com/lvm2]] |
| tunctl | 1.5 | [[http://tunctl.sourceforge.net]] |
==== Configuration ====
=== Storage ===
* root and boot
| /dev/md1 | / | ext3 |
| /dev/md0 | /boot | ext3 |
* var, home, luns for vm's
VolumeGroup: vg on /dev/md2
| /dev/mapper/vg-home | /home | ext4 |
| /dev/mapper/vg-var | /var | ext4 |
=== Network ===
* eth0 - bridged to br0, ip assigned with dhcp
* br0: run script in screen
#!/bin/bash
if [ $TERM == screen ]; then
/usr/bin/killall dhcpcd
/bin/rm -fr /var/db/dhcpcd*
/sbin/modprobe tun
/usr/sbin/tunctl -t tap0
/usr/sbin/brctl addbr br0
/usr/sbin/brctl addif br0 eth0
/usr/sbin/brctl addif br0 tap0
/sbin/ifconfig eth0 0.0.0.0 promisc up #still need to test if promisc is needed
/sbin/ifconfig tap0 0.0.0.0 promisc up #still need to test if promisc is needed
/sbin/ifconfig br0 up
/usr/sbin/dhcpcd br0
echo "Sleep for 5 minutes, Ctrl ^ C to stop, will revert changes if you don't"
sleep 5m
echo "revert changes"
/sbin/ifconfig br0 down
/usr/bin/killall dhcpcd
/bin/rm -fr /var/db/dhcpcd*
/usr/sbin/brctl delif br0 eth0
/usr/sbin/brctl delif br0 tap0
/usr/sbin/brctl delbr br0
/usr/sbin/tunctl -d tap0
/sbin/ifconfig eth0 up
/usr/sbin/dhcpcd eth0
echo "Sleep for 5 minutes, Ctrl ^ C to stop, will revert changes if you don't"
sleep 5m
echo "reboot"
/sbin/reboot
else
echo "USE SCREEN";
fi
* vde_switch: Switch that the virtual machines (buildslaves) will use to communicate with the buildmaster.
vde_switch -tap tap1 -daemon;
ifconfig tap1 10.0.0.1;
echo "1" > /proc/sys/net/ipv4/ip_forward;
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
===== Hosted Virtual Machines =====
==== Guest 1: buildbot.xfce.org ====
=== Configuration ===
== Start the machine ==
#!/bin/bash
# This script starts the buildbot
vdeq qemu-system-x86_64 -vnc :1 -hda /dev/vg/BuildBot -m 512 -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=no -net vde,vlan=1 -net nic,vlan=1 -daemonize
== network ==
* eth0: fixed ip - external ip (dns: buildbot.xfce.org)
* eth1: internal nic connected to the virtual switch (ip: 10.0.0.2)
== software ==
* buildbot 0.7.10p1
== config buildbot ==
* create the user buildmaster
* Create instance of buildbot:
buildbot create-master /home/buildmaster/xfce
* start the buildbot instance:
buildbot start /home/buildmaster/xfce
* configure the buildbot instance: edit master.cfg
* validate the edits:
buildbot checkconfig master.cfg
* reread the config in the current instance:
buildbot reconfig /home/buildmaster/xfce
* master.cfg:
==== Guest 2: buildslave ====
lunar
ip 10.0.0.3
vdeq qemu-system-x86_64 -vnc :2 -hda /dev/vg/lunar -m 512 -net vde,vlan=1 -net nic,vlan=1 -daemonize