Ansible |列出拥有共享主机的主机组

时间:2019-03-13 06:19:43

标签: ansible ansible-inventory

我们有使用Ansible部署应用程序的用例,ansible库存具有多个主机组,在某些情况下,相同的主机在多个主机组之间共享

inventoryfile.ini如下:

[prod-apphostgroup1]
host01.local given_name=host01
host02.local given_name=host02

[prod-apphostgroup2]
host01.local given_name=host01
host02.local given_name=host02

正在Ubuntu机器上进行部署。无论如何,如果我们要部署到这些主机组,由于apt锁定问题会发生,这将导致部署失败,因此我们无法并行运行。

我正在尝试执行以下操作:

  1. 为应用程序列表设置部署顺序,此列表是静态的

    一级

    • 应用程序1(使用hostgroup1)
    • 应用程序2(使用hostgroup1) Level2
    • 应用程序3(使用hostgroup2)
    • 应用程序4(使用hostgroup4)
  2. 在解析列表时,如果任何应用程序使用相同的主机组,则应更改级别。就我而言,在级别1的application1和application2中使用了 hostgroup1 。因此,application2部署必须移至Level2

为了更新部署顺序查找,我需要查找清单中是否共享了任何主机组。我正在部署到多个站点,在某些站点中,每个应用程序都与唯一的主机组相关联,在某些站点中其共享。

是否有任何方法可以找到一个主机组的列表,该主机组具有与一个特定站点中的其他主机组共享的主机(清单文件)

任何对类似问题或文档的引用都将受到赞赏。

谢谢!

1 个答案:

答案 0 :(得分:0)

回答您的问题

  

是否有任何办法无法找到在一个特定站点(清单文件)中具有与其他主机组共享主机的主机组列表?

不。没有,您可以自己解析清单文件。 groups 变量中提供了Ansible中的所有组和主机。见

- debug: var=groups

Filters可用于查找两组的相交差异