Ansible在字符串中查找列表的任何成员

Ansible在字符串中查找列表的任何成员,ansible,Ansible,我有一个问题,当在uri请求的注册结果中发现IP列表的任何成员时,我只需要接受一个任务,该列表是动态生成的,大小可变,url是不同微服务的聚合器,因此在填充之前需要时间(因此重试和延迟) vars: ES#U IPS:[“192.168.0.1”、“192.168.0.2”、“192.168.0.3”]#动态(这是一个示例) -名称:检查是否存在任何成员 uri: 网址:http://localhost:8080/stuff 方法:获取 返回内容:是 状态代码:200 寄存器:结果 直到:res

我有一个问题,当在uri请求的注册结果中发现IP列表的任何成员时,我只需要接受一个任务,该列表是动态生成的,大小可变,url是不同微服务的聚合器,因此在填充之前需要时间(因此重试和延迟)

vars:
ES#U IPS:[“192.168.0.1”、“192.168.0.2”、“192.168.0.3”]#动态(这是一个示例)
-名称:检查是否存在任何成员
uri:
网址:http://localhost:8080/stuff
方法:获取
返回内容:是
状态代码:200
寄存器:结果
直到:result.content中的任何消息请查看:

我认为你应该使用一个剧本过滤器。您是否尝试过:
直到:result.stdout.find(“您想要的”)!=-1

您还可以使用
命令
模块:

- command: "grep  {{ result.content }} ..."
  with_items: "..."
  register: new_result
在Ansible现有子字符串中:

when: variable1 | search("value")
when: '"value" in variable1'
when: fsm_out.stdout | regex_search(' data')

ES\u IPS
列表中的元素数量是否固定?在你的代码中总是3?不,它是动态生成的,大小可变,否则我会有一堆“或”。测试环境已关闭,我下面提到的工作将推迟到明天。问题是找不到,问题是找到“任何”,然后返回真值,任务继续。如果我在任务结束后grep继续,则无论站点是否已开始聚合IP,任务都已通过。而且,它不应该是“何时”,而应该是“直到”,尽管你的回答让我想到了一种可行的方法。如果有效,我会把答案贴在这里。请看这里:
when: variable1 | search("value")
when: '"value" in variable1'
when: fsm_out.stdout | regex_search(' data')