我对Ansible playbook有一个问题,特别是它的任务之一。任务看起来像这样:
- name: Start Integration Server
script: "{{ instDir_path }}start_All.sh"
- name: Wait for Integration Server to start
wait_for:
port: 5515
delay: 10
它的作用是运行start_All.sh
,这是一个实际启动两台服务器的简单脚本。第一台服务器每次都快速启动。第二个问题有时会在ansseible wait_for
的300秒默认延迟内启动。我不想改变默认值,相反,我希望有这样的东西:
如果服务器启动 - 完成并转到下一个剧本
如果服务器未能启动 - 运行stop_All.sh
以正确关闭第一台服务器,然后再次重新运行start_All.sh
并再次重复wait_for
过程,直到服务器启动正确。或者可能不会一次又一次 - 但它必须尝试启动服务器至少3次。
在Ansible中甚至可能吗? 这个
答案 0 :(得分:0)
IntegrationServer(我猜测SoftwareAG)应该在运行期间创建锁文件。因此,也许您可以尝试:
# wait until the lock file is present
- wait_for:
path: /var/lock/file.lock
state: present
来自ansible文档:
检查存在或启动的文件或搜索字符串时 确保文件或字符串在继续之前存在,缺席 将检查该文件是否缺席或删除