【问题标题】:How to copy files with ansible relatively to the role?如何相对于角色复制带有ansible的文件?
【发布时间】:2016-05-30 23:46:03
【问题描述】:

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

如何完成这项工作并使用来自myrole/tasks 内的任务的来自myfrole/files 的文件,我不想将角色名称包含在路径中,因为它没有多大意义。如果我这样做,如果我复制角色,它就会中断。

【问题讨论】:

    标签: ansible ansible-playbook


    【解决方案1】:

    如果你根本不提供任何路径,只提供文件名,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
    

    【讨论】:

    • 如果您不使用角色怎么办? (你应该总是使用角色吗?)
    • @alex 你可以使用{{ playbook_dir }}。如果你应该使用角色,取决于你的项目的大小以及你的剧本是否应该只做一件小事或更多。就个人而言,除了快速测试某些东西之外,我还没有看到不使用角色的有效案例。
    【解决方案2】:

    您不需要指定要复制的文件的路径,只要它存储在files 目录中即可。

    你的角色应该是这样的:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-27
      • 2021-12-16
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多