如何列出主持人所属的组?

Pet*_*etr 10 ansible

我有一个非常复杂的Ansible设置,有数千台服务器和数百个组,各种服务器都是(动态库存文件)的成员.

有没有办法轻松显示特定主机所属的所有组?

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

ansible localhost -m debug -a 'var=groups'
Run Code Online (Sandbox Code Playgroud)

但我想这样做不是针对所有主机,而是针对单个主机.

Ren*_*ijl 15

创建一个名为"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}}"
Run Code Online (Sandbox Code Playgroud)

您可以像这样运行它来显示清单(-i)中一个特定主机(-l)的组:

 ./showgroups -i develop -l jessie.fritz.box 
Run Code Online (Sandbox Code Playgroud)

  • 对于旁边的道歉,我只是想欣赏使用shebang将剧本变成可执行文件.真漂亮. (6认同)
  • 特别风格:`ansible -m debug -a 'msg={{group_names}}' jessie.fritz.box` (2认同)

Kon*_*rov 12

group_names 魔术变量:

另外,group_names是所有组的当前主机处于列表(阵列),这可以在模板中使用Jinja2的语法,使主机的该变化基于组成员的模板源文件(或作用)使用

  • 因此您可以使用以下命令:`ansible $ {hostname} -m debug -a var = group_names` (4认同)
  • 上面的评论应该被接受解决方案:) (2认同)