Abort executing playbook if condition not match

If condition fails it should not go for the next step and exit from there only.

In following situation, when: C != test_val it should exit from here only instead of going to the next step. How can i achieve this.

  • name: Set the output of the this state
    set_fact: A=“{{image_avl.stdout}}”
    tags: avl1

  • name: Define our static value for the desired image number
    set_fact: B={{retain}}
    tags: num2

  • name: difference
    set_fact: C = {{A}} - {{B}}
    tags: del1

  • name: set the desire value
    set_fact: test_val=1
    tags: fact2

  • name: condition1
    action: sending email here
    when: C != test_val
    tags: message

  • name: condition2

  • name: condition3

If condition fails it should not go for the next step and exit from there
only.

In following situation, when: C != test_val it should exit from here
only instead of going to the next step. How can i achieve this.

   - name: Set the output of the this state
     set_fact: A="{{image_avl.stdout}}"
     tags: avl1

   - name: Define our static value for the desired image number
     set_fact: B={{retain}}
     tags: num2

   - name: difference
     set_fact: C = {{A}} - {{B}}
     tags: del1

I don't think this will work, you need to have in inside one {{ }} par.
set_fact: C = {{ A - B }}

You also might need to filter A and/or B through filter int or float depending on data type.

   - name: set the desire value
     set_fact: test_val=1
     tags: fact2

   - name: condition1
     action: sending email here
     when: C != test_val
     tags: message

Just add a fail task:

- fail: msg="Failed because {{ C }} not equal to {{ test_val }}"
   when: C != test_val

I tried with fail and it works.

Is this works when we set any_errors_fatal: true

you can also use “assert” and the execution stops right there and it will not execute any tasks further