Ansibleスクリプトからpythonスクリプトを実行しようとしています。これは簡単なことだと思いますが、理解できません。プロジェクトがあります。このような構造:
playbook-folder
roles
stagecode
files
mypythonscript.py
tasks
main.yml
release.yml
Main.ymlのタスク(release.ymlで使用されるロール)内でmypythonscript.pyを実行しようとしています。タスクは次のとおりです。
- 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
それは単に「。」を出力します。とても役立つ...
scriptディレクティブを使用してみてください、それは私のために動作します
私のmain.yml
---
- name: execute install script
script: get-pip.py
およびget-pip.pyファイルは同じfiles役割
絶対パスではなくスクリプトへの相対パスを使用できるようにする場合は、 role_path
マジック変数 ロールへのパスを見つけて、そこから作業します。
質問で使用している構造では、以下が機能するはずです。
- name: run my script!
command: ./mypythonscript.py
args:
chdir: "{{ role_path }}"/files
delegate_to: 127.0.0.1
run_once: true