如何查看Ansible主机/清单/组变量及指定变量文件夹路径?
Ansible查看主机所有变量及指定变量路径方案
一、获取包含组变量在内的所有主机变量
有两种高效方法可以查看目标主机的所有变量(清单变量、主机变量、组变量):
- 使用
ansible-inventory命令(推荐)
直接通过--vars参数让命令输出指定主机的所有合并后变量,无需依赖工作目录位置:
ansible-inventory -i ../inventory.yaml --host spine1-nxos --vars
输出为JSON格式,包含该主机继承的所有组变量、自身主机变量及清单定义的变量。
- 使用
ansible debug模块
只要确保Ansible能正确加载变量文件(参考下文路径配置方法),即可在任意目录执行你的原命令:
ansible -m debug -i ../inventory.yaml -a "var=hostvars[inventory_hostname]" spine1-nxos
二、指定主机/组变量的文件夹路径
Ansible默认会从当前工作目录的group_vars和host_vars文件夹加载变量,若你的变量存放在其他路径,可通过以下三种方式指定:
- 方法1:配置ansible.cfg文件
在项目目录下创建或修改ansible.cfg,持久化配置变量路径:
[defaults] inventory = ../inventory.yaml group_vars_path = /full/path/to/your/group_vars host_vars_path = /full/path/to/your/host_vars
配置完成后,所有Ansible命令都会自动加载这些路径下的变量文件。
- 方法2:设置环境变量
适合临时指定路径,单次会话生效:
export ANSIBLE_GROUP_VARS_PATH=/full/path/to/your/group_vars export ANSIBLE_HOST_VARS_PATH=/full/path/to/your/host_vars # 执行变量查看命令 ansible -m debug -i ../inventory.yaml -a "var=hostvars[inventory_hostname]" spine1-nxos
- 方法3:命令行直接加载变量文件
临时加载特定变量文件,适合测试场景:
ansible -m debug -i ../inventory.yaml \ -e "@/path/to/group_vars/all.yml" \ -e "@/path/to/group_vars/your_target_group.yml" \ -e "@/path/to/host_vars/spine1-nxos.yml" \ -a "var=hostvars[inventory_hostname]" spine1-nxos
内容的提问来源于stack exchange,提问作者felix001
相关产品推荐
相关产品推荐

