The output is a string "0" but your condition uses a bare 0 which is
interpreted as a Boolean false.

But why use a shell workaround, if there is package_facts:

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/package_facts_module.html

Ideally AWS would provide apt repositories but that's not the case (yet - I
see it's been requested, for instance
https://github.com/aws/efs-utils/issues/111)



On Fri, 10 Dec 2021 at 01:05, Lucas Possamai <[email protected]> wrote:

> 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
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/CAE_gQfVO%3DCDER0KLREJ2zevRB45VmvbCkS21AtFAC5zotr4uNw%40mail.gmail.com
> <https://groups.google.com/d/msgid/ansible-project/CAE_gQfVO%3DCDER0KLREJ2zevRB45VmvbCkS21AtFAC5zotr4uNw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
-- 
Sent from a mobile device - please excuse the brevity, spelling and
punctuation.

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAL8fbwO1ey9TourUaD%3DME6qbpY3sPbtMm0XQDerUfqg3X38GUg%40mail.gmail.com.

Reply via email to