可以使用Ansible配置同步“即发即弃”任务吗?

时间:2017-10-19 16:57:45

标签: python-2.7 ansible

我有几个长时间运行的Ansible任务,其中SSH连接通常会在完成之前超时。任务需要按照剧本的指定顺序运行。

理想情况下,我想将剧本配置为一系列“即发即弃”任务,最后一项任务是完成所有事情的SNS通知。就像我一样,我想启动剧本,并能够关闭我的电脑(控制机器),让剧本继续在服务器上进行。

据我所知,唯一的方法是通过禁用轮询(以及长时间限制)使任务异步。但是,将任务设置为异步并没有用,因为我需要阻止任务执行,直到上一个任务完成。

我已经探索了注册变量,然后在下一个任务上设置when: variable.finished,但这会导致跳过任务。我已经探索过wait_forblock,但这些似乎并不符合我的意图。

这可能吗?如果是这样,怎么样?

感谢。

1 个答案:

答案 0 :(得分:0)

经过一番商议后,我认为我真正需要的是能够将整个剧本作为“即发即忘”的异步任务运行。

为此,我做了一个新的异步ansible任务,使服务器自己运行playbook,例如:

- hosts: server
  tasks:
    - name: Run a Playbook
      command: ansible-playbook {{playbook}}
      async: 3600
      poll: 0

并修改原始剧本的主持人以使用localhost(因为它现在正在运行)。