Ansible:如何从特定角色的 "Files" 文件夹中复制所有内容
Ansible : How to copy everything from "Files" folders of a specific role
我有一个 ansible 角色,看起来像这样:
my-role
├─── files
│ my-file-one
│ my-file-two
│ my-file-...
│ my-file-n
└─── tasks
main.yml
在我的 main.yml 中,我有这个递归复制任务,
我想复制所有文件而不需要手动列出它们:
- name: copy all files
copy:
src: "{{ item }}"
dest: /dest/
with_items:
- ????
建议??
如果您的 files
目录是平面目录(即您不需要担心递归目录),您可以只使用 with_fileglob
获取文件列表:
---
- name: copy all files
copy:
src: "{{ item }}"
dest: /dest/
with_fileglob: "files/*"
如果您需要递归复制,则不能使用 with_fileglob
,因为它只有 returns 个文件列表。您可以像这样使用 find
模块:
---
- name: list files
find:
paths: "{{ role_path }}/files/"
file_type: any
register: files
- name: copy files
copy:
src: "{{ item.path }}"
dest: /dest/
loop: "{{ files.files }}"
Local path to a file to copy to the remote server.
This can be absolute or relative.
If path is a directory, it is copied recursively. In this case, if path ends with "/", only inside contents of that directory are copied to destination. Otherwise, if it does not end with "/", the directory itself with all contents is copied.
如果将文件放入 files
目录的子目录中(例如 my_files
),则可以使用 my_files/
作为 src
参数 copy
模块。
my-role
├─── files
| └───my_files
│ my-file-one
│ my-file-two
│ my-file-...
│ my-file-n
└─── tasks
main.yml
- name: copy all files
copy:
src: my_files/
dest: /dest/
使用 ./
作为 src
参数对我有用。它以递归方式将角色 files
目录中的所有文件和目录复制到目标。
此解决方案不需要在复制文件之前使用其他任务列出文件。
---
- name: Copy all role files to target
copy:
src: ./
dest: <destination_dir>
我有一个 ansible 角色,看起来像这样:
my-role
├─── files
│ my-file-one
│ my-file-two
│ my-file-...
│ my-file-n
└─── tasks
main.yml
在我的 main.yml 中,我有这个递归复制任务, 我想复制所有文件而不需要手动列出它们:
- name: copy all files
copy:
src: "{{ item }}"
dest: /dest/
with_items:
- ????
建议??
如果您的 files
目录是平面目录(即您不需要担心递归目录),您可以只使用 with_fileglob
获取文件列表:
---
- name: copy all files
copy:
src: "{{ item }}"
dest: /dest/
with_fileglob: "files/*"
如果您需要递归复制,则不能使用 with_fileglob
,因为它只有 returns 个文件列表。您可以像这样使用 find
模块:
---
- name: list files
find:
paths: "{{ role_path }}/files/"
file_type: any
register: files
- name: copy files
copy:
src: "{{ item.path }}"
dest: /dest/
loop: "{{ files.files }}"
Local path to a file to copy to the remote server. This can be absolute or relative. If path is a directory, it is copied recursively. In this case, if path ends with "/", only inside contents of that directory are copied to destination. Otherwise, if it does not end with "/", the directory itself with all contents is copied.
如果将文件放入 files
目录的子目录中(例如 my_files
),则可以使用 my_files/
作为 src
参数 copy
模块。
my-role
├─── files
| └───my_files
│ my-file-one
│ my-file-two
│ my-file-...
│ my-file-n
└─── tasks
main.yml
- name: copy all files
copy:
src: my_files/
dest: /dest/
使用 ./
作为 src
参数对我有用。它以递归方式将角色 files
目录中的所有文件和目录复制到目标。
此解决方案不需要在复制文件之前使用其他任务列出文件。
---
- name: Copy all role files to target
copy:
src: ./
dest: <destination_dir>