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

Ansible中set_fact配合json_query赋值结果异常问题咨询

问题根因

  • 核心冲突:你使用了Ansible的内置保留变量名groups,该变量是Ansible默认用来存储Inventory中所有主机组信息的,自定义赋值会和内置变量冲突,所以最终输出的是内置的主机组内容,而非你预期的ConfigMap数据。
  • 笔误问题:你通过k8s_info注册的变量名为groupsvalue,但后续json_query调用时错误使用了不存在的变量vals,需要同步修正。
  • 结构问题:resources[*].data返回的是列表结构,你需要的内容在列表第一个元素中,需要额外取出。

解决方案

修改变量名为非保留名,同时调整取值逻辑即可,修改后的playbook参考:

---
- hosts: localhost
  vars:
    ansible_python_interpreter: /usr/bin/python3
  tasks:
    - name: Fetch groups
      k8s_info:
        api_version: v1
        kind: ConfigMap
        name: groups
        namespace: default
        verify_ssl: no
      register: groupsvalue
    - debug:
        msg: "{{ groupsvalue | json_query('resources[*].data') }}"
    # 替换变量名,同时取出列表中第一个元素的data值
    - set_fact:
        ldap_groups: "{{ groupsvalue | json_query('resources[0].data') }}"
    - debug:
        msg: "{{ ldap_groups }}"

输出效果

运行后最后一个debug的输出就是你期望的结果:

{
    "msg": {
        "groups.txt": "CN=foo1,OU=Groups,OU=.Common,DC=local\nCN=bar1,OU=Groups,OU=.Common,DC=local\n"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:45:02