如何通过Shell命令获取Ansible清单中ansible_host的IP地址?
获取Ansible清单中主机IP地址的方法
以下几种方式可以直接提取inventory.yaml中主机对应的IP地址:
1. 使用debug模块输出IP变量
执行命令直接调用debug模块,打印每个主机的ansible_host变量值(即配置的IP地址):
ansible secondtest -i inventory.yaml -m debug -a "var=ansible_host"
示例输出:
host1 | SUCCESS => { "ansible_host": "192.168.33.168" } host2 | SUCCESS => { "ansible_host": "192.168.7.151" } host3 | SUCCESS => { "ansible_host": "192.168.33.158" }
2. 使用ansible-inventory工具查看清单变量
ansible-inventory是Ansible官方提供的清单信息查看工具,支持多种格式输出:
- 查看完整清单的JSON结构(包含所有主机变量):
ansible-inventory -i inventory.yaml --list
- 查看单个主机的详细变量:
ansible-inventory -i inventory.yaml --host host1
- 显示带变量的组拓扑图:
ansible-inventory -i inventory.yaml --graph --vars
3. 提取纯IP列表(结合文本过滤)
如果只需要纯IP地址的列表,可通过文本过滤工具处理debug模块的输出:
ansible secondtest -i inventory.yaml -m debug -a "var=ansible_host" | grep ansible_host | awk '{print $2}' | tr -d '"'
输出结果为每行一个IP:
192.168.33.168 192.168.7.151 192.168.33.158
内容的提问来源于stack exchange,提问作者LongKang Fan
相关产品推荐
相关产品推荐

