Python

通過 Ansible Playbook 呼叫 Python 腳本並在後台執行 - 通過 Ansible Tower

  • April 20, 2020

在這裡,我試圖通過 ansible playbook 呼叫 python 腳本。當我執行包含下面提到的程式碼的劇本時,它成功地呼叫了腳本。但是 ansible 腳本會繼續執行,直到 Python 腳本完成其所有任務。

- hosts: localhost
 gather_facts: false
 vars:
   username: 'User'
   password: '1234@345'
 tasks:

   - name: Invoking Python script
     script: data_pull_push.py 
     args:
       executable: python

python 腳本“data_pull_push.py”正在從一個 Url 獲取數據並將其發佈到另一個 Url。它的數據太多了。因此,檢索和發布所有數據需要很長時間。所以我希望 Ansible 劇本觸發其中的 Python 腳本並關閉劇本。Python 腳本應該在後台執行。

這個 Ansible playbook 和 python 腳本保存在 git 中,並將在 Ansible tower 中執行 playbook。我不知道如何在 Ansible 中使用它。如果有人知道請告訴我。

您應該使用非同步操作和輪詢Ansible 功能。

所以你的任務應該是這樣的:

- name: Long async task
 command: python data_pull_push.py
 async: <timeout value>
 poll: 0

使用您選擇的作業管理器實用程序(如 atd、cron、supervisord 或 systemd)創建後台作業。僅作為範例,根據作業系統存在許多其他服務管理器。

其中,至少 cron、supervisord 和 systemd 具有包裝 Ansible 模組。即使不存在,您也可以使用通用命令呼叫 systemd-run 或任何其他命令。

引用自:https://serverfault.com/questions/1012551