Ansible如何取消与其他命令并发执行

各位大虾好!

我有一个脚本,内容如下:

#!/usr/bin/env python
#coding=utf-8
import subprocess,time

command = "ansible all -i /etc/ansible/hosts-online-test -m shell -a 'echo $(date)>>/tmp/111.txt && sleep 10 && echo $(date)>>/tmp/111.txt'"
print ("现在执行的是:" + command)
subprocess.Popen(command, shell=True)
time.sleep(10)
print ("10秒钟结束了")

我的目的就是先执行ansible然后休息10秒钟,应该总共是耗时20秒。当我运行它的时候,却只花了10秒钟,如图:

clipboard.png

请问是不是因为ansible默认是与其他的进程并发运行的原因?如果是的话如何取消掉?

阅读 3.8k
2 个回答

subprocess.Popen(command, shell=True)
这一步调用了ansible playbook后,他就开始异步执行了,除非你不停的捕捉他的状态,直到捕捉到了结束信号后,再执行下一步操作。

time.sleep(10)
接着再sleep 10秒钟。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题