擅长:python、mysql、java
<p>答案很简单-不。
Ansible是一个连续的系统,它的目标是处理在一堆服务器上运行并显示实时stdout结果的能力可能非常不可靠。</p>
<p>但我认为如果目标系统能够支持后台执行,那么您可以使用一些技巧。我看到您的系统是windows,因此您必须在其上安装cygwin,以便在下面的示例中运行诸如“sleep 20&;”之类的后台命令</p>
<p>你可以用<code>ansible-playbook -vv background.yml</code>运行这个剧本
你可以看到标准输出在改变。
<code>echo Test---- >> /tmp/test && tail /tmp/test</code>是一个演示命令。您应该将数据输出到某个文件并跟踪它,以便查看进度。或者您可以查看stdout文件的文件大小并显示它。使用想象力)</p>
<pre><code># @file background.yml
- hosts: 127.0.0.1
connection: local
gather_facts: no
tasks:
- name: Background operation
shell: "sleep 20 & \ PPID=$! \ echo $PPID"
register: bcktsk
- name: Check PPID
shell: "kill -0 {{ bcktsk.stdout | int + 2 }}"
register: checkppid
ignore_errors: true
- name: Check if process still active
shell: "echo Test---- >> /tmp/test && tail /tmp/test && kill -0 {{ bcktsk.stdout | int + 2 }}"
register: test
when: checkppid.rc == 0
until: test.rc ==1
delay: 2
retries: 10000
ignore_errors: true
</code></pre>