我正在ansible客户端上远程运行脚本,该脚本创建了文件名HOSTNAME.html。 我计划一次性在多个客户端上运行此程序,因此我需要能够从所有客户端复制所有文件* .html。 我是新手,所以有一些剧本。
---
- hosts: tariq-test
tasks:
- name: run script
script: /usr/bin/cfg2html-linux
- name: fetch file
fetch:
src: /root/*.html
dest: /tmp/
flat: yes
并得到这个:
[root@ansible playbooks]# ansible-playbook scp.yml
PLAY [tariq-test] *******************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************
ok: [tariq-test]
TASK [run script] *******************************************************************************************************************************************
changed: [tariq-test]
TASK [fetch file] *******************************************************************************************************************************************
fatal: [tariq-test]: FAILED! => {"changed": false, "msg": "file not found: /root/*.html"}
to retry, use: --limit @/etc/ansible/playbooks/scp.retry
PLAY RECAP **************************************************************************************************************************************************
tariq-test : ok=2 changed=1 unreachable=0 failed=1
答案 0 :(得分:1)
(未经测试)
选项1: 如果文件名是hostname.html并且只有一个文件
fetch:
src: "/root/{{ansible_hostname}}.html"
dest: /tmp/
flat: yes
选项2: 使用* .html模式查找文件,然后在循环中使用访存。
- name: Find files
find:
path: "{{folder}}"
pattern: "*.html"
register: html_files
- name: Fetch files
fetch:
src: "{{item.path}}"
dest: /tmp/
flat: yes
with_items: "{{html_files.files}}"