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