Async "Fire and Forget" Issues - Ansible 1.7.1

629 views
Skip to first unread message

Xavier Krantz

unread,
Dec 19, 2014, 3:30:29 PM12/19/14
to ansible...@googlegroups.com
Hello, 


I am trying to use the Async capabilities of ansible to "fire and forget" a job and then check it later and wait till its end.
I have followed the example mentioned here : http://docs.ansible.com/playbooks_async.html

But I am facing an issue and I don't really understand what's happening. 


The playbook looks like

  - name: 'MyPlay | Fire and Forget'
    command
: "/opt/PROGRAM/bin/gremlin -e /opt/PROGRAM/scripts/load_graph.grm ..."
    async
: 1000
    poll
: 0
   
register: load_graph_async


 
- name: 'MyPlay | Check Job'
    async_status
: jid={{ load_graph_async.ansible_job_id }}
   
register: job_result
   
until: job_result.finished
    retries
: 30



The playbook logs look like : 

TASK: [MyPlay | Fire and forget] *************************
<job 759951815367.27671> finished on Host1


TASK
: [MyPlay | Check Job] *************************************
fatal
: [Host1] => error while evaluating conditional: job_result.finished



What I do understand is :
 job 759951815367.27671

759951815367 is the JobID
27671 is the PID of the wrapper process

 
But when I go on the Host after the failed run, I saw

root     27674  0.0  0.0 136548  3672 ?        S    21:15   0:00 /usr/bin/python /home/USER/.ansible/tmp/ansible-tmp-1419020105.57-13577669747697/async_wrapper 759951815367 1000 /home/USER/.ansibl
root    
27675  0.0  0.0 136548  3900 ?        S    21:15   0:00  \_ /usr/bin/python /home/USER/.ansible/tmp/ansible-tmp-1419020105.57-13577669747697/async_wrapper 759951815367 1000 /home/USER/.an
root    
27676  0.1  0.0 138008  7320 ?        S    21:15   0:00      \_ /usr/bin/python /home/USER/.ansible/tmp/ansible-tmp-1419020105.57-13577669747697/command /home/USER/.ansible/tmp/ansible-tm
root    
27677  0.0  0.0 115504  1544 ?        S    21:15   0:00          \_ /bin/bash /opt/PROGRAM/bin/gremlin -e /opt/PROGRAM/scripts/load_graph.grm ...
root    
27727 84.0 14.4 4875920 1187256 ?     Sl   21:15   0:21              \_ /usr/lib/jvm/java-7-oracle/bin/java -server -Xms4g -Xmx4g -cp /opt/PROGRAM/conf:/opt/PROGRAM


So any ideas ?


Thanks a lot for your help every one :)


Adam Miller

unread,
Dec 19, 2014, 4:11:59 PM12/19/14
to ansible...@googlegroups.com
On Fri, Dec 19, 2014 at 2:30 PM, Xavier Krantz <xak...@gmail.com> wrote:
> Hello,
>
>
> I am trying to use the Async capabilities of ansible to "fire and forget" a
> job and then check it later and wait till its end.
> I have followed the example mentioned here :
> http://docs.ansible.com/playbooks_async.html

Async "fire and forget" was a new feature in Ansible 1.8 so you'll
need to update to get that functionality.

-AdamM
> --
> 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-proje...@googlegroups.com.
> To post to this group, send email to ansible...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/4c29214f-ce7d-4c30-8bdd-4107736a92eb%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Michael DeHaan

unread,
Dec 19, 2014, 7:57:06 PM12/19/14
to ansible...@googlegroups.com
Well, it wasn't a new feature in 1.8, though there was a bug fixed in the fire and forget operation when you don't specify a lifetime of the process, IIRC - I remember you filing it, all the same :)

Let us know if you have the same problem in 1.8, regardless.


Xavier Krantz

unread,
Dec 22, 2014, 1:47:47 PM12/22/14
to ansible...@googlegroups.com
Ok, thanks all for your responses.

I will upgrade to Ansible 1.8. and be back to you.

Xavier Krantz

unread,
Dec 22, 2014, 2:50:19 PM12/22/14
to ansible...@googlegroups.com
No luck ... it still does not work


$ pip install Ansible
$ pip list
 ansible
(1.8.2)
 ecdsa
(0.11)
 
Jinja2 (2.7.3)
 
MarkupSafe (0.23)
 paramiko
(1.15.2)
 pip
(1.5.6)
 pycrypto
(2.6.1)
 
PyYAML (3.11)
 setuptools
(3.6)
 wsgiref
(0.1.2)


$ ansible-playbook -i inventories/demo playbooks/run/load-graph.yml


PLAY
[VNG-Bootstrap | create-graph] *******************************************


GATHERING FACTS
***************************************************************
ok
: [Host1]
Host1: importing ../../../vars/demo.yml


TASK
: [Creating Titan graph schema] ***************************
changed
: [Host1]


TASK
: [Loading data into Titan graph] *************************
<job 356642401411.12344> finished on Host1


TASK
: [Check Loading data Status] *****************************
fatal
: [Host1] => error while evaluating conditional: load_graph_result.finished


FATAL
: all hosts have already failed -- aborting


PLAY RECAP
********************************************************************
           to
retry, use: --limit @/Users/USER/create-load-graph.retry


Host1 : ok=10   changed=2    unreachable=1    failed=0


Playbook changes

 diff --git a/deployment/ansible/playbooks/run/create-load-graph.yml b/deployment/ansible/'playbooks/run/create-load-graph.yml'
 index
86a4fac..246f820 100644
 
--- a/deployment/ansible/playbooks/run/create-load-graph.yml
 
+++ b/deployment/ansible/playbooks/run/create-load-graph.yml
 
@@ -38,8 +38,15 @@
 
-    async: 14400
 
-    poll: 60
 
+    async: 1000
 
+    poll: 0
 
+    register: load_graph
 
+
 
+  - name: 'Check Loading data Status'
 
+    async_status: jiid={{ load_graph.ansible_job_id }}
 
+    register: load_graph_result
 
+    until: load_graph_result.finished
 
+    retries: 60

Xavier Krantz

unread,
Dec 22, 2014, 3:02:45 PM12/22/14
to ansible...@googlegroups.com
Hello,

Gist is here it some body wants to give a look : https://gist.github.com/xakraz/2ec7086d04630b833d23


Thanks again

Adam Miller

unread,
Dec 22, 2014, 6:10:12 PM12/22/14
to ansible...@googlegroups.com
On Mon, Dec 22, 2014 at 2:02 PM, Xavier Krantz <xak...@gmail.com> wrote:
> Hello,
>
> Gist is here it some body wants to give a look :
> https://gist.github.com/xakraz/2ec7086d04630b833d23


I think the problem is here:
https://gist.github.com/xakraz/2ec7086d04630b833d23#file-create-load-graph-yml-L46

Where the variable is 'jiid':

async_status: jiid={{ load_graph.ansible_job_id }}

But should be 'jid'

async_status: jid={{ load_graph.ansible_job_id }}

Hopefully that works.

-AdamM
> https://groups.google.com/d/msgid/ansible-project/d369aaf4-32be-4d55-87d7-58039abe5863%40googlegroups.com.

Xavier Krantz

unread,
Dec 22, 2014, 7:26:06 PM12/22/14
to ansible...@googlegroups.com, maxam...@fedoraproject.org
Shame on me ... I was spitting against ansible whereas I made a dummy typo in the YAML playbook file.

Thanks Adam.


But by the way, what is the cleanest manner to 
- launch a long running task with Ansible
- check it is still running
- display progress

Do I have to use the async / poll statement and adjust their values to have a limit and fail if it was too long to run ?



Thanks again for your help !
Reply all
Reply to author
Forward
0 new messages