【问题标题】:Ansible Tower/AWX bug? Job task runs serially instead of parallelAnsible Tower/AWX 错误?作业任务串行而不是并行运行
【发布时间】:2020-09-28 16:17:16
【问题描述】:

我有一本非常通用的剧本,没有任何硬编码信息。剧本中的所有内容都是一个变量,并通过提供额外的变量来填充,甚至是连接的主机名。没有清单文件在使用,因为运行它的主机通常是随机的。

在 linux 的命令行上,我可以多次运行我的 ansible playbook,并传递不同的变量,它们将同时运行。

ansible-playbook cluster_check_build.yml -e {"host": "host1"...}

ansible-playbook cluster_check_build.yml -e {"host": "host2"...}

然而,在塔中,如果我创建一个作业模板并使用相同的剧本,那么事情就会连续运行。我使用 API 多次调用该作业模板并将数据作为 JSON 传递。每次我调用 API 来启动作业任务时,我都会提供新的 extra_vars,因此作业任务会针对不同的主机运行。我看到作业是串行运行的,而不是像命令行那样并行运行。

我有 400 多个 主机需要随机运行相同的剧本。这本剧本可能需要一个小时左右才能完成。有时,剧本需要针对 20 或 30 个随机主机运行。时间是至关重要的,串行作业处理是不可能的。

是否可以对不同的主机并行运行相同的作业模板?如果答案是否定的,那么我有什么选择?希望不要创建 400+ 个工作模板。这似乎违背了非常通用的剧本的目的。

【问题讨论】:

    标签: ansible ansible-awx ansible-tower


    【解决方案1】:

    是的,您可以在 Tower/AWX 中针对多个主机并行运行模板/剧本。

    这些是您的模板将连续运行的情况:

    • “forks”在您的模板中设置为 1
    • SERIAL=1 在您的剧本中
    • 您的 Tower/AWX 实例仅设置了 1 个分叉
    • 您的实例设置有 >1 个分叉,但其他作业同时运行。

    【讨论】:

    • 我应该在上面提到,但我已经将分叉设置为 1。我的剧本中没有 serial=1 。并确认,您是说可以并行运行 SAME template.playbook 吗?我只有 1 个需要运行的作业模板。
    • 我刚刚检查了一下,我的实例设置为 139 个分叉,所以也不是这样。您的评论“您的实例设置了 >1 个分叉,但其他作业同时运行。”让我困惑。我的意图是运行超过 1 个工作,但这对我来说听起来是不可能的
    【解决方案2】:

    我觉得自己像个十足的傻瓜。在我的作业模板的右下角有一个小复选框,上面写着“启用并发作业”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多