这是一种使用 shell globing 将多个文件指定为src
模板模块中的方法吗?
- name: Copy keys
template:
src: "{{ item }}"/RPM-*
dest: /etc/pki/{{ item }}/
loop:
- gf
答案1
你可以使用 Ansible 的fileglob
查找去做这个。您可以将模式作为参数列表传递给with_fileglob
,如下所示(而不是将模式放入模块src
的参数中template
):
- hosts: localhost
gather_facts: false
tasks:
- name: Copy keys
template:
src: "{{ item }}"
dest: "./pki/{{ '/'.join(item.split('/')[-2:]) }}"
with_fileglob:
- "gf/RPM-*"
- "xz/RPM-*"
这会将文件复制到./pki/gf/RPM-...
和./pki/xz/RPM-...
。该表达式'/'.join(item.split('/')[-2:])
采用类似的路径名/some/path/to/gf/RPM-foo
并将其转换为gf/RPM-foo
.
请注意,您需要首先确保目标目录存在,这可能需要在此之前执行单独的任务来创建它们。