Dado un libro de jugadas como este:

- name: "Tasks for service XYZ"
  hosts: apiservers
  roles:
    - { role: common }

¿Hay alguna manera de hacer referencia al nombre del libro de jugadas ("Tareas para el servicio XYZ")? (es decir, una variable)


Editar:

Mi intención es poder hacer referencia al nombre del libro de jugadas en una tarea de rol, es decir, enviar un mensaje a través de holgura como

- name: "Send Slack notification indicating deploy has started"
  slack:
    channel: '#project-deploy'
    token: '{{ slack_token }}'
    msg: '*Deploy started* to _{{ inventory_hostname }}_ of `{{ PLAYBOOK_NAME }}` version *{{ service_version }}*'
  delegate_to: localhost
  tags: deploy
5
Diego Nemo 13 sep. 2018 a las 14:44

3 respuestas

La mejor respuesta

Se agregó en 2.8:

ansible_play_name
El nombre de la obra ejecutada actualmente. Añadido en 2.8.

5
L. F. 13 may. 2019 a las 10:36

Según sus circunstancias, ¿parece que solo desea esto para fines de auditoría / notificación? En ese caso (y suponiendo clientes unixy), usando

lookup('file', '/proc/self/cmdline') | regex_replace('\u0000',' ')

Le dará toda la línea de comando con la que se llamó ansible-playbook, parámetros y todo, que incluiría el nombre del libro de jugadas. Dependiendo de sus circunstancias, eso podría ser una compensación lo suficientemente útil.

1
Ulrich Schwarz 26 mar. 2019 a las 06:44

No, las variables especiales para Ansible están documentadas aquí, y usted puede ver que no hay ninguna variable para devolver el nombre del libro de jugadas.

Sin embargo, como se menciona en los comentarios, siempre puede hacer esto:

---
- name: "{{ task_name }}"
  hosts: localhost
  vars:
    task_name: "Tasks for service XYZ"
  tasks:
    - debug:
        msg: "{{ task_name }}"
3
Alex Harvey 13 sep. 2018 a las 13:21