it-swarm.com.ru

Как скопировать файлы с ansible относительно роли?

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

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

54
sorin

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

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

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

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

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

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

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

- copy:
    src: my-awesome-file
    dest: '{{ some_destination }}'
1
avi.elkharrat