Ansible:用两个正则表达式等待

Ansible:用两个正则表达式等待,ansible,Ansible,在日志文件中使用带有“wait_for”和“regex_search”的regex搜索,我询问是否可以将wait_for条件用于多个regex 我成功地使用了: vars: 日志文件: 模式匹配: 任务: -名称:“获取日志文件的内容:{{log_file}” 命令:“cat{{log_file}” 更改时间:false 寄存器:cat_输出 -名称:“创建用于存储行计数的变量(为了清楚起见)” 设定事实: 行_计数:{{cat_output.stdout_行|长度}}” #####做一些其他的

在日志文件中使用带有“wait_for”和“regex_search”的regex搜索,我询问是否可以将wait_for条件用于多个regex

我成功地使用了:

vars:
日志文件:
模式匹配:
任务:
-名称:“获取日志文件的内容:{{log_file}”
命令:“cat{{log_file}”
更改时间:false
寄存器:cat_输出
-名称:“创建用于存储行计数的变量(为了清楚起见)”
设定事实:
行_计数:{{cat_output.stdout_行|长度}}”
#####做一些其他的任务(比如部署应用程序)
-名称:“等待,直到在日志文件{{log\u file}}中找到“{pattern\u to\u match}}”
等待:
路径:“{{log_file}}”
search_regex:“^{{pattern_to_skip_preisting_lines}}{{pattern_to_match}$”
国家:现在
变量:
模式_to_跳过_先前存在的_行:“(.*\\n){%raw%}{{%endraw%}{line_count},{%raw%}{%endraw%}”#即,如果line_count=100,那么这将等于“(.\\n){100,}”
匹配单个正则表达式(例如“ABCD系统已启动正常”)

例如,现在我尝试使用相同的wait_for来捕获多个正则表达式

  • 启动完成/正确时“系统启动正常”
  • 出现问题时“ABCD系统失败”
然后,使用fail/debug继续或停止…但是我在使用regex数组或带有_项的每个测试中都失败了

是否可以在Ansible上同时检查多个正则表达式


如果是,有更好的方法或优雅的解决方案吗?

使用ansible 2.2.1.0和2.6.1这对我很有用:

- name: wait for multiple regex
  become: yes
  wait_for:
    path: "{{ log_file }} "
    search_regex: "{{ item }}"
  with_items:
    - "ABCD System Started OK"
    - "ABCD System Failed"

谢谢Zach,它可以工作,但(对我来说)与前面的代码不一样。您的示例希望这两个正则表达式都是真的,以便继续执行剧本:
任务[jstart:myserver01-等待,直到在日志文件中找到'ABCD System Started OK':/tmp/foo]***************************************************************************************************************************************确定:[myserver01]=>(item=ABCD系统启动正常)正常:[myserver01]=>(item=ABCD系统失败)
然后继续播放剧本。在两个条件之一为真后,我需要一些东西来中断任务。
- name: wait for multiple regex
  become: yes
  wait_for:
    path: "{{ log_file }} "
    search_regex: "{{ item }}"
  with_items:
    - "ABCD System Started OK"
    - "ABCD System Failed"