在远程主机上,我在/ tmp下有很多文件,名称如EM_Prereq *,我想将所有这些文件复制到我的ansible服务器下的当前ansible工作目录或/ tmp / results目录下。 我使用下面的代码,工作正常,但它创建文件的路径不同于我的预期。
在路径/tmp/EM_Prereq_testbafffmqygx_root_Warning_20180311202123.txt/test.host.com/tmp/<actual file name>
但我希望将文件创建为/tmp/results/<file name>
---
- name: 'vij'
hosts: 'all'
gather_facts: 'false'
tasks:
- name: 'ls files'
shell: "ls -l /tmp/EM_Prereq_*|awk '{print $(NF)}'"
register: 'filetocopy'
- name: 'fetch files'
fetch :
src: '{{ item }}'
dest: '{{ item }}'
with_items: '{{ filetocopy.stdout_lines }}'
输出低于
changed: [test.host.com] => (item=/tmp/EM_Prereq_testbafffmqygx_root_Warning_20180311202123.txt) => {
"changed": true,
"checksum": "1f7edc7c9704add9f3b191c70a6eb81aa4ff3e14",
"dest": "/tmp/EM_Prereq_testbafffmqygx_root_Warning_20180311202123.txt/oc-129-158-67-48.compute.oraclecloud.com/tmp/EM_Prereq_testbafffmqygx_root_Warning_20180311202123.txt",
"item": "/tmp/EM_Prereq_testbafffmqygx_root_Warning_20180311202123.txt",
"md5sum": "de1bcca72d0c391f203d2956e672f51d",
"remote_checksum": "1f7edc7c9704add9f3b191c70a6eb81aa4ff3e14",
"remote_md5sum": null
}
感谢您的输入
答案 0 :(得分:1)
请参阅:http://docs.ansible.com/ansible/latest/fetch_module.html
您需要: flat:yes 正如文档所述:允许您覆盖将hostname / path /追加到目标的默认行为。如果dest以'/'结尾,它将使用源文件的基名,类似于复制模块。显然,如果文件名是唯一的,这只是方便的。
- name: 'fetch files'
fetch :
src: '{{ item }}'
dest: '/tmp/results/'
flat: yes
with_items: '{{ filetocopy.stdout_lines }}'
编辑:您还希望目标目录为'/ tmp / results /',而不是{{item}}