Как скопировать файлы с возможностью относительно роли?
У меня есть задача копирования внутри роли, и я ожидал, что расположение src
будет относиться к самой роли, а не к книге воспроизведения, которая вызывает роли.
Как мне сделать эту работу и использовать файлы из myfrole/files
из задачи внутри myrole/tasks
, я не хочу включать имя роли как часть пути, поскольку это не имеет большого смысла. Если я это сделаю, это сломается, если я дублирую роль.
Ответы
Ответ 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