【发布时间】: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