在Ansible中,可以使用until
循环条件和changed_when
选项来实现当条件第一次为真时停止循环的效果。以下是一个带有代码示例的解决方案:
- name: Check if condition is true
shell: echo "Check condition"
register: result
until: result.stdout | bool
retries: 10
delay: 5
changed_when: result.stdout | bool
- name: Stop loop when condition is true
debug:
msg: "Condition is true, stopping the loop"
when: result.stdout | bool
在上面的示例中,我们使用shell
模块来执行一个命令,并将其结果保存到result
变量中。然后,我们使用until
条件检查result.stdout
是否为真(非空)。如果条件为假,则重试shell
模块的执行,每次重试之间延迟5秒,最多重试10次。如果条件为真,则changed_when
选项设置为true
,表示任务已经发生了变化。
接下来,我们使用debug
模块在条件第一次为真时输出一条消息。这是通过使用when
条件来检查result.stdout
是否为真来实现的。
这样,当条件第一次为真时,Ansible将停止循环并输出一条消息。
下一篇:Ansible:迭代遍历清单组