Existe-t-il un moyen d'évaluer un chemin relatif dans Ansible?
tasks:
- name: Run docker containers
include: tasks/dockerup.yml src_code='..'
Je souhaite essentiellement passer le chemin du code source à ma tâche. Il se trouve que le code source est le chemin parent de {{ansible_inventory}}
, mais rien ne semble pouvoir le faire immédiatement.
---- plus d'infos ----
Structure du projet:
myproj
app
deploy
deploy.yml
J'essaie donc d'accéder à app
à partir de deploy.yml
.
Je viens d’examiner la source et de trouver un filtre dont je n’étais pas au courant. Oubliez les opérations de chaîne précédentes, c'est aussi simple que cela:
{{ inventory_dir | dirname }}
Réponse précédente:
Cela devrait le faire:
{{ inventory_dir.split("/")[0:-1]|join("/") }}
Réponse précédente:
Est-ce que {{ inventory_dir }}
fait ce que vous voulez?
Aussi disponible,
inventory_dir
est le chemin du répertoire contenant le fichier hôte de l’inventaire d’Ansible.
Ou si vous voulez dire par "répertoire parent" le chemin du rôle dans lequel se trouve votre tâche, {{ role_path }}
pourrait faire l'affaire.
Et finalement,
role_path
renverra le nom du chemin du rôle actuel (depuis 1.8). Cela ne fonctionnera que dans un rôle.
Vous pouvez utiliser {{playbook_dir}}
pour le chemin d'accès absolu à votre cycle de lecture actuel. Pour moi, c’est la meilleure façon, car vous savez normalement où se trouve votre playbook.
OK, une solution de contournement consiste à utiliser une tâche distincte uniquement pour cela:
tasks:
- name: Get source code absolute path
Shell: dirname '{{inventory_dir}}'
register: dirname
- name: Run docker containers
include: tasks/dockerup.yml src_code={{dirname.stdout}}
Merci à udondan de m'avoir laissé entendre inventory_dir
.