Ian Wienand a07bb0a0ae Install podman in container for container-based builds
This installs podman inside the nodepool container, which is used by
the dependent change in DIB to extract initial chroot environments
from upstream containers.  This eliminates the need to run non-native
tools on build hosts (rpm/zypper on Ubuntu, etc.).

As noted in the config, podman defaults to assuming systemd is
installed and using various systemd interfaces.

Additionally, we map the a volume into the container which allows
nested podman to do what it needs to do.

Needed-By: https://review.opendev.org/700083
Change-Id: I6722aa2b32db57e099dae4417955a8a2cd28847e
2021-05-05 10:34:42 +10:00

54 lines
1.5 KiB
Django/Jinja

version: '3.0'
volumes:
nested_var_lib_containers:
services:
nodepool-builder:
image: zuul/nodepool-builder{{ nodepool_container_tag|default('') }}
network_mode: host
restart: always
privileged: true
environment:
- DEBUG=1
volumes:
# cloud config
- /etc/openstack:/etc/openstack:ro
# nodepool config
- /etc/nodepool:/etc/nodepool:ro
# large dib storage area
- /opt/dib:/opt/dib
# for dib to get source for glean installs, etc.
- /home/zuul:/home/zuul
# logs (builder + dib build logs under /build)
- /var/log/nodepool:/var/log/nodepool
# devstack tls-proxy puts CA here that is referenced by cloud config
- /opt/stack/data:/opt/stack/data:ro
# for nested podman/docker runs (container elements)
- nested_var_lib_containers:/var/lib/containers
# zookeeper certs
- /opt/zookeeper/ca:/opt/zookeeper/ca:ro
nodepool-launcher:
image: zuul/nodepool-launcher{{ nodepool_container_tag|default('') }}
network_mode: host
restart: always
environment:
- DEBUG=1
volumes:
# cloud config
- /etc/openstack:/etc/openstack:ro
# nodepool config
- /etc/nodepool:/etc/nodepool:ro
# logs (builder + dib build logs under /build)
- /var/log/nodepool:/var/log/nodepool
# devstack tls-proxy puts CA here that is referenced by cloud config
- /opt/stack/data:/opt/stack/data:ro
# zookeeper certs
- /opt/zookeeper/ca:/opt/zookeeper/ca:ro