Replace docker by podman for quick-start

Change-Id: Ic6ea0e350e7a6aae656823b4294e49ee871b3329
Depends-On: https://review.opendev.org/c/zuul/zuul-jobs/+/883593
This commit is contained in:
Tristan Cacqueray 2019-10-07 18:45:30 +00:00 committed by James E. Blair
parent c1b0a00c60
commit 0e3756bd5c
11 changed files with 95 additions and 79 deletions

View File

@ -389,9 +389,9 @@
nodeset: ubuntu-jammy
- zuul-stream-functional-6
- zuul-nox-remote
# - zuul-quick-start:
# requires: nodepool-container-image
# dependencies: zuul-upload-image
- zuul-quick-start:
requires: nodepool-container-image
dependencies: zuul-upload-image
- zuul-nox-zuul-client
- zuul-build-python-release
promote:

View File

@ -10,6 +10,12 @@ services:
- CANONICAL_WEB_URL=http://localhost:8080/
networks:
- zuul
volumes:
- "gerrit-etc:/var/gerrit/etc"
- "gerrit-db:/var/gerrit/db"
- "gerrit-git:/var/gerrit/git"
- "gerrit-index:/var/gerrit/index"
- "gerrit-cache:/var/gerrit/cache"
gerritconfig:
image: quay.io/zuul-ci/zuul-executor
environment:
@ -24,6 +30,7 @@ services:
- "./playbooks/:/var/playbooks/:z"
- "certs:/var/certs:z"
- "../../../tools/:/var/zuul-tools/:z"
- "lib-zuul-executor:/var/lib/zuul:z"
# NOTE(pabelanger): Be sure to update this line each time we change the
# default version of ansible for Zuul.
command: "/usr/local/lib/zuul/ansible/6/bin/ansible-playbook /var/playbooks/setup.yaml"
@ -36,6 +43,8 @@ services:
- "./playbooks/:/var/playbooks/:z"
- "certs:/var/certs:z"
- "./zoo.cfg:/conf/zoo.cfg:z"
- "zk-data:/data"
- "zk-datalog:/datalog"
command: "sh -c '/var/playbooks/wait-to-start-certs.sh && zkServer.sh start-foreground'"
networks:
- zuul
@ -48,11 +57,12 @@ services:
MYSQL_PASSWORD: secret
# Work around slow db startup when writing TZINFO data.
MYSQL_INITDB_SKIP_TZINFO: 1
volumes:
- "lib-mysql:/var/lib/mysql"
networks:
- zuul
scheduler:
depends_on:
- gerritconfig
- zk
- mysql
environment:
@ -72,6 +82,7 @@ services:
- "./playbooks/:/var/playbooks/:z"
- "sshkey:/var/ssh:z"
- "certs:/var/certs:z"
- "lib-zuul-scheduler:/var/lib/zuul"
networks:
- zuul
web:
@ -90,6 +101,7 @@ services:
- "${ZUUL_TUTORIAL_CONFIG:-./etc_zuul/}:/etc/zuul/:z"
- "./playbooks/:/var/playbooks/:z"
- "certs:/var/certs:z"
- "lib-zuul-web:/var/lib/zuul"
networks:
- zuul
executor:
@ -108,6 +120,7 @@ services:
- "sshkey:/var/ssh:z"
- "logs:/srv/static/logs:z"
- "certs:/var/certs:z"
- "lib-zuul-executor:/var/lib/zuul:z"
command: "sh -c '/var/playbooks/wait-to-start-certs.sh && zuul-executor -f'"
networks:
- zuul
@ -156,6 +169,17 @@ volumes:
nodessh:
logs:
certs:
lib-zuul-scheduler:
lib-zuul-web:
lib-zuul-executor:
zk-data:
zk-datalog:
lib-mysql:
gerrit-etc:
gerrit-db:
gerrit-git:
gerrit-index:
gerrit-cache:
networks:
zuul:

View File

@ -17,7 +17,7 @@ but this tutorial does not address that.
Update /etc/hosts
-----------------
The Zuul containers will use the internal docker network to connect to
The Zuul containers will use the internal container network to connect to
keycloak, but you will use a mapped port to access it in your web
browser. There is no way to have Zuul use the internal hostname when
it validates the token yet redirect your browser to `localhost` to
@ -46,16 +46,16 @@ that we can update Zuul's configuration to add authentication.
.. code-block:: shell
cd zuul/doc/source/examples
sudo -E docker-compose -p zuul-tutorial stop
sudo -E podman-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/" sudo -E docker-compose -p zuul-tutorial up -d
ZUUL_TUTORIAL_CONFIG="./keycloak/etc_zuul/" sudo -E podman-compose -p zuul-tutorial up -d
This tells docker-compose to use these Zuul `config files
This tells podman-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
sudo -E docker-compose -p zuul-tutorial-keycloak up -d
sudo -E podman-compose -p zuul-tutorial-keycloak up -d
Once Keycloak is running, you can visit the web interface at
http://localhost:8082/

View File

@ -12,7 +12,7 @@ projects from merging broken code.
This tutorial is entirely self-contained and may safely be run on a
workstation. The only requirements are a network connection, the
ability to run Docker containers, and at least 2GiB of RAM.
ability to run containers, and at least 2GiB of RAM.
This tutorial supplies a working Gerrit for code review, though the
concepts you will learn apply equally to GitHub.
@ -33,31 +33,24 @@ Before you start, ensure that some needed packages are installed.
# Red Hat / CentOS:
sudo yum install epel-release
sudo yum update
sudo yum install docker docker-compose git python-pip
sudo pip install git-review
sudo yum install podman git python3
sudo python3 -m pip install git-review podman-compose
# Fedora:
sudo dnf install docker docker-compose git git-review
sudo dnf install podman git python3
sudo python3 -m pip install git-review podman-compose
# OpenSuse:
sudo zypper install docker docker-compose git
sudo python3 -m pip install git-review
sudo zypper install podman git python3
sudo python3 -m pip install git-review podman-compose
# Ubuntu / Debian:
sudo apt-get update
sudo apt-get install docker-compose docker.io git python3-pip
sudo python3 -m pip install git-review
# Start and Enable the docker service on Fedora / CentOS
# Red Hat / OpenSuse / Ubuntu / Debian:
sudo systemctl enable docker.service
sudo systemctl start docker.service
sudo apt-get install podman git python3-pip
sudo python3 -m pip install git-review podman-compose
Clone the Zuul repository:
@ -67,22 +60,22 @@ Clone the Zuul repository:
git clone https://opendev.org/zuul/zuul
Then cd into the directory containing this document, and run
docker-compose in order to start Zuul, Nodepool and Gerrit.
podman-compose in order to start Zuul, Nodepool and Gerrit.
.. code-block:: shell
cd zuul/doc/source/examples
sudo -E docker-compose -p zuul-tutorial up
podman-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 docker-compose is running.
the standard output of the terminal where podman-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
docker composition includes scripts to configure Gerrit and create an
podman 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:

View File

@ -26,16 +26,16 @@ that we can update Zuul's configuration to enable tracing.
.. code-block:: shell
cd zuul/doc/source/examples
sudo -E docker-compose -p zuul-tutorial stop
sudo -E podman-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/" sudo -E docker-compose -p zuul-tutorial up -d
ZUUL_TUTORIAL_CONFIG="./tracing/etc_zuul/" sudo -E podman-compose -p zuul-tutorial up -d
This tells docker-compose to use these Zuul `config files
This tells podman-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
sudo -E docker-compose -p zuul-tutorial-tracing up -d
sudo -E podman-compose -p zuul-tutorial-tracing up -d
You can visit http://localhost:16686/search to verify it is running.

View File

@ -1,44 +1,44 @@
# Stop the basic tutorial
- name: Run docker-compose down
- name: Run podman-compose down
when: not local
shell:
cmd: docker-compose -p zuul-tutorial stop
cmd: podman-compose -p zuul-tutorial stop
chdir: src/opendev.org/zuul/zuul/doc/source/examples
- name: Run docker-compose down
- name: Run podman-compose down
when: local
shell:
cmd: docker-compose -p zuul-tutorial stop
cmd: podman-compose -p zuul-tutorial stop
chdir: ../../doc/source/examples
# Restart with the new config
- name: Run docker-compose up
- name: Run podman-compose up
when: not local
shell:
cmd: docker-compose -p zuul-tutorial up -d
cmd: podman-compose -p zuul-tutorial up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples
environment:
ZUUL_TUTORIAL_CONFIG: "./keycloak/etc_zuul/"
- name: Run docker-compose up
- name: Run podman-compose up
when: local
shell:
cmd: docker-compose -p zuul-tutorial up -d
cmd: podman-compose -p zuul-tutorial up -d
chdir: ../../doc/source/examples
environment:
ZUUL_TUTORIAL_CONFIG: "./keycloak/etc_zuul/"
# Start keycloak
- name: Run docker-compose up
- name: Run podman-compose up
when: not local
shell:
cmd: docker-compose -p zuul-tutorial-keycloak up -d
cmd: podman-compose -p zuul-tutorial-keycloak up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples/keycloak
- name: Run docker-compose up
- name: Run podman-compose up
when: local
shell:
cmd: docker-compose -p zuul-tutorial-keycloak up -d
cmd: podman-compose -p zuul-tutorial-keycloak up -d
chdir: ../../doc/source/examples/keycloak
# Verify that Zuul runs with the new config

View File

@ -5,20 +5,21 @@
state: directory
path: "{{ ansible_user_dir }}/logs"
mode: 0755
- name: Save docker log files
become: true
- name: Save podman log files
shell: |
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
- name: Copy docker log files to executor
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
exit 0
- name: Copy podman log files to executor
synchronize:
mode: pull
src: "{{ ansible_user_dir }}/logs/"

View File

@ -1,7 +1,5 @@
- hosts: all
roles:
- ensure-pip
- name: ensure-docker
use_upstream_docker: false
docker_compose_install: true
- ensure-podman
- use-buildset-registry

View File

@ -30,20 +30,20 @@
ssh_agent: "{{ ssh_agent_new }}"
when: ssh_public_key is not defined or ssh_public_key == ''
- name: Run docker-compose up
- name: Run podman-compose up
when: not local
shell:
cmd: docker-compose -p zuul-tutorial up -d
cmd: podman-compose -p zuul-tutorial up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples
- name: Run docker-compose up
- name: Run podman-compose up
when: local
shell:
cmd: docker-compose -p zuul-tutorial up -d
cmd: podman-compose -p zuul-tutorial up -d
chdir: ../../doc/source/examples
- name: Print list of images
command: docker image ls --all --digests --no-trunc
command: podman image ls --all --digests --no-trunc
- name: Wait for Gerrit to start
wait_for:

View File

@ -1,6 +1,6 @@
- block:
- name: Install git-review
command: python3 -m pip install git-review
command: python3 -m pip install git-review podman-compose
become: true
when: not local

View File

@ -1,44 +1,44 @@
# Stop the basic tutorial
- name: Run docker-compose down
- name: Run podman-compose down
when: not local
shell:
cmd: docker-compose -p zuul-tutorial stop
cmd: podman-compose -p zuul-tutorial stop
chdir: src/opendev.org/zuul/zuul/doc/source/examples
- name: Run docker-compose down
- name: Run podman-compose down
when: local
shell:
cmd: docker-compose -p zuul-tutorial stop
cmd: podman-compose -p zuul-tutorial stop
chdir: ../../doc/source/examples
# Restart with the new config
- name: Run docker-compose up
- name: Run podman-compose up
when: not local
shell:
cmd: docker-compose -p zuul-tutorial up -d
cmd: podman-compose -p zuul-tutorial up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples
environment:
ZUUL_TUTORIAL_CONFIG: "./tracing/etc_zuul/"
- name: Run docker-compose up
- name: Run podman-compose up
when: local
shell:
cmd: docker-compose -p zuul-tutorial up -d
cmd: podman-compose -p zuul-tutorial up -d
chdir: ../../doc/source/examples
environment:
ZUUL_TUTORIAL_CONFIG: "./tracing/etc_zuul/"
# Start Jaeger
- name: Run docker-compose up
- name: Run podman-compose up
when: not local
shell:
cmd: docker-compose -p zuul-tutorial-tracing up -d
cmd: podman-compose -p zuul-tutorial-tracing up -d
chdir: src/opendev.org/zuul/zuul/doc/source/examples/tracing
- name: Run docker-compose up
- name: Run podman-compose up
when: local
shell:
cmd: docker-compose -p zuul-tutorial-tracing up -d
cmd: podman-compose -p zuul-tutorial-tracing up -d
chdir: ../../doc/source/examples/tracing
# Verify that Zuul runs with the new config