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

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

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

Я пытаюсь запустить mypythonscript.py внутри задачи в main.yml(это роль, используемая в release.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. Я думал, что путь к аналогу будет относиться к книжке, но я не думаю?

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

- 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

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

Ответ 1

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

мой main.yml

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

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

Ответ 2

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

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

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