Ansible

在執行長時間執行的任務之前列印 Ansible 標頭

  • September 27, 2021

語境

我有一個 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

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