I'm trying to only run a task if the previous task returned a 0 stdout.
- name: Check if efs-utils is already installed
ansible.builtin.shell: dpkg -l | grep efs-utils | wc -l
register: is_installed
ignore_errors: "{{ ansible_check_mode }}"
when: efs_id != "" and not ansible_check_mode
- name: Debugging
ansible.builtin.debug:
msg:
- "{{ is_installed.stdout }}"
- name: Install efs-utils
ansible.builtin.shell: cd /opt/efs-utils && ./build-deb.sh && sudo apt-get -y install /opt/efs-utils/build/amazon-efs-utils*deb
when: is_installed.stdout == 0 and not ansible_check_mode
However, when executing the playbook, the "Install efs-utils" task is being skipped.
Debug shows the "is_installed.stdout" output returning 0, as expected:
TASK [Check if efs-utils is already installed] ********************************************************************************
changed: [localhost]
TASK [Debugging] **************************************************************************************************************
ok: [localhost] => {
"msg": [
"0"
]
}
TASK [debug] ******************************************************************************************************************
ok: [localhost] => {
"is_installed": {
"changed": true,
"cmd": "dpkg -l | grep efs-utils | wc -l",
"delta": "0:00:00.013971",
"end": "2021-12-09 23:58:31.128076",
"failed": false,
"msg": "",
"rc": 0,
"start": "2021-12-09 23:58:31.114105",
"stderr": "",
"stderr_lines": [],
"stdout": "0",
"stdout_lines": [
"0"
]
}
}
TASK [Install efs-utils] ******************************************************************************************************
skipping: [localhost]
What am I missing here?
Ansible version 2.11.6