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

sor*_*rin 62 ansible ansible-playbook

我在角色中有一个复制任务,我希望该src位置与角色本身相关,而不是调用角色的游戏手册.

我如何使这项工作和使用myfrole/files来自任务内部的文件myrole/tasks,我不想将角色名称包含在路径的一部分,因为它没有多大意义.如果我这样做,如果我复制角色会破坏.

udo*_*dan 125

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

此外,自Ansible 1.8以来role_path,您可以在复制任务中使用该变量.

- copy:
    src: "{{ role_path }}/files/foo.conf"
    dest: /etc/foo.conf
Run Code Online (Sandbox Code Playgroud)

  • @alex你可以使用`{{ playbook_dir }}`。如果您应该使用角色,取决于您的项目的规模以及您的剧本是否应该只做一件小事或更多。就我个人而言,除了快速测试某些内容之外,我还没有看到不使用角色的有效案例。 (2认同)

avi*_*rat 11

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

您的角色应如下所示:

my-awesome-role
????files
?       my-awesome-file
????tasks
        main.yml
Run Code Online (Sandbox Code Playgroud)

这是在中调用copy的方法tasks/main.yml

- copy:
    src: my-awesome-file
    dest: '{{ some_destination }}'
Run Code Online (Sandbox Code Playgroud)