Fix 'ModuleNotFoundError: No module named 'docker'

In some cases, for example with custom inventory, we still have an
ordering issue and shouldn't rely only on 'docker.service' check.
We should use 'docker rm' shell command prior 'Docker SDK for Python'
is installed.

Change-Id: I90223a36ff3fc71585cb9302573154a5921041ff
Signed-off-by: Maksim Malchuk <maksim.malchuk@gmail.com>
This commit is contained in:
Maksim Malchuk 2021-11-23 21:09:49 +03:00 committed by Mark Goddard
parent 9f574402f3
commit bf318310e6

View File

@ -14,13 +14,21 @@
with_items: "{{ ntp_service_disable_list }}"
- name: Remove kolla-ansible installed chrony container
docker_container:
name: chrony
state: absent
shell:
cmd: >
if [[ -n $(docker ps -aq -f name=chrony) ]]; then
docker rm -f -v chrony
fi
executable: "/bin/bash"
register: result
changed_when: result.stdout != ""
become: true
# NOTE(wszumski): There is an ordering issue where on a fresh host, docker
# will not have been configured, but if that is the case, the chrony container
# can't possibly exist, but trying to execute this unconditionally will fail
# with: No module named 'docker' as we have not yet added the docker package
# to the kayobe target venv.
when: "'docker.service' in ansible_facts.services"
# to the kayobe target venv, so we use 'docker rm' command with force and
# don't fail on error.
when:
- "'docker.service' in ansible_facts.services"
- ansible_facts.services['docker.service'].status == 'running'