When Condition check is not working in a list as expected.

13 views
Skip to first unread message

Pandu jh

unread,
Feb 28, 2019, 7:52:31 AM2/28/19
to Ansible Project
When Condition check is not working in a list as expected.

My requirement is 

Playbook should not fail If all the three mentioned variables have "no_share" value.
But it's failing not sure what causing this issue.



    - debug:  var=open_shares_info
    - debug:  var=linked_dirs_list
    - debug:  var=nfs_hard_mounts

    - name: Fail Playbook Execution
      fail:
        msg:  "Make sure to unshare/unmount all NFS shares in NFS clients"
      when:  ("'no_share' not in open_shares_info") and  ("'no_share' not in linked_dirs_list") and and ("'no_share' not in nfs_hard_mounts")



TASK [debug] *******************************************************************************************************************************************
ok: [rchadm01] => {
    "open_shares_info": "no_share"
}

TASK [debug] *******************************************************************************************************************************************
ok: [rchadm01] => {
    "linked_dirs_list": "no_share"
}

TASK [debug] *******************************************************************************************************************************************
ok: [rchadm01] => {
    "nfs_hard_mounts": "no_share"
}

TASK [Fail Playbook Execution] *************************************************************************************************************************
fatal: [rchadm01]: FAILED! => {"changed": false, "msg": "Make sure to unshare/unmount all NFS shares in NFS clients"}

Kai Stian Olstad

unread,
Feb 28, 2019, 2:20:41 PM2/28/19
to ansible...@googlegroups.com
On 28.02.2019 13:52, Pandu jh wrote:
> When Condition check is not working in a list as expected.
>
> My requirement is
>
> Playbook should not fail If all the three mentioned variables have
> "no_share" value.
> But it's failing not sure what causing this issue.
>
>
>
> - debug: var=open_shares_info
> - debug: var=linked_dirs_list
> - debug: var=nfs_hard_mounts
>
> - name: Fail Playbook Execution
> fail:
> msg: "Make sure to unshare/unmount all NFS shares in NFS clients"
> when: ("'no_share' not in open_shares_info") and ("'no_share' not
> in linked_dirs_list") and and ("'no_share' not in nfs_hard_mounts")

In Jinja template that when uses, quotes, single and double, means this is a string.
So when you put a double quote around the hole expressing you are making it a sting.

In you when its

a_string and a_string and a_string

Remove the double quotes and it should work. (and also remove the double and)


--
Kai Stian Olstad

Pandu jh

unread,
Mar 1, 2019, 11:01:23 AM3/1/19
to Ansible Project
Thank you, It worked.

Pandu jh

unread,
Mar 1, 2019, 11:06:17 AM3/1/19
to Ansible Project
One more Requirement Kai,

I need to test the condition If stdout_lines is not defined or the stdout_lines length is 0, then open_shares_info variable should have the no_share value.
Could you check below syntax is correct, I am getting an error when I run it.

  - set_fact:
        open_shares_info: "{{  nfs_open_share.stdout_lines if nfs_open_share.stdout_lines|length != 0 or nfs_open_share.stdout_lines is defined else 'no_share' }}"

Kai Stian Olstad

unread,
Mar 4, 2019, 6:12:24 AM3/4/19
to ansible...@googlegroups.com
On 01.03.2019 17:06, Pandu jh wrote:
> One more Requirement Kai,
>
> I need to test the condition If stdout_lines is not defined or the
> stdout_lines length is 0, then open_shares_info variable should have
> the
> no_share value.
> Could you check below syntax is correct, I am getting an error when I
> run
> it.
>
> - set_fact:
> open_shares_info: "{{ nfs_open_share.stdout_lines if
> nfs_open_share.stdout_lines|length != 0 or nfs_open_share.stdout_lines
> is
> defined else 'no_share' }}"

Why don't you just test it and see if it works.

--
Kai Stian Olstad
Reply all
Reply to author
Forward
0 new messages