安全 |列出具有共享主机的主机组

Ansible | list hostgroups which has shared hosts

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

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(使用主机组 1)
    • 应用程序 2(使用主机组 1) Level2
    • 应用程序 3(使用主机组 2)
    • 应用程序 4(使用主机组 4)
  2. 在解析列表时,如果任何应用程序使用相同的主机组,那么它应该更改级别。在我的例子中 hostgroup1 在 Level1 的 application1 和 application2 中使用。所以 application2 部署必须移动到 Level2

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

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

非常感谢任何对类似问题或文档的引用。

提前致谢!

回答你的问题

Is there any way in ansible to find list of hostgroups that has hosts shared with other hostgroups in one particular site (inventory file)?

没有。没有,你可以自己解析库存文件。 Ansible 中的所有组和主机都在变量 groups 中可用。参见

- debug: var=groups

Filters 可用于查找 2 组的 相交 相交