Have you tried to put the line in double quotes?  I'm not sure if it's 
always required, however, some of my 'or' statements will not work without 
them so I just put all of them in double quotes.

      when:  "(item.key is not regex("(Port|Vlan)")) 
or (item.key not in po_ints)"

On Monday, November 30, 2020 at 9:15:02 AM UTC-6 [email protected] wrote:

> Hello, 
>
> Just thought I would uypdate.  I was not able to find the correct syntax 
> for an or in a when statement.   What I end up doing, and I am sure there 
> is a better way to do it, was create separate lists then adding them 
> together.
>
>     - name: Create a list without Gigabit interfaces
>       set_fact:
>         exclude1: "{{ ex | reject('search', 'Giga') | list }}"
>     - name: Create a list of GigabitEthernet0/0
>       set_fact:
>         exclude2: "
> {{ ex | select('search', 'GigabitEthernet0/0') | list }}"
>
>     - name: Gather the Port Channel Summary
>       ansible.netcommon.cli_parse:
>         command: "show etherchannel summary"
>         parser:
>           name: ansible.netcommon.pyats
>         set_fact: eth_sum
>
>     - name: Get the PO Channel Interfaces
>       set_fact:
>         po_ints: "{{ eth_sum.interfaces|json_query(query)|
>                     flatten }}"
>         cacheable: yes
>       vars:
>         query: '*.port_channel.port_channel_member_intfs'
>
>     - name: Create one list to be used in a future play
>       set_fact:
>         exclude_interfaces: "{{ exclude1 + exclude2 + po_ints }}"
>         cacheable: yes
>
>
> On Wed, Nov 25, 2020 at 11:42 AM J C <[email protected]> wrote:
>
>> I apologize I did miss a line in my task when I copied.  So I used the 
>> (Port|Vlan).  Which again works as a single statement.  Also tried putting 
>> the statements in ()
>>
>>     - name: Apply policy to the interfaces
>>       cisco.ios.ios_config:
>>         parents: interface {{ item.key }}
>>         lines:
>>           - device-tracking attach-policy IPDT_POLICY
>>       loop: "{{ netbrain_interface_attributes|dict2items }}"
>>       when: >
>>         item.key is not regex("(Port|Vlan)")
>>         or item.key not in po_ints
>>
>>     - name: Apply policy to the interfaces
>>       cisco.ios.ios_config:
>>         parents: interface {{ item.key }}
>>         lines:
>>           - device-tracking attach-policy IPDT_POLICY
>>       loop: "{{ netbrain_interface_attributes|dict2items }}"
>>       when: >
>>         (item.key is not regex("(Port|Vlan)"))
>>         or (item.key not in po_ints)
>>
>> On Wed, Nov 25, 2020 at 10:08 AM Stefan Hornburg (Racke) <
>> [email protected]> wrote:
>>
>>> On 11/25/20 4:44 PM, [email protected] wrote:
>>> > In an ansible play, is "or" not supported with conditional statements? 
>>> I have a task that is searching a variable for 2
>>> > values. The when statements work alone, but with "or" it runs but 
>>> doesn't do what I am expecting. Here is the task, is
>>> > my syntax wrong or is it just not supported? - 
>>> > 
>>> > 
>>> >     - name: Apply policy to the interfaces
>>> >       cisco.ios.ios_config:
>>> >         parents: interface {{ item.key }}
>>> >         lines:
>>> >           - device-tracking attach-policy IPDT_POLICY
>>> >       loop: "{{ netbrain_interface_attributes|dict2items }}"
>>> >       when: >
>>> >         item.key is not search("Port")
>>> >         or item.key is not search("Vlan")
>>> > 
>>>
>>> Maybe you need ( ) around both conditions, but you can also use 
>>> (untested)
>>>
>>>    item.key is not regex("(Port|Vlan)")
>>>
>>> Regards
>>>        Racke
>>>
>>> > 
>>> > -- 
>>> > 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] <mailto:
>>> [email protected]>.
>>> > To view this discussion on the web visit
>>> > 
>>> https://groups.google.com/d/msgid/ansible-project/a0649fd5-6757-4e91-9424-904629aad1fdn%40googlegroups.com
>>> > <
>>> https://groups.google.com/d/msgid/ansible-project/a0649fd5-6757-4e91-9424-904629aad1fdn%40googlegroups.com?utm_medium=email&utm_source=footer
>>> >.
>>>
>>>
>>> -- 
>>> Ecommerce and Linux consulting + Perl and web application programming.
>>> Debian and Sympa administration. Provisioning with Ansible.
>>>
>>> -- 
>>> 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/81625ee8-3b31-a6b7-dc30-50b4db9b5d72%40linuxia.de
>>> .
>>>
>>

-- 
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/36fbffed-c622-4565-b513-455dc1034e97n%40googlegroups.com.

Reply via email to