Ansible - 如果失败,如何'循环'一个ansible任务?

时间:2017-07-25 08:22:56

标签: automation ansible

我对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中甚至可能吗? 这个

1 个答案:

答案 0 :(得分:0)

IntegrationServer(我猜测SoftwareAG)应该在运行期间创建锁文件。因此,也许您可​​以尝试:

# wait until the lock file is present
- wait_for:
    path: /var/lock/file.lock
    state: present

来自ansible文档:

  

检查存在或启动的文件或搜索字符串时   确保文件或字符串在继续之前存在,缺席   将检查该文件是否缺席或删除