Exécuter le script Python via ansible

j'essaie d'exécuter un script python à partir d'un script possible. Je pense que ce serait une chose facile à faire, mais je ne peux pas le comprendre. J'ai une structure de projet comme celle-ci:

playbook-folder
  roles
    stagecode
      files
        mypythonscript.py
      tasks
        main.yml
  release.yml

j'essaie de courir mypythonscript.py dans le cadre d'une tâche principale.yml (qui est un rôle utilisé dans le communiqué.yml). Voici le problème:

- name: run my script!
  command: ./roles/stagecode/files/mypythonscript.py
  args:
    chdir: /dir/to/be/run/in
  delegate_to: 127.0.0.1
  run_once: true

j'ai aussi essayé ../files/mypythonscript.py. J'ai pensé que le chemin pour ansible serait relatif au playbook, mais je suppose que pas?

j'ai aussi essayé de déboguer pour trouver où je suis au milieu du script, mais pas de chance non plus.

- name: figure out where we are
  stat: path=.
  delegate_to: 127.0.0.1
  run_once: true
  register: righthere

- name: print where we are
  debug: msg="{{righthere.stat.path}}"
  delegate_to: 127.0.0.1
  run_once: true

Qui se contente d'afficher ".". Si utile ...

12
demandé sur CorayThan 2016-02-01 23:28:55

2 réponses

essayez d'utiliser script la directive, il fonctionne pour moi

mon principal.yml

---
- name: execute install script
  script: get-pip.py

et get-pip.py le fichier doit être dans fichiers dans le même rôle

21
répondu Orest Stetsiak 2016-11-11 13:49:56

si vous voulez être capable d'utiliser un chemin relatif à votre script plutôt qu'un chemin absolu, alors vous pourriez être mieux en utilisant le role_path variable magique trouver le chemin vers le rôle et travailler à partir de là.

Avec la structure que vous utilisez dans la question, la suivante devrait fonctionner:

- name: run my script!
  command: ./mypythonscript.py
  args:
    chdir: "{{ role_path }}"/files
  delegate_to: 127.0.0.1
  run_once: true
12
répondu ydaetskcoR 2016-02-01 20:48:09