Hi Antony,

On second thought, you are right in that  condition will always end up 
being "true". I guess my requirement can never be written as condition in 
ansible.

Regards,
Vikram

On Thursday, 3 June, 2021 at 1:18:08 am UTC+5:30 Antony Stone wrote:

> On Wednesday 02 June 2021 at 21:31:21, Vikram S wrote:
>
> > I have written below script that will end the playbook if IOS version
> > running on router satisfies below conditions:
> > 
> > 1. Version is greater than or is 16.12.02 AND
> > 2. Version is NOT certain versions like 16.12.05 OR 16.09.06 OR
> > 17.03.02', etc as mentioned below.
> > 
> > But script does not work. When i run this for a device with version
> > 16.12.05, script fails though it shouldn't be as per the condition.
>
> I think you have = and != mixed up.
>
> > But when i test the 'AND' and 'OR' condition separately, they work. It's
> > just that when i combine them, it doesn't seem to. What should i change?
>
> Let's work through your conditions when version = 16.12.05...
>
> > tasks:
> > 
> > - name: GATHER DEVICE FACTS
> > ios_facts:
> > - name: END THIS PLAYBOOK IF DEVICE IS ALREADY RUNNING NEW IMAGE OR
> > HIGHER VERSION THAN THAT
> > fail:
>
> So, you want it to fail when something below becomes true
>
> > msg: DEVICE IS ALREADY RUNNING NEW IMAGE OR HIGHER VERSION THAN
> > THAT. HENCE UPGRADE IS NOT NECESSARY
> > when:
> > - ansible_net_version is version('16.12.06', '>=')
>
> Not true - version = 16.12.05
>
> > - "ansible_net_version is version('16.12.05', '!=') or
>
> Not true - version = 16.12.05, so "version != 16.12.05" is false
>
> > ansible_net_version is version('16.09.06', '!=') or
>
> True - version = 16.12.05, therefore != 16.09.06
>
> > ansible_net_version is version('17.03.02', '!=') or
> > ansible_net_version is version('17.03.03', '!=') or
> > ansible_net_version is version('17.05.01', '!=') or
> > ansible_net_version is version('17.07.01', '!=')"
>
> One of the conditions is true, therefore script fails.
>
>
> I *think* you want to replace "!=" with "=" so that failure occurs only if 
> the 
> version does match one of the strings you have listed.
>
> I might be wrong, and you want to keep "!=" but change "or" to "and" so 
> that 
> failure occurs only if version is not equal to any of the listed strings.
>
> Either way, I think what you have written will always end up being "true".
>
>
> Antony.
>
> -- 
> There are two possible outcomes:
>
> If the result confirms the hypothesis, then you've made a measurement.
> If the result is contrary to the hypothesis, then you've made a discovery.
>
> - Enrico Fermi
>
> Please reply to the list;
> please *don't* CC me.
>

-- 
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/c4279f53-af16-4a7e-8139-577cb82c7545n%40googlegroups.com.

Reply via email to