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 ...
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
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