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
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
Le moyen le plus simple consiste à simplement utiliser ce qui suit
{{role_path|basename}}
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 }}"