You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible新手求助:如何从postgresql_query注册结果提取query_result?

解决Ansible提取postgresql_query结果时的变量未定义错误

问题核心

报错'list object' has no attribute 'query_result'说明你注册的query_X_results是列表类型,而非你预期的字典。你看到的query_result字段是列表中元素的属性,不是列表本身的属性,直接用query_X_results.query_result自然会触发错误。

常见原因

注册变量变成列表的典型场景:

  • 任务在多台目标主机上执行,Ansible会收集所有主机的执行结果合并为列表
  • 任务使用了loop/with_*循环,注册变量会收集每次循环的结果形成列表

解决方案

针对单主机/单循环的场景,直接取列表的第一个元素(索引[0]),再提取query_result即可:

方法1:使用点语法

- name: 提取并保存query_result为fact
  set_fact:
      query_X_results: "{{ query_X_results[0].query_result }}"

方法2:使用键索引语法

- name: 提取并保存query_result为fact
  set_fact:
      query_X_results: "{{ query_X_results[0]['query_result'] }}"

验证建议

如果不确定变量结构,先执行debug任务确认层级:

- name: 查看query_X_results的完整结构
  debug:
      var: query_X_results

内容的提问来源于stack exchange,提问作者Tms91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:45:07