Shell 使用ansible检查文件中的序列
我写ansible playbook是为了在文件中查找特定文本。它在2000秒内寻找该模式,然后退出Shell 使用ansible检查文件中的序列,shell,ansible,Shell,Ansible,我写ansible playbook是为了在文件中查找特定文本。它在2000秒内寻找该模式,然后退出 - name: check if keyword exist shell: cmd: | sh -c "tail -n 100 -f play.txt | {sed '/@@@@/ q' && kill $$; }" async: 2000 register: hi failed_when: not hi.changed 现在
- name: check if keyword exist
shell:
cmd: |
sh -c "tail -n 100 -f play.txt | {sed '/@@@@/ q' && kill $$; }"
async: 2000
register: hi
failed_when: not hi.changed
现在,我想让我的游戏在1000秒后(前2000秒)检查另一个模式,如果该模式存在,则失败
但我不确定在第一个任务进行1000秒后如何检查第二个模式
在ansible中可能吗?理论上,您可以在ansible中创建一些异步任务,并编写某种“池管理器”播放来检查它们的状态,但这将是对该工具的严重滥用 Ansible不是为编程而设计的。如果你需要一些逻辑(你想写的东西肯定充满了自定义逻辑),最好使用外部工具 Ansible适用于定义系统的幂等状态(以及如何创建此状态的说明)。一旦你开始写其他的东西,你就使用了专门的工具来做错误的工作
所以,答案是,可以,不可以。非常感谢您的回答。我有一个问题,所以,当轮询保持为0时,异步模块用于并行运行任务。那么,这是否意味着如果我有3个任务,并且task1以异步方式运行,那么一旦触发taks1,控制器将转到task2并开始运行,然后再转到task3。另一件事,如果我保持异步到3分钟,我的执行会在3分钟后停止吗?异步任务独立于控制器运行。它几乎是“开火并忘记”,但没有“忘记”(你仍然有JID来查询状态)。您可以使用Ansible并行运行多个异步任务,但实际上无法管理它们。因此,让10个异步任务执行一些缓慢的操作(下载10G映像、运行硬盘安全擦除等)是完全可以的,但尝试根据这些任务及其状态创建自定义逻辑是不好的。