46ba1ff961
Docker-compose exec allocates a tty by default unlike docker exec. New Ansible doesn't provision a tty which causes docker-compose exec to fail under Ansible now. Address this by passing -T to docker-compose exec commands which stops allocating a tty. We didn't need one to gracefully stop zuul services. Change-Id: Ib52f184f771ae4530f6b6531257dda5d8443043c
43 lines
1.5 KiB
YAML
43 lines
1.5 KiB
YAML
- name: Check if Zuul merger containers are running
|
|
# It is possible they are stopped due to some external circumstance.
|
|
# NOTE: docker-compose ps -q reports exited containers unlike docker ps -q
|
|
command:
|
|
cmd: docker-compose ps -q
|
|
chdir: /etc/zuul-merger
|
|
become: true
|
|
become_user: root
|
|
register: merger_container_list
|
|
- name: Gracefully stop Zuul Merger
|
|
shell:
|
|
cmd: docker-compose exec -T merger zuul-merger stop
|
|
chdir: /etc/zuul-merger
|
|
become: true
|
|
become_user: root
|
|
# Only run the docker exec command if a container is running
|
|
when: merger_container_list.stdout_lines | length > 0
|
|
register: zm_graceful
|
|
failed_when:
|
|
- zm_graceful.rc != 0
|
|
# There is a fun race with docker exec and shutting down the
|
|
# container running the exec. If the container is stopped while
|
|
# the exec is running then the command in the exec effectively gets
|
|
# kill -9'd and the docker exec command rc is 137. Since this
|
|
# should only happen when the container is stopped we proceed with
|
|
# the overall graceful shutdown.
|
|
- zm_graceful.rc != 137
|
|
# If the exec fails because the container is not running we continue.
|
|
- "'No container found' not in zm_graceful.stderr"
|
|
- name: Wait for Zuul Merger to stop
|
|
shell:
|
|
cmd: docker-compose ps -q | xargs docker wait
|
|
chdir: /etc/zuul-merger
|
|
become: true
|
|
become_user: root
|
|
when: merger_container_list.stdout_lines | length > 0
|
|
- name: Down Zuul Merger containers
|
|
shell:
|
|
cmd: docker-compose down
|
|
chdir: /etc/zuul-merger
|
|
become: true
|
|
become_user: root
|