您如何 运行 在 Ansible Tower 中同时进行多个作业?

How can you run more than one simultaneous job in Ansible Tower?

似乎所有作业都已排队,并且一次只有一个 运行。怎么才能运行不止一个呢?

假设您的工作包含三个任务:

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

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

此外,我说的是 "all serves",但实际上它在 ansible "forks" 值时达到最大值,默认值为 5。在我的 100 服务器环境中,我将此值设置为 20。更多信息这里:http://docs.ansible.com/intro_configuration.html#forks

请记住,ansible 的优势在于同时在多台机器上执行一项工作(一组任务)。如果您想要在一台机器上多次 运行 相同的任务,那么您需要类似 fork 或并行的东西。

事实上,Ansible 会尝试 运行 "do x" 尽可能多的次数。您可以在使用 "serial" 关键字 (http://docs.ansible.com/playbooks_delegation.html#rolling-update-batch-size).

在更多机器上开始之前,在一部分机器上调整整个作业 运行 的行为。

不是 fork 和 serial 之间的细微差别。

  • forks 是 "per task"

  • 连载为"per job"(任务合集)

大卫·桑顿

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

共享相同 Inventory 或 SCM 源的作业不能同时 运行。

Tower 旨在并行化作业,但在某些情况下它不会。

  1. 如果您将清单或 SCM 设置为 "update on launch" 且没有缓存或缓存已过期,则任何其他作业都将在清单或 SCM 更新后暂停。在当前 运行ning 作业完成之前,库存和 SCM 不会更新。
  2. 如果您尝试 运行 针对同一主机的多个作业:为了避免竞争条件,Tower 不会同时针对同一主机 运行 多个作业。 (localhost 是一个可能的例外)。如果您需要多个作业同时针对同一主机运行,那么您需要创建两个清单并将该主机放入两个清单中,运行将两个作业针对不同的清单。在这种情况下,Tower 不知道您正在 运行ning 对抗同一台主机。

可以从 Tower 执行并发作业。作业模板有 "Enable Concurrent Jobs" 选项。请参阅 http://docs.ansible.com/ansible-tower/latest/html/userguide/jobs.html 的“15.4. 作业并发”部分。

如果我在单个服务器上有 3 个不同的任务 运行 它称为同步模式管理,3 个任务将分配给一个作业 ID,并且每个任务一个接一个地执行,这会消耗大量资源时间.

在Ansible 2.5以后的版本中我们可以得到3个不同任务的3个作业ID,并且同时开始执行,这样我们可以节省一个巨大的time.This类型被称为异步模式。