Hello.

Thx. for your reply.
Changed the IPs as suggested. Yes I see it easier.
What I see from the execution above is, after the 'force a failure' the 
debug task is also executed. I understood the rescue section should be 
executed just after the failure, instead of any other task.
Perhaps I misunderstood this part.

> ansible-playbook -i ./environments/CD-5525/hosts.yml main_CD-5525.yml -bK
BECOME password: 

PLAY [Start MySql cluster databases] 
***********************************************************************************************

TASK [CD-5525 : debug] 
*************************************************************************************************************
ok: [xxx] => {
    "msg": "I execute normally"
}
ok: [yyy] => {
    "msg": "I execute normally"
}
ok: [zzz] => {
    "msg": "I execute normally"
}

TASK [CD-5525 : i force a failure] 
*************************************************************************************************
skipping: [yyy]
skipping: [zzz]
fatal: [xxx]: FAILED! => {"ansible_facts": 
{"discovered_interpreter_python": "/usr/bin/python3"}, "changed": true, 
"cmd": ["/bin/false"], "delta": "0:00:00.002018", "end": "2022-04-18 
06:41:39.602367", "msg": "non-zero return code", "rc": 1, "start": 
"2022-04-18 06:41:39.600349", "stderr": "", "stderr_lines": [], "stdout": 
"", "stdout_lines": []}

TASK [CD-5525 : debug] 
*************************************************************************************************************
ok: [yyy] => {
    "msg": "I never execute, due to the above task failing, :-("
}
ok: [zzz] => {
    "msg": "I never execute, due to the above task failing, :-("
}

TASK [CD-5525 : debug] 
*************************************************************************************************************
ok: [xxx] => {
    "msg": "I caught an error"
}

TASK [CD-5525 : i force a failure in middle of recovery! >:-)] 
*********************************************************************
fatal: [xxx]: FAILED! => {"ansible_facts": 
{"discovered_interpreter_python": "/usr/bin/python3"}, "changed": true, 
"cmd": ["/bin/false"], "delta": "0:00:00.002136", "end": "2022-04-18 
06:41:43.100661", "msg": "non-zero return code", "rc": 1, "start": 
"2022-04-18 06:41:43.098525", "stderr": "", "stderr_lines": [], "stdout": 
"", "stdout_lines": []}

PLAY RECAP 
*************************************************************************************************************************
xxx              : ok=2    changed=0    unreachable=0    failed=1   
 skipped=0    rescued=1    ignored=0   
zzz              : ok=2    changed=0    unreachable=0    failed=0   
 skipped=1    rescued=0    ignored=0   
yyy              : ok=2    changed=0    unreachable=0    failed=0   
 skipped=1    rescued=0    ignored=0

In my example, if the first task (Starts the fist node ...) fails, should 
it continue with the second task (Start the rest of nodes) instead of going 
to the rescue block ?

  block:
    - name: Starts the first node of the cluster in bootstrap mode
      shell: /etc/init.d/mysql bootstrap-pxc
      when: inventory_hostname == groups.CD5525[0]
      become: yes
      register: return_out
                                                 
    - name: Start the rest of nodes
      systemd:
        state: started
        name: mysql
      when: inventory_hostname != groups.CD5525[0]
      become: yes
      register: screen_out 

Thank you
Javier

On Monday, April 18, 2022 at 12:14:37 PM UTC+2 [email protected] wrote:

> > […] but the example above shows this does not happen.
> What, exactly, in the posted output leads you to that conclusion?
> What did you expect instead?
> It appears to me to be exactly the expected output - in spite of your 
> having changed all three host names to "xxx". (Which, frankly, didn't make 
> understanding your output any easier; maybe use "xxx", "yyy", and "zzz" 
> next time? And, name your tasks.)
>
> On Monday, April 18, 2022 at 5:01:42 AM UTC-4 [email protected] wrote:
>
>> Hello again.
>>
>> I'm still trying to understand this issue ...
>> I played with the example that comes with the Ansible documentation:
>>
>> - name: Attempt and graceful roll back demo
>>   block:
>>     - debug:
>>         msg: 'I execute normally'
>>
>>     - name: i force a failure
>>       command: /bin/false
>>       when: inventory_hostname == groups.CD5525[0]    <<<--- *I added 
>> this line to force the failure only in the first node*
>>
>>     - debug:
>>         msg: 'I never execute, due to the above task failing, :-('
>>   rescue:
>>     - debug:
>>         msg: 'I caught an error'
>>     - name: i force a failure in middle of recovery! >:-)
>>       command: /bin/false
>>     - debug:
>>         msg: 'I also never execute :-('
>>   always:
>>     - debug:
>>         msg: "This always executes"
>>
>> *And this is the output:*
>>
>> > ansible-playbook -i ./environments/CD-5525/hosts.yml main_CD-5525.yml 
>> -bK 
>> BECOME password: 
>>
>> PLAY [Start MySql cluster databases] 
>> ***********************************************************************************************
>>
>> TASK [CD-5525 : debug] 
>> *************************************************************************************************************
>> ok: [xxx] => {
>>     "msg": "I execute normally"
>> }
>> ok: [xxx] => {
>>     "msg": "I execute normally"
>> }
>> ok: [xxx] => {
>>     "msg": "I execute normally"
>> }
>>
>> TASK [CD-5525 : i force a failure] 
>> *************************************************************************************************
>> skipping: [xxx]
>> skipping: [xxx]
>> fatal: [xxxx]: FAILED! => {"ansible_facts": 
>> {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, 
>> "cmd": ["/bin/false"], "delta": "0:00:00.001826", "end": "2022-04-18 
>> 04:43:40.809305", "msg": "non-zero return code", "rc": 1, "start": 
>> "2022-04-18 04:43:40.807479", "stderr": "", "stderr_lines": [], "stdout": 
>> "", "stdout_lines": []}
>>
>> TASK [CD-5525 : debug] 
>> *************************************************************************************************************
>> ok: [xxxx] => {
>>     "msg": "I never execute, due to the above task failing, :-("
>> }
>> ok: [xxx] => {
>>     "msg": "I never execute, due to the above task failing, :-("
>> }
>>
>> TASK [CD-5525 : debug] 
>> *************************************************************************************************************
>> ok: [xxx] => {
>>     "msg": "I caught an error"
>> }
>>
>> TASK [CD-5525 : i force a failure in middle of recovery! >:-)] 
>> *********************************************************************
>> fatal: [xxx]: FAILED! => {"ansible_facts": 
>> {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, 
>> "cmd": ["/bin/false"], "delta": "0:00:00.001778", "end": "2022-04-18 
>> 04:43:44.077290", "msg": "non-zero return code", "rc": 1, "start": 
>> "2022-04-18 04:43:44.075512", "stderr": "", "stderr_lines": [], "stdout": 
>> "", "stdout_lines": []}
>>
>> TASK [CD-5525 : debug] 
>> *************************************************************************************************************
>> ok: [xxx] => {
>>     "msg": "This always executes"
>> }
>> ok: [xxx] => {
>>     "msg": "This always executes"
>> }
>> ok: [xxx] => {
>>     "msg": "This always executes"
>> }
>>
>> PLAY RECAP 
>> *************************************************************************************************************************
>> xxx              : ok=3    changed=0    unreachable=0    failed=1   
>>  skipped=0    rescued=1    ignored=0   
>> xxx              : ok=3    changed=0    unreachable=0    failed=0   
>>  skipped=1    rescued=0    ignored=0   
>> xxx              : ok=3    changed=0    unreachable=0    failed=0   
>>  skipped=1    rescued=0    ignored=0
>>
>>
>> What I understand is as soon as the first error occurs the rescue section 
>> should be executed but the example above shows this does not happen.
>> Anyone could explain me where the issue is please ?
>>
>> Appreciate your help.
>> Javier
>>
>> On Friday, April 8, 2022 at 11:49:33 AM UTC+2 Fco. Javier Lopez wrote:
>>
>>> Hello guys !
>>>
>>> I have the following role created:
>>>
>>> - name: Recover
>>>   block:
>>>     - name: Starts the first node of the cluster in bootstrap mode
>>>       shell: /etc/init.d/mysql bootstrap-pxc
>>>       when: inventory_hostname == groups.CD5525[0]
>>>       become: yes
>>>       register: return_out
>>>
>>>     - name: Start the rest of nodes
>>>       systemd:
>>>         state: started
>>>         name: mysql
>>>       when: inventory_hostname != groups.CD5525[0]
>>>       become: yes
>>>       register: screen_out
>>>
>>>     - name: Stop the bootstrapped node to restart it in normal state
>>>       shell: service mysql bootstrap-stop
>>>       when: inventory_hostname == groups.CD5525[0]
>>>       become: yes
>>>       register: screen_out
>>>
>>>     - name: Start the first node in normal status
>>>       systemd:
>>>         state: started
>>>         name: mysql
>>>       when: inventory_hostname == groups.CD5525[0]
>>>       become: yes
>>>       register: screen_out
>>>
>>>   rescue:
>>>     - name: Print when errors
>>>       debug:
>>>         msg: "Found an error, can not continue ! {{ansible_failed_task}}"
>>>
>>>   any_errors_fatal: true
>>>
>>>
>>> I have three nodes. 
>>> I need to control the failure on the first node but the rescue section 
>>> is not executed until I receive failures from all the nodes.
>>>
>>> Went through the documentation and different posts but did not find a 
>>> conclusion about how this works with more than one node or, perhaps, I'm 
>>> doing something wrong.
>>>
>>> Your comments are welcome, thank you.
>>>
>>> This is the output:
>>>
>>> TASK [CD-5525 : Starts the first node of the cluster in bootstrap mode] 
>>> ************************************************************
>>> skipping: [xxx.xx.xxx.xx]
>>> skipping: [xxx.xx.xxx.xx]
>>> fatal: [xxx.xx.xxx.xx]: FAILED! => {"ansible_facts": 
>>> {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, 
>>> "cmd": "/etc/init.d/mysql bootstrap-pxc", "delta": "0:00:10.059969", "end": 
>>> "2022-04-08 04:45:07.890197", "msg": "non-zero return code", "rc": 1, 
>>> "start": "2022-04-08 04:44:57.830228", "stderr": "", "stderr_lines": [], 
>>> "stdout": " * Bootstrapping Percona XtraDB Cluster database server mysqld\n 
>>> * The server quit without updating PID file (/var/run/mysqld/mysqld.pid).\n 
>>>   ...fail!", "stdout_lines": [" * Bootstrapping Percona XtraDB Cluster 
>>> database server mysqld", " * The server quit without updating PID file 
>>> (/var/run/mysqld/mysqld.pid).", "   ...fail!"]}
>>>
>>> TASK [CD-5525 : Start the rest of nodes] 
>>> *******************************************************************************************
>>> fatal: [xxx.xx.xxx.xx]: FAILED! => {"ansible_facts": 
>>> {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, 
>>> "msg": "Unable to start service mysql: Job for mysql.service failed because 
>>> the control process exited with error code.\nSee \"systemctl status 
>>> mysql.service\" and \"journalctl -xe\" for details.\n"}
>>> fatal: [xxx.xx.xxx.xx]: FAILED! => {"ansible_facts": 
>>> {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, 
>>> "msg": "Unable to start service mysql: Job for mysql.service failed because 
>>> the control process exited with error code.\nSee \"systemctl status 
>>> mysql.service\" and \"journalctl -xe\" for details.\n"}
>>>
>>> TASK [CD-5525 : Print when errors] 
>>> *************************************************************************************************
>>> ok: [xxx.xx.xxx.xx] => {
>>> ...
>>> ...
>>>
>>

-- 
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/466f3aba-f55e-445c-a00f-1bcc2db4e8d3n%40googlegroups.com.

Reply via email to