Buildbot Setup for Virtual Machines - Debian 7 "wheezy"
Contents
Installazione base
qemu-img create -f qcow2 /kvm/vms/vm-wheezy-amd64-serial.qcow2 10G qemu-img create -f qcow2 /kvm/vms/vm-wheezy-i386-serial.qcow2 10G
Avviare ogni VM dall'iso di installazione del server e seguire queste istruzioni:
kvm -m 1024 -hda /kvm/vms/vm-wheezy-amd64-serial.qcow2 -cdrom /kvm/iso/debian-testing-amd64-CD-1.iso -redir tcp:2269::22 -boot d -smp 2 -cpu qemu64 -net nic,model=virtio -net user kvm -m 1024 -hda /kvm/vms/vm-wheezy-i386-serial.qcow2 -cdrom /kvm/iso/debian-testing-i386-CD-1.iso -redir tcp:2270::22 -boot d -smp 2 -cpu qemu64 -net nic,model=virtio -net user
Una volta avviato, riconnettersi con il server VNC dall'host locale:
vncviewer -via ${host-remoto} localhost
Sostituire ${host-remoto} con l'host su cui gira la VM.
Nota: Quando si avvia l'installazione, vncviewer potrebbe disconnettersi dicendo che il rect è troppo grande. Va tutto bene. Debian ha semplicemente ridimensionato lo schermo vnc. Basta riconnettersi.
Installare, mantenendo perloppiù le opzioni predefinite, con qualche accorgimento:
- Impostare il nome host a debian7-wheezy-amd64 o debian7-wheezy-i386
- Quando si partizionano i dischi, scegliere "Guided - use entire disk" (non vogliamo LVM)
- Schema di partizionamento: tutti i file una partizione
- Nessun CD aggiuntivo
- Configurare un mirror di rete
- Schermata di selezione del Software
- Deselezionare "Debian desktop environment"
- Deselezionare "Print server"
- Mantenere "SSH server" e "Standard system utilities"
Al termine dell'installazione, l'installer tenta di riavviare e fallisce. Va bene così, terminare il processo kvm sul server host.
Ora che la VM è installata, è tempo di configurarla. Se si ha abbastanza memoria si possono eseguire le seguenti operazioni simultaneamente:
kvm -m 1024 -hda /kvm/vms/vm-wheezy-amd64-serial.qcow2 -redir tcp:2269::22 -boot c -smp 2 -cpu qemu64 -net nic,model=virtio -net user -nographic kvm -m 1024 -hda /kvm/vms/vm-wheezy-i386-serial.qcow2 -redir tcp:2270::22 -boot c -smp 2 -cpu qemu64 -net nic,model=virtio -net user -nographic ssh -p 2269 localhost # modificare /boot/grub/menu.lst and visudo, vedi sotto ssh -p 2270 localhost # modificare /boot/grub/menu.lst and visudo, vedi sotto ssh -t -p 2269 localhost "mkdir -v .ssh" ssh -t -p 2270 localhost "mkdir -v .ssh" scp -P 2269 /kvm/vms/authorized_keys localhost:.ssh/ scp -P 2270 /kvm/vms/authorized_keys localhost:.ssh/ echo $'Buildbot\n\n\n\n\ny' | ssh -p 2269 localhost 'chmod -vR 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 2270 localhost 'chmod -vR 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 2269 /kvm/vms/ttyS0.conf buildbot@localhost: scp -P 2270 /kvm/vms/ttyS0.conf buildbot@localhost: ssh -p 2269 buildbot@localhost 'sudo cp -vi ttyS0.conf /etc/init/; rm -v ttyS0.conf; sudo shutdown -h now' ssh -p 2270 buildbot@localhost 'sudo cp -vi ttyS0.conf /etc/init/; rm -v ttyS0.conf; sudo shutdown -h now'
Abilitare sudo senza password:
su - vi /etc/apt/sources.list #commentare la riga deb cdrom apt-get update apt-get install sudo vim tree update-alternatives --config editor # selezionare vim.basic visudo # commentare la riga %sudo e aggiungere: %sudo ALL=NOPASSWD: ALL usermod -a -G sudo ${username}
Modificare /boot/grub/menu.lst:
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" update-grub # uscire e tornare al server
VM per compilare i .deb
for i in '/kvm/vms/vm-wheezy-amd64-serial.qcow2 2269 qemu64' '/kvm/vms/vm-wheezy-i386-serial.qcow2 2270 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/')" \ "= scp -P $2 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /kvm/boost_1_49_0.tar.gz buildbot@localhost:/dev/shm/" \ "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 dpatch ghostscript-x libfontenc1 libjpeg62 libltdl-dev libltdl7 libmail-sendmail-perl libxfont1 lmodern texlive-latex-base-doc ttf-dejavu ttf-dejavu-extra libaio-dev xfonts-encodings xfonts-utils" \ "cd /usr/local/src;sudo tar zxf /dev/shm/boost_1_49_0.tar.gz;cd /usr/local/include/;sudo ln -vs ../src/boost_1_49_0/boost ." ; \ done
VM per testare l'installazione
Si veda Configurare Buildbot per le Macchine Virtuali - Principi generali per sapere come ottenere my.seed
e sources.append
.
for i in '/kvm/vms/vm-wheezy-amd64-serial.qcow2 2269 qemu64' '/kvm/vms/vm-wheezy-i386-serial.qcow2 2270 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
VM per testare l'aggiornamento da MySQL
for i in '/kvm/vms/vm-wheezy-amd64-install.qcow2 2269 qemu64' '/kvm/vms/vm-wheezy-i386-install.qcow2 2270 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
La VM per l'aggiornamento degli upgrade di MariaDB non è stata compilata. Quando i pacchetti di MariaDB Wheezy saranno disponibili, questa VM verrà compilata.
VM per testare l'aggiornamento di MariaDB
Le istruzioni qui sotto sono basate su quelle per Natty, su Installare le immagini delle VM per testare l'aggiornamento dei .deb.
for i in '/kvm/vms/vm-wheezy-amd64-serial.qcow2 2269 qemu64' '/kvm/vms/vm-wheezy-i386-serial.qcow2 2270 qemu64' ; do \ set $i; \ runvm --user=buildbot --logfile=kernel_$2.log --base-image=$1 --port=$2 --cpu=$3 "$(echo $1 | sed -e 's/serial/upgrade2/')" \ "= scp -P $2 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /kvm/vms/mariadb-squeeze.list buildbot@localhost:/tmp/tmp.list" \ 'sudo mv -vi /tmp/tmp.list /etc/apt/sources.list.d/' \ '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-server-5.5 mariadb-client mariadb-client-5.5 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'; \ done
Aggiungere le chiavi a known_hosts
Seguire queste istruzioni su ogni host per aggiungere le VM a known_hosts.
# wheezy-amd64 cp -avi /kvm/vms/vm-wheezy-amd64-install.qcow2 /kvm/vms/vm-wheezy-amd64-test.qcow2 kvm -m 1024 -hda /kvm/vms/vm-wheezy-amd64-test.qcow2 -redir tcp:2269::22 -boot c -smp 2 -cpu qemu64 -net nic,model=virtio -net user -nographic sudo su - buildbot ssh -p 2269 buildbot@localhost sudo shutdown -h now rm -v /kvm/vms/vm-wheezy-amd64-test.qcow2 # wheezy-i386 cp -avi /kvm/vms/vm-wheezy-i386-install.qcow2 /kvm/vms/vm-wheezy-i386-test.qcow2 kvm -m 1024 -hda /kvm/vms/vm-wheezy-i386-test.qcow2 -redir tcp:2270::22 -boot c -smp 2 -cpu qemu64 -net nic,model=virtio -net user -nographic sudo su - buildbot ssh -p 2270 buildbot@localhost sudo shutdown -h now rm -v /kvm/vms/vm-wheezy-i386-test.qcow2