openstack-helm-images/libvirt/Dockerfile
Vladimir Kozhukalov 8f3ffc08d6 Fix libvirt Dockerfile
By default all Openstack deployment test jobs
use latest-ubuntu_focal image which has libvirt
version 6.0.0 and qemu version 4.2 which is
incompatible with Bobcat. This old image was published
more than a year ago and since that has never been
updated and it also contains the nova user.

The Openstack deployment with newer libvirt
images fails due to this
https://review.opendev.org/c/openstack/openstack-helm-images/+/864772

This PR adds nova user which is necessary for libvirt
to successfully communicate with Nova.

Change-Id: I0d5f302261611b0666323178a52ca974126be1a5
2023-10-12 13:49:57 -05:00

77 lines
2.4 KiB
Docker

# syntax=docker/dockerfile:1.4
ARG FROM
FROM ${FROM}
FROM ${FROM} AS cloudarchive-generator
RUN <<EOF
set -xe
apt-get update
apt-get install -y lsb-release
apt-get clean
rm -rf /var/lib/apt/lists/*
EOF
ARG RELEASE
RUN <<EOF /bin/bash
set -xe
if [ "$(lsb_release -sc)" = "focal" ]; then
if [[ "${RELEASE}" = "wallaby" || "${RELEASE}" = "xena" || "${RELEASE}" = "yoga" ]]; then
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu $(lsb_release -sc)-updates/${RELEASE} main" > /etc/apt/sources.list.d/cloudarchive.list
else
echo "${RELEASE} is not supported on $(lsb_release -sc)"
exit 1
fi
elif [ "$(lsb_release -sc)" = "jammy" ]; then
if [[ "${RELEASE}" = "yoga" ]]; then
# NOTE(mnaser): Yoga shipped with 22.04, so no need to add an extra repository.
echo "" > /etc/apt/sources.list.d/cloudarchive.list
elif [[ "${RELEASE}" = "zed" || "${RELEASE}" = "antelope" || "${RELEASE}" = "bobcat" ]]; then
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu $(lsb_release -sc)-updates/${RELEASE} main" > /etc/apt/sources.list.d/cloudarchive.list
else
echo "${RELEASE} is not supported on $(lsb_release -sc)"
exit 1
fi
else
echo "Unable to detect correct Ubuntu Cloud Archive repository for $(lsb_release -sc)"
exit 1
fi
EOF
FROM ${FROM} AS runtime
COPY --from=cloudarchive-generator --link /etc/apt/sources.list.d/cloudarchive.list /etc/apt/sources.list.d/cloudarchive.list
COPY ubuntu-keyring-2012-cloud-archive.gpg /etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cloud-archive.gpg
RUN <<EOF
set -xe
apt-get update
apt-get install -y --no-install-recommends \
ceph-common \
cgroup-tools \
dmidecode \
ebtables \
iproute2 \
ipxe-qemu \
kmod \
libvirt-clients \
libvirt-daemon-system \
openssh-client \
openvswitch-switch \
ovmf \
pm-utils \
qemu-system \
qemu-block-extra \
qemu-efi \
qemu-kvm
apt-get clean
rm -rf /var/lib/apt/lists/*
EOF
ARG PROJECT=nova
ARG UID=42424
ARG GID=42424
RUN set -ex ;\
groupadd -g ${GID} ${PROJECT} ;\
useradd -u ${UID} -g ${PROJECT} -M -d /var/lib/${PROJECT} -s /usr/sbin/nologin -c "${PROJECT} user" ${PROJECT} ;\
mkdir -p /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} ;\
chown ${PROJECT}:${PROJECT} /etc/${PROJECT} /var/log/${PROJECT} /var/lib/${PROJECT} /var/cache/${PROJECT} ;\
usermod -a -G kvm ${PROJECT}