Y a-t-il une variable ansible qui a le chemin absolu vers le livre de jeu ansible actuel en cours d'exécution?
un certain contexte:
j'exécute / crée un script ansible contre localhost
pour configurer un docker mysql et je veux monter le volume de données par rapport au script ansible.
Par exemple, disons que j'ai récupéré un référentiel dans ~/branch1/
, puis que je lance, ansible-playbook dev.yml
je pensais qu'il devrait enregistrer le volume dans ~/branch1/.docker_volume/
. Si je l'ai exécuté à partir de ~/branch2
là, il devrait configurer le volume sur ~/branch2/.docker_volume/
.
Réponses:
Vous pouvez utiliser la
playbook_dir
variable.la source
playbook_dir
variable est documentée. Pourriez-vous m'indiquer la documentation s'il vous plaît. OU, pourriez-vous expliquer comment avez-vous appris l'existence de cette variable?Il ne semble pas y avoir de variable qui contienne exactement ce que vous voulez.
Cependant, en citant les documents :
En fonction de votre configuration, ceux-ci ou la
$ pwd
solution basée peuvent suffire.la source
Malheureusement, il n'y en a pas. En fait, le chemin absolu est un peu dénué de sens (et potentiellement déroutant) dans le contexte du fonctionnement d'Ansible. En un mot, lorsque vous invoquez un playbook, pour chaque tâche, Ansible copie physiquement le module associé à la tâche dans un répertoire temporaire sur la machine cible, puis appelle le module avec les paramètres nécessaires. Ainsi, le chemin absolu sur la machine cible n'est qu'un répertoire temporaire qui ne contient que quelques fichiers temporaires, et il n'inclut même pas le livre de lecture complet. De plus, connaître le chemin complet d'un fichier sur le serveur Ansible est pratiquement inutile sur une machine cible, sauf si vous répliquez toute votre arborescence de répertoires Ansible sur les cibles.
Pour voir toutes les variables définies par Ansible, vous pouvez simplement exécuter la commande suivante :
Quelle est la raison pour laquelle vous pensez avoir besoin de connaître le chemin absolu vers le livre de jeu?
la source
local_action
module signifie qu'il existe des cas d'utilisation légitimes pour cela.J'utilisais un playbook comme celui-ci pour tester mes rôles localement:
mais cela a cessé de fonctionner avec Ansible v2.2.
J'ai débogué la solution susmentionnée de
et il a produit mon répertoire personnel et non le "répertoire de travail actuel"
Je me suis installé avec
par la solution ci-dessus.
la source
Il n'y a pas de variable intégrée à cet effet, mais vous pouvez toujours trouver le chemin absolu du playbook avec la commande "pwd" et enregistrer sa sortie dans une variable.
Le chemin est désormais disponible dans la variable playbook_path_output.stdout
la source
pwd
ne renvoie pas le chemin du script de playbook. Il retourne le répertoire courant du processus (normalementansible-playbook
). Les deux n'ont pas besoin d'être identiques et dépendent de la manière exacte dont ansible a été invoqué.debug: var=ansible_env.PWD
(cela me donne le répertoire à partir duquel j'ai exécutéansible-playbook
sur ma machine locale et le répertoire home sur les serveurs distants){{ lookup('env','PWD') }}