如何通过命令行获取Ansible特殊变量(魔法变量)完整列表
离线获取Ansible魔法变量列表的实现方案
完全可以在离线状态下通过Ansible自带工具实现需求,无需访问在线文档,以下是几种常用方法:
方法1:使用ansible-doc直接查询(适用于Ansible 2.11及以上版本)
ansible-doc原生支持查询特殊变量的元数据:
- 列出所有当前版本支持的魔法变量名称列表:
ansible-doc --type special_variable --list
- 查看某一个具体魔法变量的详细说明、使用场景和示例:
ansible-doc --type special_variable <目标变量名> # 示例:查看ansible_version变量的说明 ansible-doc --type special_variable ansible_version
方法2:通过本地adhoc命令导出上下文生效变量(全版本兼容)
直接调用debug模块输出当前本地执行环境下所有可用的内置变量:
- 输出所有包含facts在内的全部主机变量,其中就包含所有生效的魔法变量:
ansible localhost -m debug -a 'var=hostvars[inventory_hostname]'
- 仅过滤输出魔法变量,排除普通采集到的facts数据:
ansible localhost -m debug -a 'var=hostvars[inventory_hostname] | keys | select("match", "^ansible_|^groups|^group_names|^inventory_hostname|^playbook_dir|^role_path|^ansible_play_batch") | list'
方法3:查看本地安装的Ansible源码定义
如果你需要看最原始的变量定义逻辑,可以直接读取本地Ansible安装目录下的源码文件:
- 全局魔法变量的定义一般存放在Ansible安装路径下的
ansible/vars/__init__.py、ansible/config/base.yml两个文件中,直接用文本编辑器打开即可查看全部内置变量的声明。
注意事项
以上方法获取的变量列表和你当前安装的Ansible版本完全匹配,比通用在线文档更符合你的实际运行环境,不会出现版本不匹配的无效变量。
内容的提问来源于stack exchange,提问作者W4hf
相关产品推荐
相关产品推荐

