我对 Ansible 相当陌生,我正在尝试创建一个将文件复制到远程服务器的角色。每次我运行 playbook 时,本地文件可以有不同的名称,但需要远程复制到相同的名称,如下所示:
- name: copy file
copy:
src=*.txt
dest=/path/to/fixedname.txt
Ansible 不允许使用通配符,所以当我编写一个包含主要剧本中任务的简单剧本时,我可以这样做:
- name: find the filename
connection: local
shell: "ls -1 files/*.txt"
register: myfile
- name: copy file
copy:
src="files/{{ item }}"
dest=/path/to/fixedname.txt
with_items:
- myfile.stdout_lines
但是,当我将任务移动到角色时,第一个操作不再起作用,因为相对路径是相对于角色的,而剧本在“角色”目录的根目录中执行。我可以将路径添加到角色的文件目录,但是有没有更优雅的方法?