Подтвердить что ты не робот

Как скопировать файлы с возможностью относительно роли?

У меня есть задача копирования внутри роли, и я ожидал, что расположение src будет относиться к самой роли, а не к книге воспроизведения, которая вызывает роли.

Как мне сделать эту работу и использовать файлы из myfrole/files из задачи внутри myrole/tasks, я не хочу включать имя роли как часть пути, поскольку это не имеет большого смысла. Если я это сделаю, это сломается, если я дублирую роль.

4b9b3361

Ответ 1

Если вы вообще не указываете какой-либо путь, только имя файла, Ansible автоматически выберет его из каталога files роли.

Кроме того, начиная с Ansible 1.8, существует переменная role_path которую вы можете использовать в своей задаче копирования.

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

Ответ 2

Вам не нужно указывать путь к файлу для копирования, если он хранится в каталоге files.

Вот как должна выглядеть ваша роль:

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

А вот способ вызова copy в tasks/main.yml:

- copy:
    src: foo.conf
    dest: /etc/foo.conf