Ansible剧本可以运行无限循环吗?

-3 投票
1 回答
91 浏览
提问于 2025-04-14 18:01

我想用Ansible Playbook来运行这个Python脚本,并且每次我的脚本打印出“我还活着”的时候都能看到。这样做可以吗?

python_script.py

import time
 
while True:
    print("I'm alive")
    time.sleep(5)

1 个回答

2

我想用Ansible Playbook运行这个Python脚本,并且每次我的脚本打印“我活着”的时候都能看到。这可能吗?

不,这种情况在不增强Ansible核心功能的情况下是无法实现的。

Ansible模块(比如 shellcommandscript 等等)通常会返回一个数据结构,这个结构可以被存储到一个变量中。这个数据会在任务完成后收集并发送回控制节点。然后,你可以用任务关键字 register 从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.

类似的问答

还有很多其他类似的问题……

撰写回答