使用ansible杀死任务的最佳方法是什么?我有kafka作为常规可执行文件运行,而不是作为服务。当我向它发送一个杀戮时,需要一段时间来包装并关闭。在发送kill命令以确保服务实际停止之后,我希望ansible在继续之前等待。
到目前为止,这就是我所拥有的,我不确定如何可靠地做到这一点。
---
- name: Stopping Kafka
command: "bin/kafka-server-stop.sh config/server.properties"
args:
chdir: "{{base_apps}}/kafka/kafka_2.11-0.9.0.1"
ignore_errors: yes
由于
答案 0 :(得分:5)
这可以通过wait_for模块来解决。
使用wait_for
模块可以执行以下操作:
---
- name: Stopping Kafka
command: "bin/kafka-server-stop.sh config/server.properties"
args:
chdir: "{{base_apps}}/kafka/kafka_2.11-0.9.0.1"
ignore_errors: yes
# wait until the lock file is removed
- wait_for: path=/var/lock/kafka.lock state=absent
这样Ansible将在锁定文件被删除后继续播放。 wait_for
模块提供了一些其他检查条件,请查看模块文档。