完成一项任务后,如何让ansible留在机器上?

完成一项任务后,如何让ansible留在机器上?,ansible,Ansible,我正在使用ansible运行一个启动构建引擎的任务。一旦它们全部启动,ansible将控制权返回给我,我看到它们立即停止。当我在脚本的运行中添加一个async:10标志时,它可以工作,但问题是当有多个构建引擎时,它们启动所需的时间超过10秒,这使得async类型为null 我试过使用 - pause: seconds: 10 任务,但构建引擎停止,然后执行暂停 我想问的是-有没有一种方法可以让ansible在运行完命令后(即,在将控件返回给用户后)在机器上停留几秒钟?虽然不清楚您使用的是哪

我正在使用ansible运行一个启动构建引擎的任务。一旦它们全部启动,ansible将控制权返回给我,我看到它们立即停止。当我在脚本的运行中添加一个async:10标志时,它可以工作,但问题是当有多个构建引擎时,它们启动所需的时间超过10秒,这使得async类型为null

我试过使用

- pause:
  seconds: 10
任务,但构建引擎停止,然后执行暂停


我想问的是-有没有一种方法可以让ansible在运行完命令后(即,在将控件返回给用户后)在机器上停留几秒钟?

虽然不清楚您使用的是哪种构建系统以及为什么它不能正确地对自身进行守护,我认为该模块非常适合您的需要。您可以等待tcp端口出现,如果生成系统打开tcp端口,请等待创建某个文件,分析日志文件中的字符串,指示生成已成功启动,或者只是等待一段时间。

尝试等待,但似乎退出了环境,然后执行任务。 我通过在shell执行任务中使用以下命令修复了此问题:

async: 300
poll: 5

这将异步运行任务,并每5秒轮询一次响应

您应该使用ansible
服务
模块或类似的get
init
来代表您启动长时间运行的流程,而不是将构建引擎作为其自身的子代来启动。然后作业将运行,直到您使用ansible停止它们。