Запуск скрипта Python через ansible

Я пытаюсь запустить скрипт python из сценария ansible. Я думал, что это будет легко сделать, но я не могу понять. У меня есть такая структура проекта:

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

Я пытаюсь бежать mypythonscript.py в рамках задачи в основном.yml (роль, используемая в выпуске.в формате YML). Вот задача:

- 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

Я также пробовал ../files/mypythonscript.py - ... Я думал, что путь для ansible будет относительно playbook, но я думаю нет?

Я также попытался отладить, чтобы выяснить, где я нахожусь в середине скрипта, но там тоже не повезло.

- 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

Это просто распечатывает".". Так полезный. ..

2 ответов


попробуйте использовать скрипт директива, она работает для меня

мой главный.в формате YML

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

и get-pip.py файл должен быть в файлы в той же роли


Если вы хотите использовать относительный путь к вашему скрипту, а не абсолютный путь, вам лучше использовать role_path волшебная переменная чтобы найти путь к роли и работать оттуда.

со структурой, которую вы используете в вопросе, должно работать следующее:

- name: run my script!
  command: ./mypythonscript.py
  args:
    chdir: "{{ role_path }}"/files
  delegate_to: 127.0.0.1
  run_once: true