我有一个非常复杂的Ansible设置,有数千台服务器和数百个不同服务器组成的组(动态库存文件)。
有没有办法轻松显示特定主机所属的所有组?
我知道如何列出所有群组及其成员:
ansible localhost -m debug -a 'var=groups'
但我想这样做不是针对所有主机,而是针对单个主机。
答案 0 :(得分:11)
创建一个名为'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)的组:
./showgroups -i develop -l jessie.fritz.box
答案 1 :(得分:8)
有Search (option _ -> option _).
magic variable:
此外,
group_names
是当前主机所在的所有组的列表(数组)。这可以在使用Jinja2语法的模板中用于制作根据组成员身份(或角色)而变化的模板源文件)主持人
答案 2 :(得分:0)
cat / etc / ansible / hosts | grep -e [[]&& ansible all --list-hosts