Настройка Buildbot для виртуальных машин — Fedora 19
Базовая установка
qemu-img create -f qcow2 /kvm/vms/vm-fedora19-i386-serial.qcow2 20G qemu-img create -f qcow2 /kvm/vms/vm-fedora19-amd64-serial.qcow2 20G
Запустите каждую ВМ, загрузив образ сервера по одному, и выполните следующие шаги установки:
kvm -m 2048 -hda /kvm/vms/vm-fedora19-i386-serial.qcow2 -cdrom /ds413/iso/fedora/Fedora-19-i386-DVD.iso -redir tcp:2289::22 -boot d -smp 2 -cpu qemu64 -net nic,model=virtio -net user kvm -m 2048 -hda /kvm/vms/vm-fedora19-amd64-serial.qcow2 -cdrom /ds413/iso/fedora/Fedora-19-x86_64-DVD.iso -redir tcp:2290::22 -boot d -smp 2 -cpu qemu64 -net nic,model=virtio -net user
После запуска вы можете подключиться к серверу VNC из вашего хоста с помощью:
vncviewer -via ${remote-host} localhost
Замените ${remote-host} на хост, на котором запущена ВМ.
Примечание: При активации установки, vncviewer может отключиться с сообщением о том, что прямоугольник слишком большой. Это нормально. Установщик Fedora просто изменил размер экрана vnc. Просто переподключитесь.
Установите, в основном выбрав параметры по умолчанию, с учетом следующих замечаний:
- В разделе «Настройка сети» установите имена хостов на fedora19-amd64 и fedora19-i386
- Измените «Выбор программного обеспечения» на «Минимальная установка» (по умолчанию — «Рабочий стол Gnome»)
- В разделе «Место назначения установки» выберите диск, затем нажмите «Продолжить».
- Не выбирайте флажок шифрования
- На экране «Параметры установки» разверните блок «Настройка схемы разделов» и выберите тип раздела «Стандартный раздел»
- Во время установки задайте пароль root и начального пользователя
После завершения установки вам будет предложено перезагрузить систему. Сделайте это, но это не удастся. Удалите ВМ (после неудачной перезагрузки) и запустите её снова:
kvm -m 2048 -hda /kvm/vms/vm-fedora19-i386-serial.qcow2 -redir tcp:2289::22 -boot c -smp 2 -cpu qemu64 -net nic,model=virtio -net user kvm -m 2048 -hda /kvm/vms/vm-fedora19-amd64-serial.qcow2 -redir tcp:2290::22 -boot c -smp 2 -cpu qemu64 -net nic,model=virtio -net user
Войдите в систему, используя начального пользователя, созданного во время установки:
ssh -p 2289 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/buildbot.id_dsa localhost ssh -p 2290 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/buildbot.id_dsa localhost
После входа в систему добавьте начального пользователя в группу «wheel».
usermod -a -G wheel ${username}
Включите безпарольный sudo для группы «wheel» и sudo для последовательного консольного доступа:
visudo # Uncomment the line "%wheel ALL=(ALL) NOPASSWD: ALL" # Comment out this line: # Defaults requiretty
Отредактируйте /boot/grub/menu.lst:
sudo vi /etc/default/grub
# Add/edit these entries:
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"
grub2-mkconfig -o /boot/grub2/grub.cfg
Выйдите из системы как root, а затем с хоста ВМ:
Создайте папку .ssh:
ssh -t -p 2289 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/buildbot.id_dsa localhost "mkdir -v .ssh" ssh -t -p 2290 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/buildbot.id_dsa localhost "mkdir -v .ssh"
Скопируйте файл authorized_keys:
scp -P 2289 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /kvm/vms/authorized_keys localhost:.ssh/ scp -P 2290 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /kvm/vms/authorized_keys localhost:.ssh/
Установите правильные права доступа к папке .ssh:
ssh -t -p 2289 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/buildbot.id_dsa localhost "chmod -R go-rwx .ssh" ssh -t -p 2290 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/buildbot.id_dsa localhost "chmod -R go-rwx .ssh"
Создайте пользователя buildbot:
ssh -p 2289 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no localhost 'chmod -R go-rwx .ssh; sudo adduser buildbot; sudo usermod -a -G wheel buildbot; 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' ssh -p 2290 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no localhost 'chmod -R go-rwx .ssh; sudo adduser buildbot; sudo usermod -a -G wheel buildbot; 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'
Переключитесь на локального пользователя buildbot и подключитесь к ВМ, чтобы добавить ключ в known_hosts:
Для i386:
sudo su - buildbot ssh -p 2289 buildbot@localhost # exit, then exit again
Для amd64:
sudo su - buildbot ssh -p 2290 buildbot@localhost # exit, then exit again
Загрузите файл ttyS0 и поместите его в нужное место:
scp -P 2289 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /kvm/vms/ttyS0 buildbot@localhost: scp -P 2290 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /kvm/vms/ttyS0 buildbot@localhost: ssh -p 2289 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no buildbot@localhost 'sudo mkdir -v /etc/event.d;sudo mv -vi ttyS0 /etc/event.d/;' ssh -p 2290 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no buildbot@localhost 'sudo mkdir -v /etc/event.d;sudo mv -vi ttyS0 /etc/event.d/;'
Обновите ВМ:
ssh -p 2289 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no buildbot@localhost ssh -p 2290 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no buildbot@localhost
После входа в систему:
sudo yum update
Измените политику selinux на permissive:
sudo vi /etc/selinux/config # change: SELINUX=enforcing # to: SELINUX=permissive
После обновления выключите ВМ:
sudo shutdown -h now
ВМ для сборки .rpms
for i in '/kvm/vms/vm-fedora19-i386-serial.qcow2 2289 qemu64' '/kvm/vms/vm-fedora19-amd64-serial.qcow2 2290 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/thrift-0.9.0.tar.gz buildbot@localhost:/dev/shm/" \ "sudo yum -y groupinstall 'Development Tools'" \ "sudo yum -y install yum-utils" \ "sudo yum-builddep -y mariadb" \ "sudo yum -y install automake libtool flex pkgconfig gcc-c++ libevent-devel python-devel ruby-devel rpm-build" \ "sudo yum -y install cmake tar wget tree gperf readline-devel ncurses-devel zlib-devel pam-devel libaio-devel openssl-devel" \ "sudo yum -y install libxml2 libxml2-devel bison bison-devel boost-devel unixODBC-devel bzr perl perl\(DBI\)" \ "sudo yum -y remove systemtap-sdt-dev" \ "bzr co --lightweight lp:mariadb-native-client" \ "sudo mkdir -vp /usr/src/redhat/SOURCES /usr/src/redhat/SPECS /usr/src/redhat/RPMS /usr/src/redhat/SRPMS" \ "cd /usr/local/src;sudo tar zxf /dev/shm/thrift-0.9.0.tar.gz;pwd;ls" \ "cd /usr/local/src/thrift-0.9.0;echo;pwd;sudo ./configure --prefix=/usr --enable-shared=no --enable-static=yes CXXFLAGS=-fPIC CFLAGS=-fPIC && echo && echo 'now making' && echo && sleep 3 && sudo make && echo && echo 'now installing' && echo && sleep 3 && sudo make install" ; \ done
ВМ для тестирования установки.
for i in '/kvm/vms/vm-fedora19-i386-serial.qcow2 2289 qemu64' '/kvm/vms/vm-fedora19-amd64-serial.qcow2 2290 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 yum -y update" \
"sudo yum -y install patch tar libaio perl perl-Time-HiRes perl-DBI unixODBC" ; \
done
ВМ для тестирования обновления MySQL
for i in '/kvm/vms/vm-fedora19-i386-serial.qcow2 2289 qemu64' '/kvm/vms/vm-fedora19-amd64-serial.qcow2 2290 qemu64' ; do \
set $i; \
runvm --user=buildbot --logfile=kernel_$2.log --base-image=$1 --port=$2 --cpu=$3 "$(echo $1 | sed -e 's/serial/upgrade/')" \
"sudo yum -y update" \
"sudo yum -y install patch tar mysql-server libtool-ltdl unixODBC" \
"sudo systemctl enable mysqld.service" \
"sudo systemctl start mysqld.service" \
'mysql -uroot -e "create database mytest; use mytest; create table t(a int primary key); insert into t values (1); select * from t"' ; \
done
ВМ для тестирования обновления MariaDB
for i in '/kvm/vms/vm-fedora19-amd64-serial.qcow2 2290 qemu64' '/kvm/vms/vm-fedora19-i386-serial.qcow2 2289 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/')" \
'sudo yum -y update' \
"= scp -P $2 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /kvm/vms/MariaDB-${2}.repo buildbot@localhost:/tmp/MariaDB.repo" \
'sudo rpm --verbose --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB' \
'sudo mv -vi /tmp/MariaDB.repo /etc/yum.repos.d/' \
'sudo yum -y remove mysql-libs' \
'sudo yum -y install MariaDB-server MariaDB-client MariaDB-test libtool-ltdl unixODBC' \
'sudo yum -y install cronie cronie-anacron crontabs.noarch patch tar' \
'sudo /etc/init.d/mysql start' \
'mysql -uroot -e "create database mytest; use mytest; create table t(a int primary key); insert into t values (1); select * from t"' \
'sudo rm -v /etc/yum.repos.d/MariaDB.repo' \
'sudo yum -y update' \
"= scp -P $2 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no /kvm/vms/MariaDB.local.repo buildbot@localhost:/tmp/" \
'sudo mv -vi /tmp/MariaDB.local.repo /etc/yum.repos.d/'; \
done
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/buildbot-setup-for-virtual-machines-fedora-19/