我在角色中有一个复制任务,我期望src
位置是相对于角色本身,而不是调用角色的剧本。
我如何做到这一点并使用myrole/tasks
内任务中myfrole/files
的文件,我不想将角色名称作为路径的一部分,因为它没有多大意义。如果我这样做,如果我复制角色,它会中断。
如果您根本不提供任何路径,只提供文件名,Ansible 将自动从角色的files
目录中选择它。
- copy:
src: foo.conf
dest: /etc/foo.conf
此外,从 Ansible 1.8 开始,您可以在复制任务中使用变量role_path
。
- copy:
src: "{{ role_path }}/files/foo.conf"
dest: /etc/foo.conf
只要文件存储在目录中files
就不需要指定要复制的文件的路径。
您的角色应如下所示:
my-awesome-role
├───files
│ my-awesome-file
└───tasks
main.yml
这是在tasks/main.yml
中调用复制的方法:
- copy:
src: my-awesome-file
dest: '{{ some_destination }}'