如何复制相对于角色的文件



我在角色中有一个复制任务,我期望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 }}'

最新更新