【问题标题】:Avoid making a lot of templates for a workflow in Ansible Tower or AWX避免在 Ansible Tower 或 AWX 中为工作流程制作大量模板
【发布时间】:2020-10-28 15:23:35
【问题描述】:

我正在使用 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

我使用相同的 playbook 进行更新,但使用不同的 variable_host。

variable_host: SQL
variable_serial: 1

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

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

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

【问题讨论】:

  • 为什么不同时调用两个组的剧本? => hosts: WWW:SQL
  • 因为我想要的组,还有不同的variable_serial。 webservers 2 一次,但 sql 节点一个接一个。还有一些模板必须并行播放,还有一些模板需要串行播放。我正在寻找一个可以处理这个问题的模板。也许通过将额外的变量传递给工作流中的下一个模板,但我不知道如何......

标签: ansible workflow ansible-awx ansible-tower


【解决方案1】:

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

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

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

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

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

  • 然后继续使用不同的设置将模板添加到工作流中。

【讨论】:

  • 太棒了。谢谢!这正是我想要的。完美的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-21
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多