Problem using fetch and with_items

42 views
Skip to first unread message

Jeff Potts

unread,
May 8, 2015, 12:10:43 PM5/8/15
to ansible...@googlegroups.com
I can successfully fetch a file with an explicit src. However, when I try to use with_items, I am getting a "remote file does not exist" error.

It doesn't matter whether I use a hard-coded list for with_items or a variable.

Here is the playbook:

---
- hosts: '{{ hosts }}'
  tasks
:
 
- name: List output files
    shell
: bash -lc "ls -1 /opt/appbin/elasticsearch/support-diagnostics.*.tar.gz"
   
register: resultfiles
 
- debug: var=resultfiles
 
- name: Fetch files
    action
: fetch src=$item dest=/Users/jpotts/Desktop/diags/ flat=yes fail_on_missing=yes
    with_items
:
     
- "{{ resultfiles.stdout_lines }}"

And here is the output:

(ansible)Metaversant:ansible jpotts$ ansible-playbook runDiagnostics.yml --extra-vars "hosts=xldwcs01.someco.com"

PLAY
[xldwcs01.someco.com] ***************************************************

GATHERING FACTS
***************************************************************
ok
: [xldwcs01.someco.com]

TASK
: [List output files] *****************************************************
changed
: [xldwcs01.someco.com]

TASK
: [debug var=resultfiles] *************************************************
ok
: [xldwcs01.someco.com] => {
   
"resultfiles": {
       
"changed": true,
       
"cmd": "bash -lc \"ls -1 /opt/appbin/elasticsearch/support-diagnostics.*.tar.gz\"",
       
"delta": "0:00:00.040305",
       
"end": "2015-05-08 10:43:11.456619",
       
"invocation": {
           
"module_args": "bash -lc \"ls -1 /opt/appbin/elasticsearch/support-diagnostics.*.tar.gz\"",
           
"module_name": "shell"
       
},
       
"rc": 0,
       
"start": "2015-05-08 10:43:11.416314",
       
"stderr": "",
       
"stdout": "/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181150.tar.gz\n/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181232.tar.gz\n/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181319.tar.gz\n/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181634.tar.gz\n/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181958.tar.gz",
       
"stdout_lines": [
           
"/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181150.tar.gz",
           
"/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181232.tar.gz",
           
"/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181319.tar.gz",
           
"/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181634.tar.gz",
           
"/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181958.tar.gz"
       
],
       
"warnings": []
   
}
}

TASK
: [Fetch file] ************************************************************
failed
: [xldwcs01.someco.com] => (item=/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181150.tar.gz) => {"failed": true, "file": "$item", "item": "/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181150.tar.gz"}
msg
: the remote file does not exist
failed
: [xldwcs01.someco.com] => (item=/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181232.tar.gz) => {"failed": true, "file": "$item", "item": "/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181232.tar.gz"}
msg
: the remote file does not exist
failed
: [xldwcs01.someco.com] => (item=/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181319.tar.gz) => {"failed": true, "file": "$item", "item": "/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181319.tar.gz"}
msg
: the remote file does not exist
failed
: [xldwcs01.someco.com] => (item=/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181634.tar.gz) => {"failed": true, "file": "$item", "item": "/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181634.tar.gz"}
msg
: the remote file does not exist
failed
: [xldwcs01.someco.com] => (item=/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181958.tar.gz) => {"failed": true, "file": "$item", "item": "/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181958.tar.gz"}
msg
: the remote file does not exist

FATAL
: all hosts have already failed -- aborting

PLAY RECAP
********************************************************************
           to
retry, use: --limit @/Users/jpotts/runDiagnostics.retry

xldwcs01
.someco.com       : ok=3    changed=1    unreachable=0    failed=1

I have also tried removing the variable by using the following task, which fails similarly:
  - name: Fetch specific file
    fetch
: src=$item dest=/Users/jpotts/Desktop/diags/ flat=yes fail_on_missing=yes
    with_items
:
     
- /opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181958.tar.gz

If I use one of the file paths from the debug output as the explicit src, it works:
  - name: Fetch specific file
    fetch
: src=/opt/appbin/elasticsearch/support-diagnostics.xldwcs01._local.20150507-181958.tar.gz dest=/Users/jpotts/Desktop/diags/ flat=yes fail_on_missing=yes

This is Ansible 1.8.2 on Mac OS X.

Jeff

Brian Coca

unread,
May 8, 2015, 12:11:42 PM5/8/15
to ansible...@googlegroups.com
try
src={{item}}

$var was removed from ansible several versions back.



--
Brian Coca

Jeff Potts

unread,
May 8, 2015, 12:23:20 PM5/8/15
to ansible...@googlegroups.com
That worked, thanks.
Reply all
Reply to author
Forward
0 new messages