Switch quickstart to docker compose v2

We want to use podman to run our containers, but the podman-compose
tool has been problematic to use in OpenDev and has also caused
some confusion for users.  It also seems the podman project is
favoring declaring systems using k8s syntax rather than compose,
which is putting the podman-compose tool future in question.

This change updates the quickstart to use "docker compose" (ie,
docker-compose v2) instead of podman-compose.

Because we want to continue using speculative container testing
which does not work for quay.io images when using docker, we will
use the podman backend with docker compose.  This is what we
are moving toward in OpenDev.  We hope that it is the best of both
worlds.

Users likely don't need such a complex setup, so we will adjust
the documentation to use "docker compose" but not mention anything
about podman.  That will remain a test implementation detail,
at least as long as we think they are sufficiently compatible that
we can get away with testing something slightly different than
our instructions.

This switches to packaged git-review for simplicity because
pip install does not work in noble.

Fedora and OpenSuse installation instructions are similarly updated.

Red Hat / CentOS instructions are removed because this author does
not have a way to verify package names.  Their return by someone
knowledgable with that is welcome.

Change-Id: I238f6db178af86fa7203203993c90bd8d1371712
Depends-On: https://review.opendev.org/923083
Depends-On: https://review.opendev.org/925916
Co-Authored-By: Clark Boylan <clark.boylan@gmail.com>
This commit is contained in:
James E. Blair
2024-06-28 16:38:43 -07:00
parent 6033d42a23
commit 76f7d210de
9 changed files with 111 additions and 67 deletions
+4 -4
View File
@@ -46,16 +46,16 @@ that we can update Zuul's configuration to add authentication.
.. code-block:: shell
cd zuul/doc/source/examples
podman-compose -p zuul-tutorial stop
docker compose -p zuul-tutorial stop
Restart the containers with a new Zuul configuration.
.. code-block:: shell
cd zuul/doc/source/examples
ZUUL_TUTORIAL_CONFIG="./keycloak/etc_zuul/" podman-compose -p zuul-tutorial up -d
ZUUL_TUTORIAL_CONFIG="./keycloak/etc_zuul/" docker compose -p zuul-tutorial up -d
This tells podman-compose to use these Zuul `config files
This tells docker compose to use these Zuul `config files
<https://opendev.org/zuul/zuul/src/branch/master/doc/source/examples/keycloak>`_.
Start Keycloak
@@ -67,7 +67,7 @@ with this command:
.. code-block:: shell
cd zuul/doc/source/examples/keycloak
podman-compose -p zuul-tutorial-keycloak up -d
docker compose -p zuul-tutorial-keycloak up -d
Once Keycloak is running, you can visit the web interface at
http://localhost:8082/
+8 -16
View File
@@ -31,26 +31,18 @@ Before you start, ensure that some needed packages are installed.
.. code-block:: shell
# Red Hat / CentOS:
sudo yum install podman git python3
sudo python3 -m pip install git-review podman-compose
# Fedora:
sudo dnf install podman git python3
sudo python3 -m pip install git-review podman-compose
sudo dnf install git git-review docker-compose
# OpenSuse:
sudo zypper install podman git python3
sudo python3 -m pip install git-review podman-compose
sudo zypper install git git-review docker-compose
# Ubuntu (Noble or later) / Debian:
sudo apt-get update
sudo apt-get install podman git python3-pip
sudo python3 -m pip install git-review podman-compose
sudo apt update
sudo apt install git git-review docker-compose-v2
Clone the Zuul repository:
@@ -60,22 +52,22 @@ Clone the Zuul repository:
git clone https://opendev.org/zuul/zuul
Then cd into the directory containing this document, and run
podman-compose in order to start Zuul, Nodepool and Gerrit.
docker compose in order to start Zuul, Nodepool and Gerrit.
.. code-block:: shell
cd zuul/doc/source/examples
podman-compose -p zuul-tutorial up
docker compose -p zuul-tutorial up
For reference, the files in that directory are also `browsable on the web
<https://opendev.org/zuul/zuul/src/branch/master/doc/source/examples>`_.
All of the services will be started with debug-level logging sent to
the standard output of the terminal where podman-compose is running.
the standard output of the terminal where docker compose is running.
You will see a considerable amount of information scroll by, including
some errors. Zuul will immediately attempt to connect to Gerrit and
begin processing, even before Gerrit has fully initialized. The
podman composition includes scripts to configure Gerrit and create an
docker composition includes scripts to configure Gerrit and create an
account for Zuul. Once this has all completed, the system should
automatically connect, stabilize and become idle. When this is
complete, you will have the following services running:
+4 -4
View File
@@ -26,16 +26,16 @@ that we can update Zuul's configuration to enable tracing.
.. code-block:: shell
cd zuul/doc/source/examples
podman-compose -p zuul-tutorial stop
docker compose -p zuul-tutorial stop
Restart the containers with a new Zuul configuration.
.. code-block:: shell
cd zuul/doc/source/examples
ZUUL_TUTORIAL_CONFIG="./tracing/etc_zuul/" podman-compose -p zuul-tutorial up -d
ZUUL_TUTORIAL_CONFIG="./tracing/etc_zuul/" docker compose -p zuul-tutorial up -d
This tells podman-compose to use these Zuul `config files
This tells docker compose to use these Zuul `config files
<https://opendev.org/zuul/zuul/src/branch/master/doc/source/examples/tracing>`_.
The only change compared to the quick-start is to add a
:attr:`tracing` section to ``zuul.conf``:
@@ -59,7 +59,7 @@ with this command:
.. code-block:: shell
cd zuul/doc/source/examples/tracing
podman-compose -p zuul-tutorial-tracing up -d
docker compose -p zuul-tutorial-tracing up -d
You can visit http://localhost:16686/search to verify it is running.
+22 -12
View File
@@ -1,45 +1,55 @@
# Stop the basic tutorial
- name: Run podman-compose down
- name: Run docker compose down
when: not local
shell:
cmd: podman-compose -p zuul-tutorial stop
cmd: docker compose -p zuul-tutorial stop
chdir: src/opendev.org/zuul/zuul/doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
- name: Run podman-compose down
- name: Run docker compose down
when: local
shell:
cmd: podman-compose -p zuul-tutorial stop
cmd: docker compose -p zuul-tutorial stop
chdir: ../../doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
# Restart with the new config
- name: Run podman-compose up
- name: Run docker compose up
when: not local
shell:
cmd: podman-compose -p zuul-tutorial up -d
cmd: docker compose -p zuul-tutorial up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
ZUUL_TUTORIAL_CONFIG: "./keycloak/etc_zuul/"
- name: Run podman-compose up
- name: Run docker compose up
when: local
shell:
cmd: podman-compose -p zuul-tutorial up -d
cmd: docker compose -p zuul-tutorial up -d
chdir: ../../doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
ZUUL_TUTORIAL_CONFIG: "./keycloak/etc_zuul/"
# Start keycloak
- name: Run podman-compose up
- name: Run docker compose up
when: not local
shell:
cmd: podman-compose -p zuul-tutorial-keycloak up -d
cmd: docker compose -p zuul-tutorial-keycloak up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples/keycloak
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
- name: Run podman-compose up
- name: Run docker compose up
when: local
shell:
cmd: podman-compose -p zuul-tutorial-keycloak up -d
cmd: docker compose -p zuul-tutorial-keycloak up -d
chdir: ../../doc/source/examples/keycloak
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
# In case ZK is shutdown first, allow the locks to expire.
- name: Delay for ZK lock expiration
+15 -13
View File
@@ -5,22 +5,24 @@
state: directory
path: "{{ ansible_user_dir }}/logs"
mode: 0755
- name: Save podman log files
- name: Save container log files
shell: |
set +e
podman logs zuul-tutorial_gerrit_1 > {{ ansible_user_dir }}/logs/gerrit.log 2>&1
podman logs zuul-tutorial_gerritconfig_1 > {{ ansible_user_dir }}/logs/gerritconfig.log 2>&1
podman logs zuul-tutorial_zk_1 > {{ ansible_user_dir }}/logs/zk.log 2>&1
podman logs zuul-tutorial_mysql_1 > {{ ansible_user_dir }}/logs/mysql.log 2>&1
podman logs zuul-tutorial_scheduler_1 > {{ ansible_user_dir }}/logs/scheduler.log 2>&1
podman logs zuul-tutorial_web_1 > {{ ansible_user_dir }}/logs/web.log 2>&1
podman logs zuul-tutorial_executor_1 > {{ ansible_user_dir }}/logs/executor.log 2>&1
podman logs zuul-tutorial_node_1 > {{ ansible_user_dir }}/logs/node.log 2>&1
podman logs zuul-tutorial_launcher_1 > {{ ansible_user_dir }}/logs/launcher.log 2>&1
podman logs zuul-tutorial_logs_1 > {{ ansible_user_dir }}/logs/logs.log 2>&1
podman logs zuul-tutorial-tracing_jaeger_1 > {{ ansible_user_dir }}/logs/jaeger.log 2>&1
docker logs zuul-tutorial-gerrit-1 > {{ ansible_user_dir }}/logs/gerrit.log 2>&1
docker logs zuul-tutorial-gerritconfig-1 > {{ ansible_user_dir }}/logs/gerritconfig.log 2>&1
docker logs zuul-tutorial-zk-1 > {{ ansible_user_dir }}/logs/zk.log 2>&1
docker logs zuul-tutorial-mysql-1 > {{ ansible_user_dir }}/logs/mysql.log 2>&1
docker logs zuul-tutorial-scheduler-1 > {{ ansible_user_dir }}/logs/scheduler.log 2>&1
docker logs zuul-tutorial-web-1 > {{ ansible_user_dir }}/logs/web.log 2>&1
docker logs zuul-tutorial-executor-1 > {{ ansible_user_dir }}/logs/executor.log 2>&1
docker logs zuul-tutorial-node-1 > {{ ansible_user_dir }}/logs/node.log 2>&1
docker logs zuul-tutorial-launcher-1 > {{ ansible_user_dir }}/logs/launcher.log 2>&1
docker logs zuul-tutorial-logs-1 > {{ ansible_user_dir }}/logs/logs.log 2>&1
docker logs zuul-tutorial-tracing_jaeger-1 > {{ ansible_user_dir }}/logs/jaeger.log 2>&1
exit 0
- name: Copy podman log files to executor
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
- name: Copy container log files to executor
synchronize:
mode: pull
src: "{{ ansible_user_dir }}/logs/"
+26 -1
View File
@@ -1,5 +1,30 @@
- hosts: all
roles:
- ensure-pip
- ensure-podman
- ensure-docker
- role: ensure-podman
ensure_podman_socket: true
- use-buildset-registry
tasks:
# docker-compose-v2 depends on the docker service. Disable it to
# ensure we're not accidentally using the docker daemon.
- name: Disable docker daemon service
become: true
service:
name: docker
state: stopped
enabled: false
- name: Disable docker socket service
become: true
service:
name: docker.socket
state: stopped
enabled: false
- name: Start buildx builder
# This may not be necessary under a normal docker install
# https://github.com/docker/buildx/issues/344
shell: |
echo "FROM scratch" | docker buildx build - || true
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
become: true
@@ -30,17 +30,21 @@
ssh_agent: "{{ ssh_agent_new }}"
when: ssh_public_key is not defined or ssh_public_key == ''
- name: Run podman-compose up
- name: Run docker compose up
when: not local
shell:
cmd: podman-compose -p zuul-tutorial up -d
cmd: docker compose -p zuul-tutorial up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
- name: Run podman-compose up
- name: Run docker compose up
when: local
shell:
cmd: podman-compose -p zuul-tutorial up -d
cmd: docker compose -p zuul-tutorial up -d
chdir: ../../doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
- name: Print list of images
command: podman image ls --all --digests --no-trunc
+2 -1
View File
@@ -3,7 +3,8 @@
package:
name:
- git-review
- podman-compose
# This should only be needed with the podman backend
- catatonit
state: present
become: true
when: not local
+22 -12
View File
@@ -1,45 +1,55 @@
# Stop the basic tutorial
- name: Run podman-compose down
- name: Run docker compose down
when: not local
shell:
cmd: podman-compose -p zuul-tutorial stop
cmd: docker compose -p zuul-tutorial stop
chdir: src/opendev.org/zuul/zuul/doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
- name: Run podman-compose down
- name: Run docker compose down
when: local
shell:
cmd: podman-compose -p zuul-tutorial stop
cmd: docker compose -p zuul-tutorial stop
chdir: ../../doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
# Restart with the new config
- name: Run podman-compose up
- name: Run docker compose up
when: not local
shell:
cmd: podman-compose -p zuul-tutorial up -d
cmd: docker compose -p zuul-tutorial up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
ZUUL_TUTORIAL_CONFIG: "./tracing/etc_zuul/"
- name: Run podman-compose up
- name: Run docker compose up
when: local
shell:
cmd: podman-compose -p zuul-tutorial up -d
cmd: docker compose -p zuul-tutorial up -d
chdir: ../../doc/source/examples
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
ZUUL_TUTORIAL_CONFIG: "./tracing/etc_zuul/"
# Start Jaeger
- name: Run podman-compose up
- name: Run docker compose up
when: not local
shell:
cmd: podman-compose -p zuul-tutorial-tracing up -d
cmd: docker compose -p zuul-tutorial-tracing up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples/tracing
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
- name: Run podman-compose up
- name: Run docker compose up
when: local
shell:
cmd: podman-compose -p zuul-tutorial-tracing up -d
cmd: docker compose -p zuul-tutorial-tracing up -d
chdir: ../../doc/source/examples/tracing
environment:
DOCKER_HOST: unix:///run/podman/podman.sock
# In case ZK is shutdown first, allow the locks to expire.
- name: Delay for ZK lock expiration