![](/img/trans.png)
[英]how to run python script in ansible playbook using virtual enviroment?
[英]Ansible AWX: trigger python script using Ansible playbook when .yml and .py files are located in Github
我開始將 AWX 集成到我們的環境中,並希望在那里移動和安排一些 python 腳本,但我遇到了使用 Ansible playbook 觸發 python 腳本的問題。 .YML 和 .PY 位於同一個 Github 存儲庫和目錄中。 我觸發了 Ansible playbook,它按照以下 2 行啟動 python 腳本(當然還有更多代碼),一切正常,但沒有觸發腳本。 以前所有的 python 腳本都位於本地主機上,並通過 Windows 任務調度程序進行調度。
代碼:
- name: Checking for duplicate clients
script: duplicate_clients.py
似乎 Windows 主機上的 Python 腳本甚至沒有啟動,因為我沒有在任務管理器中看到 python 啟動。
調試:
<server_XXX> PUT "/runner/project/MISC/duplicate_clients.py" TO "C:\Users\C017317\AppData\Local\Temp\ansible-tmp-1656571782.4292357-31-141461256091413\duplicate_clients.py"
EXEC (via pipeline wrapper)
EXEC (via pipeline wrapper)
changed: [server_XXX] => {
"changed": true,
"rc": 0,
"stderr": "#< CLIXML<Objs Version=\"1.1.0.1\" xmlns=\"http://schemas.microsoft.com/powershell/2004/04\"><Obj S=\"progress\" RefId=\"0\"><TN RefId=\"0\"><T>System.Management.Automation.PSCustomObject</T><T>System.Object</T></TN><MS><I64 N=\"SourceId\">1</I64><PR N=\"Record\"><AV>Preparing modules for first use.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj></Objs>",
"stderr_lines": [
"#< CLIXML<Objs Version=\"1.1.0.1\" xmlns=\"http://schemas.microsoft.com/powershell/2004/04\"><Obj S=\"progress\" RefId=\"0\"><TN RefId=\"0\"><T>System.Management.Automation.PSCustomObject</T><T>System.Object</T></TN><MS><I64 N=\"SourceId\">1</I64><PR N=\"Record\"><AV>Preparing modules for first use.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj></Objs>"
3…
META: ran handlers
但是,我嘗試了一種不同的方法來啟動 python 腳本(因為我不確定當腳本位於 Github 上時應該如何完成)。
代碼:
- name: Checking for duplicate clients
command: py -3 duplicate_clients.py
調試
> EXEC (via pipeline wrapper)
Using module file /usr/local/lib/python3.8/site-packages/ansible/modules/command.py
Pipelining is enabled.
EXEC (via pipeline wrapper)
[WARNING]: No python interpreters found for host
server_XXX (tried ['python3.10', 'python3.9',
'python3.8', 'python3.7', 'python3.6', 'python3.5', '/usr/bin/python3',
'/usr/libexec/platform-python', 'python2.7', 'python2.6', '/usr/bin/python',
'python'])
fatal: [server_XXX]: FAILED! => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
似乎它在 linux 路徑上尋找 python,盡管目標主機是 windows。
這里的 python 腳本不是問題,因為它只是創建一個測試文件。 在本地運行腳本以 RC=0 完成。
所以這個問題已經通過提供 python 可執行路徑解決了。
- name: Checking for duplicate clients
script: create_file.py
args:
executable: '"C:\Program Files (x86)\Python\python.exe"'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.