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

时间:2016-02-18 16:58:29

标签: ansible ansible-playbook

我在角色中有一个复制任务,我希望src位置与角色本身相关,而不是调用角色的剧本。

如何在myfrole/files内的任务中使用myrole/tasks中的文件,我不想将角色名称作为路径的一部分包含在内,因为它不会很有意义。如果我这样做,如果我复制角色就会中断。

2 个答案:

答案 0 :(得分:111)

如果你根本没有提供任何路径,只有文件名,Ansible会自动从角色的files目录中选择它。

此外,自Ansible 1.8起,您可以在copy任务中使用变量role_path

- copy:
    src: "{{ role_path }}/files/foo.conf"
    dest: /etc/foo.conf

答案 1 :(得分:1)

只要存储在files目录中,就无需指定要复制的文件的路径。

这是您的角色外观:

my-awesome-role
├───files
│       my-awesome-file
└───tasks
        main.yml

这是在tasks/main.yml中调用副本的方法:

- copy:
    src: my-awesome-file
    dest: '{{ some_destination }}'