在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:迭代遍历清单组