如何使用Ansible ad-hoc命令过滤setup返回的nocache、free嵌套字段
问题原因
Ansible setup模块内置的filter参数仅支持顶层事实字段过滤,不支持嵌套字段的点式路径匹配,因此filter=ansible_memory_mb.nocache无法识别到嵌套层级的字段,导致返回结果不符合预期。
可行解决方案
方案1:配合jq工具做后置过滤(需要本地提前安装jq)
- 筛选完整
nocache块命令:
ansible centos1 -m setup -a 'filter=ansible_memory_mb' | jq '.ansible_facts.ansible_memory_mb.nocache'
- 单独筛选
nocache下的free字段命令:
ansible centos1 -m setup -a 'filter=ansible_memory_mb' | jq '.ansible_facts.ansible_memory_mb.nocache.free'
方案2:使用debug模块直接读取嵌套变量(Ansible原生支持,无需额外工具)
- 筛选完整
nocache块命令:
ansible centos1 -m debug -a 'var=ansible_memory_mb.nocache'
- 单独筛选
nocache下的free字段命令:
ansible centos1 -m debug -a 'var=ansible_memory_mb.nocache.free'
内容的提问来源于stack exchange,提问作者user630702
相关产品推荐
相关产品推荐

