Ansible 在结果不为空之前可循环

Ansible 在结果不为空之前可循环,ansible,ansible-2.x,Ansible,Ansible 2.x,我正在尝试创建一个简单的Ansible脚本,它在命令中循环,直到返回IP。这是我的 -名称:获取Shipa API地址 shell:kubectl--namespace=shipa system get svc shipa ingres nginx-o jsonpath=“{.status.loadBalancer.ingres[0].ip}” 环境: 术语:哑巴 注册:shipa_api 截止日期:shipa_api.stdout |长度>3 重试次数:5次 延误:90 -设定事实: ship

我正在尝试创建一个简单的Ansible脚本,它在命令中循环,直到返回IP。这是我的

-名称:获取Shipa API地址
shell:kubectl--namespace=shipa system get svc shipa ingres nginx-o jsonpath=“{.status.loadBalancer.ingres[0].ip}”
环境:
术语:哑巴
注册:shipa_api
截止日期:shipa_api.stdout |长度>3
重试次数:5次
延误:90
-设定事实:
shipa_apiaddr:“{{shipa_api.stdout | trim}”
这肯定不起作用,需要注意的一点是,上面的命令在为空时可能会返回一个简单的
%
,因此我需要确保Ansible仅在存在真实IP或超过X个字符时才转到下一个任务

我该怎么做?非常感谢您的帮助

有一个过滤器可用于此目的

所以你可以去:

-名称:获取Shipa API地址
shell:kubectl--namespace=shipa system get svc shipa ingres nginx-o jsonpath=“{.status.loadBalancer.ingres[0].ip}”
环境:
术语:哑巴
注册:shipa_api
截止日期:shipa_api.stdout | ipaddr
重试次数:5次
延误:90

您是否在寻找检查IP的条件,如
直到:shipa_api.stdout是regex(“”)
?类似于这一点。问题是每次运行ansible脚本时,IP都会发生变化,因此需要等待,直到有IP存在,但我不能指出固定IP,正则表达式需要检查通用IP地址,而不是单个固定IP,但我同意
ipaddr
过滤器将是一种方法。