在执行长时间运行的任务之前打印 Ansible 标头

Phe*_*nyl 7 ansible ansible-playbook

语境

我有一本 Ansible 剧本,其中包含一项很长的任务,长达一小时。

非常简化,看起来像:

- hosts: localhost
  tasks:
  - name: Short task
    debug:
      msg: "I'm quick!"

  - name: Long task
    shell: "sleep 15s"
Run Code Online (Sandbox Code Playgroud)

当用户运行剧本时,输出首先是:

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]
Run Code Online (Sandbox Code Playgroud)

问题

该剧本的最终用户认为存在问题,Short task因为它挂在那里,而这Long task正是导致延迟的原因。

问题

我如何配置 ansible 或 playbook 以在执行任务name: 之前打印定义的标头?

我要实现的是这样的输出:

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]
Run Code Online (Sandbox Code Playgroud)

Zei*_*tor 4

根据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
Run Code Online (Sandbox Code Playgroud)

以及结果(两种情况下。注意:任务标题显示后用户中断)

$ 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

Run Code Online (Sandbox Code Playgroud)

ansible-playbook --version仔细检查您要在要启动 playbook 的目录中加载哪个配置文件。我还建议您尝试不使用任何配置文件,看看它是否可以解决您的问题(然后查看哪个设置实际上导致了问题)。


从OP的评论中添加:事实证明,在这种特定情况下ansible.cfg中的有问题的设置是display_skipped_hosts=False