Automation Ansible-如何';循环';万一失败,一个可靠的任务?
我对Ansible playbook有一个问题,特别是它的任务之一。任务如下所示:Automation Ansible-如何';循环';万一失败,一个可靠的任务?,automation,ansible,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\u All.sh,这是一个简单的脚本,实际上启动了两台服务器。一
- name: Start Integration Server
script: "{{ instDir_path }}start_All.sh"
- name: Wait for Integration Server to start
wait_for:
port: 5515
delay: 10
它所做的是运行start\u All.sh
,这是一个简单的脚本,实际上启动了两台服务器。一号服务器每次启动都很快很好。第二个有时会出现问题,无法在anslibleswait\u for
的300秒默认延迟内启动。我不想更改默认值,而是希望有如下内容:
- name: Start Integration Server
script: "{{ instDir_path }}start_All.sh"
- name: Wait for Integration Server to start
wait_for:
port: 5515
delay: 10
如果服务器已启动-完成并转到下一个剧本
如果服务器启动失败-运行stop_All.sh
以正确关闭第一台服务器,然后再次运行START_All.sh
并重复wait_for
过程,直到服务器正确启动。或者可能不是一次又一次,但它必须尝试启动服务器至少3次
这在Ansible中可能吗?
这个集成服务器(我想是SoftwareAG)应该在运行期间创建了锁文件。因此,您可以尝试:
# wait until the lock file is present
- wait_for:
path: /var/lock/file.lock
state: present
来自ansible文档:
检查文件或搜索字符串是否存在或是否已启动时
在继续之前,请确保文件或字符串已存在(不存在)
将检查文件是否缺失或已删除
Ansible意味着尽可能具有声明性。为什么不在start_all.sh内安装所有这些拐杖?