Ansible 如何列出主机所属的组?
我有一个非常复杂的Ansible设置,有数千台服务器和数百个不同服务器所属的组(动态资源清册文件) 是否有任何方法可以轻松显示特定主机所属的所有组 我知道如何列出所有组及其成员:Ansible 如何列出主机所属的组?,ansible,Ansible,我有一个非常复杂的Ansible设置,有数千台服务器和数百个不同服务器所属的组(动态资源清册文件) 是否有任何方法可以轻松显示特定主机所属的所有组 我知道如何列出所有组及其成员: ansible localhost -m debug -a 'var=groups' 但我不想对所有主机都这样做,而只想对单个主机这样做。有组名: 此外,group\u names是当前主机所在的所有组的列表(数组)。这可以在使用Jinja2语法的模板中使用,以使模板源文件根据主机的组成员身份(或角色)而变化 创建名
ansible localhost -m debug -a 'var=groups'
但我不想对所有主机都这样做,而只想对单个主机这样做。有
组名
:
此外,group\u names
是当前主机所在的所有组的列表(数组)。这可以在使用Jinja2语法的模板中使用,以使模板源文件根据主机的组成员身份(或角色)而变化
创建名为“showgroups”(可执行文件)的剧本,其中包含:
#!/usr/bin/env ansible-playbook
- hosts: all
gather_facts: no
tasks:
- name: show the groups the host(s) are in
debug:
msg: "{{group_names}}"
您可以这样运行它来显示清单(-i)中一个特定主机(-l)的组:
cat/etc/ansible/hosts | grep-e[[]&&ansible all——列出主机顺便说一句,我只是想欣赏使用shebang将剧本转换为可执行文件。这很好。仅供参考,如果主机不在组下,它会列出“未分组”。如果主机也在组下,它只列出组名而不列出组名“ungrouped”。因此您可以使用以下命令:
ansible${hostname}-m debug-a var=group_names
上面的注释应该是可接受的解决方案:)这是完全不完整的。它假设清单的唯一来源是/etc/ansible/hosts
,并且仅当它以ini格式存储时才有效。
./showgroups -i develop -l jessie.fritz.box