如何用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 }}'