在 ansible inventory 中显示主机所在的所有组

在 ansible inventory 中显示主机所在的所有组

我有一套 ansible (v2.9.11) 剧本,其中有大约 80 台服务器,可以执行各种不同的任务。我尝试将事物划分为组,并设置子组。

是否可以轻松查看主机所属的所有组?特别是如果它显示层次结构,例如“主机 H₁ 位于组 G₁ 中,而组 G₁ 是组 G₂ 的子组”

答案1

特殊变量 group_names保持“当前主机所属组列表”。Ansible 中没有关于组层次结构的信息。

答案2

基于以下灵感https://unix.stackexchange.com/a/706901/106012,我想出了这个解决方案来列出特定主机的组:

ansible-inventory --list | jq -r 'map_values(select(.hosts != null and (.hosts | contains(["myhost"])))) | keys[]'

这没有考虑嵌套组,但适用于我的小型 ansible 安装中的平面组结构。我相信jq比我更厉害的人可以解决这个问题。

相关内容