web-dev-qa-db-fra.com

Comment obtenir le nom de rôle actuel dans une tâche ansible

Comment puis-je obtenir le nom de rôle actuel dans un fichier yaml de tâche ansible?

J'aimerais faire quelque chose comme ça

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

Le résultat de cette tâche doit être un répertoire /tmp/some-role-name sur le serveur

26
czerasz

Depuis Ansible 2.2:

{{role_name}}

Depuis Ansible 2.1:

{{role_path|basename}}

Versions plus anciennes:

Il n'y a aucun moyen de le faire dans la version actuelle d'Ansible, voici quelques options qui pourraient plutôt vous convenir:

1) Utilisez set_fact pour définir une variable role_name au nom du rôle comme première tâche dans votre fichier tasks/main.yml

- set_fact: role_name=some-role-name

2) Passez un paramètre à votre rôle qui porte le nom

- roles:
  - role: some-role-name
    role_name: some-role-name
19
jarv

Le moyen le plus simple consiste à simplement utiliser ce qui suit

{{role_path|basename}}
27
krad

Voir ce post :

Pour obtenir le répertoire des rôles:

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

Pour obtenir le nom du rôle:

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