如何在Ansible Tower中同时运行多个工作?

时间:2015-01-16 18:23:18

标签: ansible ansible-awx

似乎所有工作都已入队,一次只能运行一个。我们怎样才能运行多个?

5 个答案:

答案 0 :(得分:4)

共享相同库存或SCM源的作业无法同时运行。

答案 1 :(得分:4)

Tower旨在并行化作业,但有几种情况不会。

  1. 如果您的广告资源或SCM设置为"在发布时更新"如果没有缓存或cahche已过期,则任何其他作业将在库存或SCM更新后面等待处理。在当前正在运行的作业完成之前,清单和SCM不会更新。
  2. 如果您尝试针对同一主机运行多个作业:Tower不会同时针对同一主机运行多个作业,以避免竞争条件。 (localhost是一个可能的例外)。如果您需要同时针对同一主机运行多个作业,则需要创建两个库存并将该主机放入两个库存中,针对不同库存运行两个作业。在这种情况下,Tower不知道您是在针对同一主机运行。

答案 2 :(得分:3)

假设您的工作由三项任务组成:

任务1:"做x",任务2:"做y",任务3:"做z"

使用ansible"做x"将在所有服务器上运行,然后"做y"将在所有服务器上运行,然后"做z"将在所有服务器上运行。

另外,我说"所有服务"但事实上,它最大限度地发挥了安塞斯"叉子"值,默认为5.在我的100服务器环境中,我将此值设置为20.此处更多内容:http://docs.ansible.com/intro_configuration.html#forks

请记住,ansible的优势在于同时在许多机器上完成工作(一组任务)。如果你想要的是在一台机器上多次运行相同的任务,那么你需要像fork或parallel这样的东西。

事实上,Ansible将尝试运行"做x"在许多机器上可以多次使用。您可以调整此行为,让整个作业在部分计算机上运行,​​然后再使用" serial"关键字(http://docs.ansible.com/playbooks_delegation.html#rolling-update-batch-size)。

不是分叉和串行之间的细微差别。

  • 分叉是"每个任务"

  • serial is" per job" (任务集合)

David Thornton

编辑:我重新阅读了你的问题。这是关于一次运行多个作业,而不是比作业中的任务运行更多。所以我认为你对ansible-awx是正确的,但不适用于命令行。通过Web界面,您可以将作业提交到作业队列,但是您不能让ansible-awx一次运行多个任务。我认为。但是,通过命令行,如果打开多个窗口,则可以同时运行多个ansible-playbooks。你有一个ansible支持帐户吗?那些家伙都很棒恕我直言,他们花了很多时间来回答我的问题(比如你的问题)。

答案 3 :(得分:0)

可以从Tower执行同时作业。作业模板具有"启用并发作业"选项。参见" 15.4节。 Job Concurrency"在http://www.oracle.com/technetwork/database/database-technologies/bdc/big-data-connectors/downloads/index.html

答案 4 :(得分:0)

如果我在一台运行同步模式管理的服务器上有3个不同的任务,则将3个任务分配给一个作业ID,并且每个任务都执行一次,而另一个则消耗大量时间。

在低于2.5的Ansible版本中,我们可以为3个不同的任务获得3个作业ID,并且可以节省大量时间并同时开始执行。这种类型称为异步模式。