Automation Ansible-如何在使用循环时检查特定的子字符串';直到';?

Automation Ansible-如何在使用循环时检查特定的子字符串';直到';?,automation,ansible,switching,Automation,Ansible,Switching,我有一个任务要检查我的交换机是否已重新启动,我想运行该任务,直到它返回成功的ping。我使用的开关是Aruba 2530,当我手动ping它时,我会得到以下字符串作为回报: 192.168.12.200处于活动状态,时间=2毫秒 我的想法是从返回字符串中检查单词“alive”,以查看ping是否成功。这是一种理想的方式吗?哦,我正在使用来自的模块 我的任务如下所示: arubaos_switch_ssh_cli: ip: "{{ ansible_host }}" user:

我有一个任务要检查我的交换机是否已重新启动,我想运行该任务,直到它返回成功的ping。我使用的开关是Aruba 2530,当我手动ping它时,我会得到以下字符串作为回报:

192.168.12.200处于活动状态,时间=2毫秒

我的想法是从返回字符串中检查单词“alive”,以查看ping是否成功。这是一种理想的方式吗?哦,我正在使用来自的模块

我的任务如下所示:

  arubaos_switch_ssh_cli:
    ip: "{{ ansible_host }}"
    user: "{{ ansible_user }}"
    password: "{{ ansible_password }}"
    show_command: "ping 192.168.12.200"
  register: ping_result
  retries: 12
  delay: 5
  until: ???"
我试着用谷歌搜索答案,并尝试了几种不同的语法。我发现的大多数东西都考虑了条件“when”,所以我不确定在查看它们的语法时,“when”和“until”如何相互比较

我试过以下几点:

"'alive' in ping_result.cli_output"

"ping_result.cli_output | search('alive')

"{{ 'alive' in ping_result.cli_output }}"
还有其他几个不起作用的


提前感谢大家

如果没有您注册的var样本,有点难以确定,但我认为这正是您要寻找的:

until: ping_result.cli_output is search('alive')
值得注意的是:

  • 任务参数
    until
    (当
    时为,
    failed_…)直接解释为jinja2模板字符串。所以你不应该在你的表情周围加上双大括号
  • Ansible不是过滤器,不应作为过滤器使用(即与管道(
    |
    )符号一起使用)
打印ping\u结果
-debug:var=ping\u结果
并查看详细信息。