Running Python script via ansible

◇◆丶佛笑我妖孽 提交于 2019-12-18 14:11:03

问题


I'm trying to run a python script from an ansible script. I would think this would be an easy thing to do, but I can't figure it out. I've got a project structure like this:

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

I'm trying to run mypythonscript.py within a task in main.yml (which is a role used in release.yml). Here's the task:

- 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

I've also tried ../files/mypythonscript.py. I thought the path for ansible would be relative to the playbook, but I guess not?

I also tried debugging to figure out where I am in the middle of the script, but no luck there either.

- 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

That just prints out ".". So helpful ...


回答1:


try to use script directive, it works for me

my main.yml

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

and get-pip.py file should be in files in the same role




回答2:


If you want to be able to use a relative path to your script rather than an absolute path then you might be better using the role_path magic variable to find the path to the role and work from there.

With the structure you are using in the question the following should work:

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


来源:https://stackoverflow.com/questions/35139711/running-python-script-via-ansible

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!