There is an issue I am hitting when docker-compose is not installed. See the following error message:
fatal: [pc]: FAILED! => {}
MSG:
The conditional check 'docker_compose_current_version is defined and (docker_compose_version | regex_replace('v', '')) not in docker_compose_current_version
' failed. The error was: Unexpected templating type error occurred on ({% if docker_compose_current_version is defined and (docker_compose_version | regex_repl
ace('v', '')) not in docker_compose_current_version
%} True {% else %} False {% endif %}): argument of type 'NoneType' is not iterable
The error appears to be in '/home/berthin/.ansible/roles/geerlingguy.docker/tasks/docker-compose.yml': line 13, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: Delete existing docker-compose version if it's different.
^ here
to be sure that I have the latest version of geerlingguy.docker, I installed forcefully XD.
$ ansible-galaxy install --force geerlingguy.docker
Starting galaxy role install process
- changing role geerlingguy.docker from 6.0.1 to unspecified
- downloading role 'docker', owned by geerlingguy
- downloading role from https://github.com/geerlingguy/ansible-role-docker/archive/6.0.1.tar.gz
- extracting geerlingguy.docker to /home/berthin/.ansible/roles/geerlingguy.docker
- geerlingguy.docker (6.0.1) was installed successfully
Here you can see my debugging efforts, not that interesting to be honest:
- name: Check current docker-compose version.
command: "{{ docker_compose_path }} --version"
register: docker_compose_vsn
check_mode: false
changed_when: false
failed_when: false
- set_fact:
docker_compose_current_version: "{{ docker_compose_vsn.stdout | regex_search('(\\d+(\\.\\d+)+)') }}"
when: docker_compose_vsn.stdout is defined
- name: Debug-stdout-no
ansible.builtin.debug:
msg: >
docker_compose_vsn.stdout is not {{ docker_compose_vsn.stdout }}
when: >
docker_compose_vsn.stdout is not defined
- name: Debug-stdout-yes
ansible.builtin.debug:
msg: >
docker_compose_vsn.stdout is defined {{ docker_compose_vsn.stdout }}
when: >
docker_compose_vsn.stdout is defined
- name: Debug-current-version-no
ansible.builtin.debug:
msg: >
docker_compose_current_version {{ docker_compose_current_version }}
when: >
docker_compose_current_version is not defined
- name: Debug-current-version-yes
ansible.builtin.debug:
msg: >
docker_compose_current_version is defined {{ docker_compose_current_version }}
when: >
docker_compose_current_version is defined
- name: Debug
ansible.builtin.debug:
msg:
- " docker_compose_vsn {{ docker_compose_vsn }} "
- " stdout {{ docker_compose_vsn.stdout }} "
- " version {{ docker_compose_version }} "
- " current version {{ docker_compose_current_version }} "
- name: Delete existing docker-compose version if it's different.
file:
path: "{{ docker_compose_path }}"
state: absent
when: >
docker_compose_current_version is defined
and (docker_compose_version | regex_replace('v', '')) not in docker_compose_current_version
Hi,
There is an issue I am hitting when docker-compose is not installed. See the following error message:
The complain is about https://github.com/geerlingguy/ansible-role-docker/blob/master/tasks/docker-compose.yml#L9-L29. So, I added some debug messages to see if those variables were or not defined, and apparently:
docker_compose_vsn.stdout
isdefined
and is empty""
docker_compose_current_version
isdefined
and isNone
you can see my debugging efforts at the end of this message, but anyways, I think the following should be fix the issue:
UPDATE: I have pushed a fix, please review: #384
For reference, I tried to use the latest
ansible-core
+geerlingguy.docker
versions:to be sure that I have the latest version of
geerlingguy.docker
, I installed forcefully XD.Here you can see my debugging efforts, not that interesting to be honest:
and the output: