7
votes

Obtenir un répertoire d'un fichier de tâches pour les chemins relatifs

Dans mon jeu de jeu, j'exécute une local_action qui exécute un script et stocke la valeur pour une utilisation future: xxx

Ceci a fonctionné super, jusqu'à ce que je déplais mon jeu de jeu dans un sous-répertoire. Il s'avère que la commande fonctionne de votre répertoire de travail actuel (que vous exécutez une fonctionnement de), de sorte que le chemin doit ressembler à ceci: xxx

J'ai une structure de répertoire comme Ci-dessous:

  • group_vars /
  • rôles /
    • fantôme /
      • tâches /
        • main.yml
        • Modèles /
        • version.py
        • site.yml

          Cependant, les rôles / Le nom du dossier Ghost peuvent changer (et codage rigoureux Cela ne vous permet pas d'exécuter le jeu de jeu dans un autre répertoire).

          Comment Puis-je obtenir le chemin de répertoire des tâches / Main.yml (qui émet la commande local_action), afin que je puisse donner un chemin relatif à celui-ci?


0 commentaires

3 Réponses :


2
votes

pouvez-vous mettre la sortie.py script dans des rôles / fantômes / fichiers / puis utilisez-le avec local_action xxx

et de cette façon, vous n'avez peut-être pas besoin d'obtenir le chemin de répertoire

Ceci fait référence à ce fait dans la partie de répertoire de la pièce http://www.ansibleworks.com /docs/playbooks_best_practices.html


0 commentaires

0
votes

J'ai soumis un Demande de traction Avant de voir cela pour la question, mais voici le gist de celui-ci.

  1. Déplacez le script vers un répertoire "fichiers" dans le rôle li>
  2. Étant donné que nous ne pouvons pas savoir quel chemin le script sera dans lequel le script sera dans, copiez-le sur / TMP: P>

    - name: get ghost release version
      local_action: command python /tmp/release.py
      register: ghost_release
      sudo: no
    
  3. alors nous pouvons exécuter le script p>

    - name: copy ghost release script to tmp
      local_action: copy src=release.py dest=/tmp/release.py
      sudo: no
    


0 commentaires

6
votes

A partir de 1.8, il y a un role_path variable défini que vous pouvez utiliser à cette fin.


1 commentaires

L'erreur était: "role_path" est indéfini il semble que cela ne peut être utilisé que dans les rôles, pas des commandes