如何用ansible相对角色复制文件?
How to copy files with ansible relatively to the role?
我在角色中有一个复制任务,我希望 src
位置是相对于角色本身的,而不是调用角色的剧本。
我如何进行这项工作并使用 myrole/tasks
中任务中 myfrole/files
的文件,我不想将角色名称包含在路径中,因为它不包含很有意义。如果我这样做,如果我复制角色,它就会中断。
如果您根本不提供任何路径,只提供文件名,Ansible 会自动从角色的 files
目录中选择它。
- copy:
src: foo.conf
dest: /etc/foo.conf
此外,从 Ansible 1.8 开始,您可以在 copy 任务中使用变量 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 }}'
我在角色中有一个复制任务,我希望 src
位置是相对于角色本身的,而不是调用角色的剧本。
我如何进行这项工作并使用 myrole/tasks
中任务中 myfrole/files
的文件,我不想将角色名称包含在路径中,因为它不包含很有意义。如果我这样做,如果我复制角色,它就会中断。
如果您根本不提供任何路径,只提供文件名,Ansible 会自动从角色的 files
目录中选择它。
- copy:
src: foo.conf
dest: /etc/foo.conf
此外,从 Ansible 1.8 开始,您可以在 copy 任务中使用变量 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 }}'