Ansible剧本可以运行无限循环吗?
我想用Ansible Playbook来运行这个Python脚本,并且每次我的脚本打印出“我还活着”的时候都能看到。这样做可以吗?
python_script.py
import time
while True:
print("I'm alive")
time.sleep(5)
1 个回答
2
我想用Ansible Playbook运行这个Python脚本,并且每次我的脚本打印“我活着”的时候都能看到。这可能吗?
不,这种情况在不增强Ansible核心功能的情况下是无法实现的。
Ansible模块(比如 shell
、command
、script
等等)通常会返回一个数据结构,这个结构可以被存储到一个变量中。这个数据会在任务完成后收集并发送回控制节点。然后,你可以用任务关键字 register
从Ansible任务的输出中创建变量。
因此,你可以看看
类似的问答
- 如何在Ansible执行时获取输出?
- Ansible:如何实时显示Shell
stdout
? - 提供从模块流式传输日志的机制
- 从Ansible自定义模块获取调试信息?
- 如何显示长时间运行的Ansible任务的进度?
根据一个评论
Ansible Playbook能否运行无限循环?
这可以被视为一个“发射后不管”的任务。为了做到这一点,可以查看异步操作和轮询以及并发运行任务:poll = 0
如果你想在Playbook中同时运行多个任务,使用
async
并将poll
设置为0。当你设置poll: 0
时,Ansible会启动任务,然后立即继续下一个任务,而不等待结果。
请注意,对于类似的内容
- script: python_script.py
async: 60
poll: 0
register: result
TASK [script] ******************************
fatal: [localhost]: FAILED! => changed=false
msg: async is not supported for this task.
类似的问答
还有很多其他类似的问题……