Hi Aaron,

did you managed to have ansible rollback deployment on all hosts when 
anyone failed in any task ? 

On Friday, 17 November 2017 19:22:59 UTC+5:30, Aaron Falk wrote:
>
> There is no possibility to run the rescue part for all hosts if one host 
> fails. I'm working on my deployment for a website. I want to deploy the 
> site to multiple hosts. If something fails for one host than all hosts 
> should not be deployed. Therefore, a rollback on all hosts should happen. 
> The configuration "any_errors_fatal" is not working for it.
>
> I am using ansible 2.4.1.0
>
> Here the steps to reproduce:
>
> - block:
>     - name: Update database schema
>       shell: cd '{{ ansible_web_deployment_webroot }}/releases/{{ 
> ansible_web_deployment_release }}' && php7.1 console.php 
> orm:schema-tool:update --force
>       when: inventory_hostname in groups['schema']
>     - name: Deployment
>       debug:
>         msg: 'Deploying'
>   rescue:
>     - name: Rollback
>       debug:
>         msg: 'Rollback'
>   any_errors_fatal: true
>
>
> Expected results:
>
> PLAY [test] 
> ********************************************************************
>
> TASK [Gathering Facts] 
> *********************************************************
> ok: [x1.example.com]
> ok: [x2.example.com]
> ok: [x3.example.com]
> ok: [x4.example.com]
>
> TASK [ansible_web_deployment : Update database schema] 
> *************************
> skipping: [x2.example.com]
> skipping: [x3.example.com]
> skipping: [x4.example.com]
> fatal: [x1.example.com]: FAILED! => {"changed": true, "cmd": "cd 
> '/var/www/x.example.com/releases/20171113081452' && php7.1 console.php 
> orm:schema-tool:update --force", "delta": "0:00:00.007578", "end": 
> "2017-11-13 08:15:05.709148", "failed": true, "msg": "non-zero return code", 
> "rc": 2, "start": "2017-11-13 08:15:05.701570", "stderr": "/bin/sh: 1: cd: 
> can't cd to /var/www/x.example.com/releases/20171113081452", "stderr_lines": 
> ["/bin/sh: 1: cd: can't cd to 
> /var/www/x.example.com/releases/20171113081452"], "stdout": "", 
> "stdout_lines": []}
>
> TASK [ansible_web_deployment : Rollback] *****************************
> ok: [x1.example.com] => {
>     "msg": "Rollback"
> }
> ok: [x2.example.com] => {
>     "msg": "Rollback"
> }
> ok: [x2.example.com] => {
>     "msg": "Rollback"
> }
> ok: [x4.example.com] => {
>     "msg": "Rollback"
> }
>
> PLAY RECAP 
> *********************************************************************
> 127.0.0.1                  : ok=2    changed=0    unreachable=0    failed=0
> x1.example.com : ok=2    changed=1    unreachable=0    failed=1
> x2.example.com : ok=2    changed=1    unreachable=0    failed=1
> x3.example.com : ok=2    changed=1    unreachable=0    failed=1
> x4.example.com : ok=2    changed=1    unreachable=0    failed=1
>
>
> Actual results:
>
> PLAY [test] 
> ********************************************************************
>
> TASK [Gathering Facts] 
> *********************************************************
> ok: [x1.example.com]
> ok: [x2.example.com]
> ok: [x3.example.com]
> ok: [x4.example.com]
>
> TASK [ansible_web_deployment : Update database schema] 
> *************************
> skipping: [x2.example.com]
> skipping: [x3.example.com]
> skipping: [x4.example.com]
> fatal: [x1.example.com]: FAILED! => {"changed": true, "cmd": "cd 
> '/var/www/x.example.com/releases/20171113081452' && php7.1 console.php 
> orm:schema-tool:update --force", "delta": "0:00:00.007578", "end": 
> "2017-11-13 08:15:05.709148", "failed": true, "msg": "non-zero return code", 
> "rc": 2, "start": "2017-11-13 08:15:05.701570", "stderr": "/bin/sh: 1: cd: 
> can't cd to /var/www/x.example.com/releases/20171113081452", "stderr_lines": 
> ["/bin/sh: 1: cd: can't cd to 
> /var/www/x.example.com/releases/20171113081452"], "stdout": "", 
> "stdout_lines": []}
>
> TASK [ansible_web_deployment : Restart services] *****************************
> ok: [x2.example.com] => {
>     "msg": "Deploying"
> }
> ok: [x2.example.com] => {
>     "msg": "Deploying"
> }
> ok: [x4.example.com] => {
>     "msg": "Deploying"
> }
>
> TASK [ansible_web_deployment : Rollback] *****************************
> ok: [x1.example.com] => {
>     "msg": "Rollback"
> })
>
> PLAY RECAP 
> *********************************************************************
> 127.0.0.1                  : ok=2    changed=0    unreachable=0    failed=0
> x1.example.com : ok=2    changed=1    unreachable=0    failed=1
> x2.example.com : ok=2    changed=1    unreachable=0    failed=0
> x3.example.com : ok=2    changed=1    unreachable=0    failed=0
> x4.example.com : ok=2    changed=1    unreachable=0    failed=0
>
>
> How can I achieve that all hosts go in rescue mode when a single host 
> throws an exception?
>
> If you have a look at the Github issue 14024 
> <https://github.com/ansible/ansible/issues/14024>, you'll see that this 
> should work.
> Unfortunately I was not able to get it to work.
>
> Thank you for your input.
>

-- 
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/24857048-22b4-4645-aaec-5dd89846fed4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to