Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible 如何列出主机所属的组?_Ansible - Fatal编程技术网

Ansible 如何列出主机所属的组?

Ansible 如何列出主机所属的组?,ansible,Ansible,我有一个非常复杂的Ansible设置,有数千台服务器和数百个不同服务器所属的组(动态资源清册文件) 是否有任何方法可以轻松显示特定主机所属的所有组 我知道如何列出所有组及其成员: ansible localhost -m debug -a 'var=groups' 但我不想对所有主机都这样做,而只想对单个主机这样做。有组名: 此外,group\u names是当前主机所在的所有组的列表(数组)。这可以在使用Jinja2语法的模板中使用,以使模板源文件根据主机的组成员身份(或角色)而变化 创建名

我有一个非常复杂的Ansible设置,有数千台服务器和数百个不同服务器所属的组(动态资源清册文件)

是否有任何方法可以轻松显示特定主机所属的所有组

我知道如何列出所有组及其成员:

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