ansible: add rules to install qemu images

Prepare to run repo-install-test inside qemu with kvm instead of
docker, see following patches.

Related: OS#5365
Change-Id: Ia7626fcd397d32e1180e320d4a76a65bcad01b7b
This commit is contained in:
Oliver Smith 2022-12-08 10:26:15 +01:00 committed by osmith
parent 21a641d6c2
commit 47dde8559f
4 changed files with 110 additions and 0 deletions

View File

@ -23,3 +23,7 @@ simtest ansible_host=10.9.25.80
[obs-workers]
build3-obsworker1 ansible_host=2a01:4f8:212:3762::1:2 obs_worker_instances=8 obs_worker_jobs=8
lx2-1-obs-aarch64-1 ansible_host=2a02:8106:13:1e34:4e9:e7ff:fe97:fe92 obs_worker_instances=1 obs_worker_jobs=4
# Need to have kvm inside lxc, see OS#5365
[qemu]
build3-deb11build-ansible ansible_host=2a01:4f8:212:3762::1:3

View File

@ -0,0 +1,75 @@
#!/bin/sh -e
# Create qcow2 images with ssh root login enabled for repo-install-test and
# store them in /opt/qemu.
# Set KEEP_CACHE=1 during development, so virt-builder only needs to download
# the image once.
# Distribution names, as in the base images from here:
# https://builder.libguestfs.org/
DISTROS="
alma-8.5
debian-10
debian-11
"
TEMP_SCRIPT="$(mktemp)"
if [ "$(id -u)" != 0 ]; then
echo "ERROR: run this as root"
exit 1
fi
mkdir -p /opt/qemu
for distro in $DISTROS; do
img="/opt/qemu/$distro.qcow2"
echo
echo "# $distro"
echo
if [ -e "$img" ]; then
echo "=> File exists, skipping."
continue
fi
case "$distro" in
alma-*)
# Install SCTP kernel module
# https://forums.centos.org/viewtopic.php?t=71818
cat <<- EOF > "$TEMP_SCRIPT"
#!/bin/sh -ex
dnf upgrade -y kernel
dnf install -y kernel-modules-extra
rm -f /etc/modprobe.d/sctp-blacklist.conf
EOF
;;
debian-*)
# Generate SSH server keys and allow login as root
cat <<- EOF > "$TEMP_SCRIPT"
#!/bin/sh -ex
ssh-keygen -A
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
EOF
;;
esac
virt-builder \
"$distro" \
-o "/opt/qemu/$distro.qcow2" \
--format qcow2 \
--root-password password:root \
--run "$TEMP_SCRIPT" \
--verbose
if [ -z "$KEEP_CACHE" ]; then
virt-builder --delete-cache
fi
done
rm "$TEMP_SCRIPT"
# Marker for ansible main.yml to skipt the script
touch /opt/qemu/.qemu-create-vms-done-v1
echo
echo "Done!"

View File

@ -0,0 +1,22 @@
---
- name: install packages
apt:
name:
- libguestfs-tools
- netcat
- qemu-system-x86
- sshpass
cache_valid_time: 3600
update_cache: yes
- name: run qemu-create-vms.sh
ansible.builtin.script: qemu-create-vms.sh
args:
creates: /opt/qemu/.qemu-create-vms-done-v1
- name: add jenkins to the kvm group
user:
name: "{{ jenkins_user }}"
groups: kvm
append: yes

View File

@ -53,3 +53,12 @@
- name: install-coverity
tags:
- coverity
- name: setup qemu images
hosts: qemu
user: root
roles:
- name: qemu
jenkins_user: osmocom-build
tags:
- qemu