Last update (I think).

So i managed to clarify the situation. Seems that the problem occurs only
when i'm using roles with block/rescue options. Without it everything works
smooth.

For example:


*Roles Playbook without block/rescue:- hosts: TEONET01A,TEONET01B*





* gather_facts: false any_errors_fatal: True roles: - test Roles task
(block commented): --- # - name: Run test pbook # block: - assert: that: -
ansible_hostname == 'TEONET01A' - debug: msg: In role # rescue: # - debug:
# msg: Rescue Runs as expected and play exists after fatal error in
assert:root@PCEDVKAIL3:/etc/ansible# ansible-playbook playbook.ymlPLAY
[TEONET01A,TEONET01B]
***************************************************************************************************************************************************************************************************************************************************************
TASK [test : assert]
*********************************************************************************************************************************************************************************************************************************************************************
[WARNING]: ansible-pylibssh not installed, falling back to paramiko ok:
[10.8.250.46] => { "changed": false, "msg": "All assertions passed" }
[WARNING]: ansible-pylibssh not installed, falling back to paramiko fatal:
[10.8.250.47]: FAILED! => { "assertion": "ansible_hostname == 'TEONET01A'",
"changed": false, "evaluated_to": false, "msg": "Assertion failed" } NO
MORE HOSTS LEFT
***********************************************************************************************************************************************************************************************************************************************************************
PLAY RECAP
*******************************************************************************************************************************************************************************************************************************************************************************
10.8.250.46 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0
ignored=0 10.8.250.47 : ok=0 changed=0 unreachable=0 failed=1 skipped=0
rescued=0 ignored=0 Now how it works with block/rescue - seems like bugsame
playbook:- hosts: TEONET01A,TEONET01B gather_facts: false any_errors_fatal:
True roles: - test Roles (block uncommented): --- - name: Run test pbook
block: - assert: that: - ansible_hostname == 'TEONET01A' - debug: msg: In
role rescue: - debug: msg: Rescue Runs as not expected and play continues
with other host even the host assert fails: root@PCEDVKAIL3:/etc/ansible#
ansible-playbook playbook.yml PLAY [TEONET01A,TEONET01B]
***************************************************************************************************************************************************************************************************************************************************************
TASK [test : assert]
*********************************************************************************************************************************************************************************************************************************************************************
[WARNING]: ansible-pylibssh not installed, falling back to paramiko ok:
[10.8.250.46] => { "changed": false, "msg": "All assertions passed" }
[WARNING]: ansible-pylibssh not installed, falling back to paramiko fatal:
[10.8.250.47]: FAILED! => { "assertion": "ansible_hostname == 'TEONET01A'",
"changed": false, "evaluated_to": false, "msg": "Assertion failed" } TASK
[test : debug]
**********************************************************************************************************************************************************************************************************************************************************************
ok: [10.8.250.46] => { "msg": "In role" } TASK [test : debug]
**********************************************************************************************************************************************************************************************************************************************************************
ok: [10.8.250.47] => { "msg": "Rescue" } PLAY RECAP
*******************************************************************************************************************************************************************************************************************************************************************************
10.8.250.46 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0
ignored=0 10.8.250.47 : ok=1 changed=0 unreachable=0 failed=0 skipped=0
rescued=1 ignored=0 *





On Tue, Jun 6, 2023 at 4:29 PM Edvinas Kairys <edvinas.em...@gmail.com>
wrote:

> checked again, problem with serial 1 is that it doesn't run tasks in
> parallel.
>
> so then i have same playbook which is not in roles it runs like this:
>
>
>
>
> *TASK [assert]
> **********************************************************************************************************ok:
> [10.8.250.46]fatal: [10.8.250.47]: FAILED! => {"assertion": "('MGMT0' not
> in interface_running_config['interface']['Ethernet' ~
> full_fex_interface_number]['description'] | default (''))", "changed":
> false, "evaluated_to": false, "msg": "failed"}[10.8.250.47] TASK: assert
> (debug)>*
>
> but when the same playbook is in roles modes it continues to play even
> assert fails:
>
>
>
>
>
>
> *TASK [network_port_channel : assert]
> ******************************************************************************************************************************************************************************fatal:
> [TEONET01B]: FAILED! => {"assertion": "('MGMT0' not in
> interface_running_config['interface']['Ethernet' ~
> full_fex_interface_number]['description'] | default (''))", "changed":
> false, "evaluated_to": false, "msg": "failed"}ok: [TEONET01A]TASK
> [network_port_channel : fail]
> ********************************************************************************************************************************************************************************skipping:
> [TEONET01A]*
>
> So i still think that it's the bug - the any_errors_fatal: true doenst
> work in roles.
>
> Will, i think this sentence ("Ansible *finishes the fatal task on all
> hosts in the current batch*"). Means that it finishes only the TASK but
> not the whole playbook.
>
>
>
>
> On Tue, Jun 6, 2023 at 1:07 PM Edvinas Kairys <edvinas.em...@gmail.com>
> wrote:
>
>> I havent mentioned, that im using roles, when thereis simple playbook -
>> everything works as expected - it quits playbook after assertion fails.
>> When using roles - the assertion fails - and the playbook continues only
>> with the host, which had assertion passed.
>>
>> I think its a bug, but i will try serial 1.
>>
>> On Tuesday, June 6, 2023, Will McDonald <wmcdon...@gmail.com> wrote:
>>
>>> Hey Edvinas,
>>>
>>> As Kosala mentions, this should do what you want, however I think the
>>> specific piece of documentation to note is "Ansible *finishes the fatal
>>> task on all hosts in the current batch*". With 2 hosts, and the default
>>> of 5 forks, your batch size will be 5 so your play will carry on across
>>> both hosts. If you set "serial: 1" it'll probably behave the way you want.
>>>
>>> Cheers,
>>>
>>> Will.
>>>
>>> On Tue, 6 Jun 2023 at 08:05, "Kosala Atapattu (කෝසල අතපත්තු)" <
>>> kosala.atapa...@gmail.com> wrote:
>>>
>>>> The doc says it should do what you’re after.
>>>>
>>>> If you set any_errors_fatal and a task returns an error, Ansible
>>>> finishes the fatal task on all hosts in the current batch, then stops
>>>> executing the play on all hosts. Subsequent tasks and plays are not
>>>> executed. You can recover from fatal errors by adding a rescue section
>>>> <https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_blocks.html#block-error-handling>
>>>>  to
>>>> the block. You can set any_errors_fatal at the play or block level.
>>>>
>>>>
>>>>  I never have used it personally, but are you setting
>>>> any_errors_fatal:true at the task level or playbook level?
>>>>
>>>>
>>>>
>>>> Sent from my iPhone
>>>>
>>>> On 6/06/2023, at 6:51 PM, Edvinas Kairys <edvinas.em...@gmail.com>
>>>> wrote:
>>>>
>>>> Hello, thanks for reply.
>>>>
>>>> I've two hosts in the play, and one of the hosts assert module doesnt
>>>> validate to true and fails. With any_errors_fatal command I expect the
>>>> playbook to stop on all hosts within the play. But in my case, the play
>>>> stops only on failed host, it continues with other host where assertions
>>>> passed.
>>>>
>>>> Is this expected behaviour ?
>>>>
>>>> On Tuesday, June 6, 2023, Kosala Atapattu <kosala.atapa...@gmail.com>
>>>> wrote:
>>>>
>>>>> Yes any_errors_fatal is what you need:
>>>>> https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_error_handling.html#aborting-on-the-first-error-any-errors-fatal
>>>>>
>>>>> When you say it doesn't seem to work, what does not seem to work?
>>>>>
>>>>> *Kosala*
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Jun 6, 2023 at 2:07 AM edvina...@gmail.com <
>>>>> edvinas.em...@gmail.com> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> My playbook has several hosts, and I have some tasks with *assert *and
>>>>>> *fail *modules. How to do that if the task gets any fatal error in
>>>>>> the play within particular host - the whole play should is terminated ?
>>>>>>
>>>>>> I thought that playbook command *any_errors_fatal *would work, but
>>>>>> seems not.
>>>>>>
>>>>>> Is there any other way to make playbook stop if any of the hosts
>>>>>> experiences errors ?
>>>>>>
>>>>>> I see ansible has meta modules - there are some kind like end_play
>>>>>> module, maybe this one would work..
>>>>>>
>>>>>> Thank you.
>>>>>>
>>>>>> --
>>>>>> 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 ansible-project+unsubscr...@googlegroups.com.
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/ansible-project/87c9f759-872f-40b7-b80c-73f61817fb82n%40googlegroups.com
>>>>>> <https://groups.google.com/d/msgid/ansible-project/87c9f759-872f-40b7-b80c-73f61817fb82n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to a topic in the
>>>>> Google Groups "Ansible Project" group.
>>>>> To unsubscribe from this topic, visit
>>>>> https://groups.google.com/d/topic/ansible-project/VjdgAcJWJzc/unsubscribe
>>>>> .
>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>> ansible-project+unsubscr...@googlegroups.com.
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/ansible-project/CAP7S5HawfBqkb4L1DjmZumHmJFw-Rtm8Fuh4t2JCuKmr_AE_-A%40mail.gmail.com
>>>>> <https://groups.google.com/d/msgid/ansible-project/CAP7S5HawfBqkb4L1DjmZumHmJFw-Rtm8Fuh4t2JCuKmr_AE_-A%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>> --
>>>> 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 ansible-project+unsubscr...@googlegroups.com.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/ansible-project/CAOrc2M9XhNiSe5ieGYMoonMU0gnScrp1fUv2YtzZdm4gy8sW_g%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/ansible-project/CAOrc2M9XhNiSe5ieGYMoonMU0gnScrp1fUv2YtzZdm4gy8sW_g%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>> --
>>>> 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 ansible-project+unsubscr...@googlegroups.com.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/ansible-project/66611F66-7964-4D3F-8CB8-2018FEBAB763%40gmail.com
>>>> <https://groups.google.com/d/msgid/ansible-project/66611F66-7964-4D3F-8CB8-2018FEBAB763%40gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "Ansible Project" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/ansible-project/VjdgAcJWJzc/unsubscribe
>>> .
>>> To unsubscribe from this group and all its topics, send an email to
>>> ansible-project+unsubscr...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/ansible-project/CAKtKohQtv40%2BsXbpkfhQwJwZC%3DDS2RyjtFj12_gz1QDfZFWTag%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/ansible-project/CAKtKohQtv40%2BsXbpkfhQwJwZC%3DDS2RyjtFj12_gz1QDfZFWTag%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
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 ansible-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAOrc2M_6ffu%3DSTpqpC2DQe%2B%2BDVR0NW6J3JhxX45iu%3DaDDiCAmw%40mail.gmail.com.

Reply via email to