Kyu*_*u96 7 copy wildcard provisioning ansible
在我的文件目录中,我有各种文件,名称结构相似:
data-example.zip
data-precise.zip
data-arbitrary.zip
data-collected.zip
Run Code Online (Sandbox Code Playgroud)
我想使用 Ansible 在远程机器的 /tmp 目录中传输所有这些文件,而无需明确指定每个文件名。换句话说,我想传输每个以“data-”开头的文件。
这样做的正确方法是什么?在一个类似的帖子中,有人建议了with_fileglob
关键字,但我无法让它发挥作用。有人可以为我提供一个如何完成上述任务的例子吗?
dee*_*gan 11
方法1:找到所有文件,将它们存储在一个变量中,然后将它们复制到目的地。
- hosts: lnx
tasks:
- find: paths="/source/path" recurse=yes patterns="data*"
register: file_to_copy
- copy: src={{ item.path }} dest=/dear/dir
owner: root
mode: 0775
with_items: "{{ files_to_copy.files }}"
Run Code Online (Sandbox Code Playgroud)
使用remote_src: yes将远程机器中的文件从一个路径复制到另一个路径。
方法二:Fileglob
- name: Copy each file over that matches the given pattern
copy:
src: "{{ item }}"
dest: "/etc/fooapp/"
owner: "root"
mode: 0600
with_fileglob:
- "/playbooks/files/fooapp/*"
Run Code Online (Sandbox Code Playgroud)
在发布问题后不久,我实际上自己弄明白了。该with_fileglob
关键字是做它的方式。
- name: "Transferring all data files"
copy:
src: "{{ item }}"
dest: /tmp/
with_fileglob: "data-*"
Run Code Online (Sandbox Code Playgroud)