Как получить текущее имя роли в незадаваемой задаче
Как получить текущее имя роли в файле yaml с заданной задачей?
Я хотел бы сделать что-то вроде этого
---
# role/some-role-name/tasks/main.yml
- name: Create a directory which is called like the current role name
action: file
path=/tmp/"{{ role_name }}"
mode=0755
state=directory
Результатом этой задачи должен быть каталог /tmp/some-role-name
на сервере
Ответы
Ответ 1
Обновление: этот ответ устарел с текущей версией Ansible, вместо этого используйте:
{{role_path|basename}}
Предыдущий ответ:
В текущей версии Ansible нет способа сделать это, вот несколько вариантов, которые могут работать вместо вас:
1) Используйте set_fact для установки имени роли var для имени роли в качестве первой задачи в ваших задачах/файле main.yml
- set_fact: role_name=some-role-name
2) Передайте параметр своей роли с именем
- roles:
- role: some-role-name
role_name: some-role-name
Ответ 2
Самый простой способ - просто использовать следующие
{{role_path|basename}}
Ответ 3
Смотрите этот пост:
Чтобы получить каталог ролей:
role_dir: "{{ lookup('pipe', 'pwd') | dirname }}"
Чтобы получить имя роли:
role_name: "{{ lookup('pipe', 'pwd') | dirname | basename }}"