Configurazione di Buildbot per le Macchine Virtuali - Ubuntu 12.04 "precise"
Contents
Installazione base
qemu-img create -f qcow2 /kvm/vms/vm-precise-amd64-serial.qcow2 8G qemu-img create -f qcow2 /kvm/vms/vm-precise-i386-serial.qcow2 8G
Avviare le VM facendole partire dall'immagine iso di installazione del server, una per una, ed eseguire la seguente procedura di installazione:
kvm -m 1024 -hda /kvm/vms/vm-precise-amd64-serial.qcow2 -cdrom /kvm/iso/ubuntu/ubuntu-12.04-server-amd64.iso -redir tcp:22255::22 -boot d -smp 2 -cpu qemu64 -net nic,model=virtio -net user kvm -m 1024 -hda /kvm/vms/vm-precise-i386-serial.qcow2 -cdrom /kvm/iso/ubuntu/ubuntu-12.04-server-i386.iso -redir tcp:22256::22 -boot d -smp 2 -cpu qemu32,-nx -net nic,model=virtio -net user
Una volta che sono in esecuzione, si può connettersi al server VNC dall'host locale:
vncviewer -via ${remote-host} localhost
Sostituire ${remote-host} con l'host su cui la VM è in esecuzione.
Nota: Quando si attiva l'installazione, vncviewer potrebbe disconnettersi dicendo che il rect è troppo grande. Va tutto bene. Ubuntu ha solo ridimensionato lo schermo vnc. basta riconnettersi.
Installare mantenendo per lo più le opzioni predefinite, ma con quale accorgimento:
- Impostare l'hostname a ubuntu-precise
- Quando si partizionano i dischi, scegliere "Guided - use entire disk" (non vogliamo LVM)
- Nessun aggiornamento automatico
- Scegliere il software da installare: OpenSSH server
Adesso che la VM è installata, occorre configurarla. Se si ha abbastanza memoria, si può eseguire quanto segue simultaneamente:
kvm -m 1024 -hda /kvm/vms/vm-precise-amd64-serial.qcow2 -cdrom /kvm/iso/ubuntu/ubuntu-12.04-server-amd64.iso -redir tcp:22255::22 -boot c -smp 2 -cpu qemu64 -net nic,model=virtio -net user -nographic kvm -m 1024 -hda /kvm/vms/vm-precise-i386-serial.qcow2 -cdrom /kvm/iso/ubuntu/ubuntu-12.04-server-i386.iso -redir tcp:22256::22 -boot c -smp 2 -cpu qemu64 -net nic,model=virtio -net user -nographic ssh -p 22255 localhost # modificare /boot/grub/menu.lst and visudo, vedi sotto ssh -p 22256 localhost # modificare /boot/grub/menu.lst and visudo, vedi sotto ssh -t -p 22255 localhost "mkdir -v .ssh; sudo addgroup $USER sudo" ssh -t -p 22256 localhost "mkdir -v .ssh; sudo addgroup $USER sudo" scp -P 22255 /kvm/vms/authorized_keys localhost:.ssh/ scp -P 22256 /kvm/vms/authorized_keys localhost:.ssh/ echo $'Buildbot\n\n\n\n\ny' | ssh -p 22255 localhost 'chmod -R go-rwx .ssh; sudo adduser --disabled-password buildbot; sudo addgroup buildbot sudo; sudo mkdir ~buildbot/.ssh; sudo cp -vi .ssh/authorized_keys ~buildbot/.ssh/; sudo chown -vR buildbot:buildbot ~buildbot/.ssh; sudo chmod -vR go-rwx ~buildbot/.ssh' echo $'Buildbot\n\n\n\n\ny' | ssh -p 22256 localhost 'chmod -R go-rwx .ssh; sudo adduser --disabled-password buildbot; sudo addgroup buildbot sudo; sudo mkdir ~buildbot/.ssh; sudo cp -vi .ssh/authorized_keys ~buildbot/.ssh/; sudo chown -vR buildbot:buildbot ~buildbot/.ssh; sudo chmod -vR go-rwx ~buildbot/.ssh' scp -P 22255 /kvm/vms/ttyS0.conf buildbot@localhost: scp -P 22256 /kvm/vms/ttyS0.conf buildbot@localhost: ssh -p 22255 buildbot@localhost 'sudo cp -vi ttyS0.conf /etc/init/; rm -v ttyS0.conf; sudo shutdown -h now' ssh -p 22256 buildbot@localhost 'sudo cp -vi ttyS0.conf /etc/init/; rm -v ttyS0.conf; sudo shutdown -h now'
Abilitare sudo senza password:
sudo VISUAL=vi visudo # Add line at end: `%sudo ALL=NOPASSWD: ALL'
Modificare /boot/grub/menu.lst:
sudo vi /etc/default/grub # Aggiungere/modificare queste voci: GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8" GRUB_TERMINAL="serial" GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" sudo update-grub
VM per creare i .deb
for i in '/kvm/vms/vm-precise-amd64-serial.qcow2 22255 qemu64' '/kvm/vms/vm-precise-i386-serial.qcow2 22256 qemu64' ; do \ set $i; \ runvm --user=buildbot --logfile=kernel_$2.log --base-image=$1 --port=$2 --cpu=$3 "$(echo $1 | sed -e 's/serial/build/')" \ "sudo DEBIAN_FRONTEND=noninteractive apt-get update" \ "sudo DEBIAN_FRONTEND=noninteractive apt-get -y build-dep mysql-server-5.5" \ "sudo DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts hardening-wrapper fakeroot doxygen texlive-latex-base ghostscript libevent-dev libssl-dev zlib1g-dev libpam0g-dev libreadline-gplv2-dev autoconf automake automake1.9 defoma dpatch ghostscript-x libfontenc1 libjpeg62 libltdl-dev libltdl7 libmail-sendmail-perl libxfont1 lmodern psfontmgr texlive-latex-base-doc ttf-dejavu ttf-dejavu-extra libaio-dev xfonts-encodings xfonts-utils" ; \ done
Si veda anche:
VM per testare l'installazione
Si veda Configurare Buildbot per le Macchine Virtuali - Principi generali per sapere come creare my.seed
e sources.append
.
for i in '/kvm/vms/vm-precise-amd64-serial.qcow2 22255 qemu64' '/kvm/vms/vm-precise-i386-serial.qcow2 22256 qemu64' ; do \ set $i; \ runvm --user=buildbot --logfile=kernel_$2.log --base-image=$1 --port=$2 --cpu=$3 "$(echo $1 | sed -e 's/serial/install/')" \ "sudo DEBIAN_FRONTEND=noninteractive apt-get update" \ "sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libaio1 debconf-utils" \ "= scp -P $2 /kvm/vms/my.seed /kvm/vms/sources.append buildbot@localhost:/tmp/" \ "sudo debconf-set-selections /tmp/my.seed" \ "sudo sh -c 'cat /tmp/sources.append >> /etc/apt/sources.list'"; \ done
VMs per testare l'aggiornamento da MySQL
for i in '/kvm/vms/vm-precise-amd64-install.qcow2 22255 qemu64' '/kvm/vms/vm-precise-i386-install.qcow2 22256 qemu64' ; do \ set $i; \ runvm --user=buildbot --logfile=kernel_$2.log --base-image=$1 --port=$2 --cpu=$3 "$(echo $1 | sed -e 's/install/upgrade/')" \ 'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libaio1 mysql-server-5.5' \ 'mysql -uroot -prootpass -e "create database mytest; use mytest; create table t(a int primary key); insert into t values (1); select * from t"' ;\ done
VM per testare l'aggiornamento da MariaDB
La procedura sotto è basata su quella di Natty, si veda Installare le immagini delle VM per testare l'aggiornamento dei .deb.
Ubuntu precise a 64 bit:
qemu-img create -b vm-precise-amd64-install.qcow2 -f qcow2 vm-precise-amd64-upgrade2.qcow2 kvm -m 512 -hda vm-precise-amd64-upgrade2.qcow2 -redir 'tcp:22200::22' -boot c -smp 1 -cpu qemu64 -net nic,model=virtio -net user -nographic ssh -p 22200 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no buildbot@localhost sudo sh -c 'cat > /etc/apt/sources.list.d/tmp.list' deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu oneiric main deb-src http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu oneiric main sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB sudo apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated mariadb-server mariadb-test libmariadbclient-dev sudo apt-get -f install mysql -uroot -prootpass -e "create database mytest; use mytest; create table t(a int primary key); insert into t values (1); select * from t" sudo rm /etc/apt/sources.list.d/tmp.list sudo apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libaio1 sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y sudo shutdown -h now
Ubuntu precise a 32 bit:
qemu-img create -b vm-precise-i386-install.qcow2 -f qcow2 vm-precise-i386-upgrade2.qcow2 kvm -m 512 -hda vm-precise-i386-upgrade2.qcow2 -redir 'tcp:22200::22' -boot c -smp 1 -cpu qemu64 -net nic,model=virtio -net user -nographic ssh -p 22200 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no buildbot@localhost sudo sh -c 'cat > /etc/apt/sources.list.d/tmp.list' deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu oneiric main deb-src http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu oneiric main sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1BB943DB sudo apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated mariadb-server mariadb-test libmariadbclient-dev sudo apt-get -f install mysql -uroot -prootpass -e "create database mytest; use mytest; create table t(a int primary key); insert into t values (1); select * from t" sudo rm /etc/apt/sources.list.d/tmp.list sudo apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libaio1 sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y sudo shutdown -h now