避免在Ansible Tower或AWX中为工作流程制作大量模板

问题描述

我正在使用AWX更新Windows服务器。我有一个包含组和主机的清单文件。例如:

[WWW]
foo.example.com
bar.example.com
foo1.example.com
bar1.example.com

[sql]
one.example.com
two.example.com
three.example.com

在我的工作流程中,我希望服务器一次可以启动。现在,我有两个模板。每个小组一个。是否可以使用一个模板,并在我的工作流程中将hosts变量替换为组名?

Screenshot Current Workflow

我使用相同的剧本进行更新,但使用了另一个variable_host。

variable_host: sql
variable_serial: 1

在我的剧本中,我位于顶部:

hosts: "{{ variable_host | default('WWW') }}"
serial: "{{ variable_serial | default(1) | int }}"

我正在寻找一种解决方案,我不必为我拥有的每个组都创建一个新模板。谢谢!

解决方法

您可以通过在主修补模板上设置限制和其他变量的提示来实现此目的,然后在将模板添加到工作流时使用提示选项,这样就可以设置每个模板实例的限制和序列值添加到工作流程中。

  • 创建用于修补的主模板。

  • 确保将主机过滤器设置为“所有”(或与剧本中所有组匹配的限制),并为串行设置变量。

      host: all
      serial: "{{ variable_serial }}"
    
  • 现在为额外的变量和主模板上的限制设置“ PROMPT ON LAUNCH”选项并保存。

enter image description here

  • 将模板添加到工作流程时,单击“ PROMPT”选项,并将每个限制/模板设置为一组/序列设置。

enter image description here

  • 然后只需使用不同的设置将模板添加到工作流中即可。