Pregunta Cómo obtener el nombre del rol actual en una tarea ansible


¿Cómo puedo obtener el nombre del rol actual en un archivo yaml de tarea ansible?

Me gustaría hacer algo como esto

---
# 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

El resultado de esta tarea debe ser un directorio /tmp/some-role-name en el servidor


19
2017-08-15 09:37


origen


Respuestas:


A partir de Ansible 2.2:

{{role_name}}

A partir de Ansible 2.1:

{{role_path|basename}}

Versiones anteriores:

No hay forma de hacerlo en la versión actual de Ansible, aquí hay un par de opciones que podrían funcionar para usted:

1) Use set_fact para establecer una var role_name para el nombre the of role como la primera tarea en su archivo tareas / main.yml

- set_fact: role_name=some-role-name

2) Pase un parámetro a su función que tiene el nombre

- roles:
  - role: some-role-name
    role_name: some-role-name

11
2017-08-15 12:38



La forma más simple es simplemente usar la siguiente

{{role_path|basename}}

25
2018-05-05 09:16



Ver esta publicación:

Para obtener el directorio de roles:

role_dir: "{{ lookup('pipe', 'pwd') | dirname }}"

Para obtener el nombre del rol:

role_name: "{{ lookup('pipe', 'pwd') | dirname | basename }}"

6
2018-05-07 15:08