Ansible
在執行長時間執行的任務之前列印 Ansible 標頭
語境
我有一個 Ansible 劇本,其中包含一個很長的任務,最多一小時。
非常簡化,它看起來像:
- hosts: localhost tasks: - name: Short task debug: msg: "I'm quick!" - name: Long task shell: "sleep 15s"
當使用者執行 playbook 時,輸出首先是:
PLAY [localhost] ******************** TASK [Gathering Facts] ************** ok: [127.0.0.1] TASK [Short task] ******************* ok: [127.0.0.1] => { "msg": "I'm quick!" } (hang there until Long task is done) TASK [Long task] ******************** changed: [127.0.0.1]
問題
該劇本的最終使用者認為存在問題,
Short task
因為它掛在那裡,而正是Long task
這導致了延遲。問題
name:
在執行任務之前,如何配置 ansible 或 playbook 以列印定義的標頭?我要實現的是如下輸出:
PLAY [localhost] ******************** TASK [Gathering Facts] ************** ok: [127.0.0.1] TASK [Short task] ******************* ok: [127.0.0.1] => { "msg": "I'm quick!" } TASK [Long task] ******************** (and hang there during the execution) changed: [127.0.0.1]
根據 OP 的要求將我的評論遷移到答案
我正在使用 Ansible 2.9.2。
我嘗試了沒有配置文件和沒有為
stdout_callback
(預設)聲明值的配置文件。無論哪種情況,我都無法重現您的問題。這是我的測試手冊:
--- - hosts: localhost gather_facts: false tasks: - name: Short running debug: msg: I'm a short task - name: LOOOOOOOOOng task shell: sleep 2000
結果(在這兩種情況下。注意:任務標題顯示後使用者中斷)
$ ansible-playbook /tmp/play.yml PLAY [localhost] ************************************************************************************************************************************************************************************************** TASK [Short running] ********************************************************************************************************************************************************************************************** ok: [localhost] => { "msg": "I'm a short task" } TASK [LOOOOOOOOOng task] ****************************************************************************************************************************************************************************************** ^C [ERROR]: User interrupted execution
ansible-playbook --version
在要啟動 playbook 的目錄中仔細檢查要載入的配置文件。我還建議您嘗試不使用任何配置文件,以查看它是否可以解決您的問題(然後查看實際導致問題的設置)。從 OP 的評論中添加:在這種特定情況下,ansible.cfg 中的問題設置是
display_skipped_hosts=False