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

Ansible debug输出results.stdout报VARIABLE IS NOT DEFINED错误

报错原因

该报错由两处问题导致:

  • YAML缩进错误,sysctl模块参数未被正确识别
    原playbook中state: present、sysctl_set: true、reload: true均为sysctl模块的合法参数,但编写时缩进层级和模块声明sysctl:同级,没有缩进至sysctl:的子层级下。Ansible解析任务时,仅会将缩进在sysctl:下的name、value识别为模块入参,其余三个参数会被直接忽略,导致任务执行逻辑异常。

注:register: results是任务级关键字,当前缩进位置正确,无需缩进至模块内部。

  • 引用了sysctl模块不存在的返回字段
    即便修正缩进让任务正常执行,访问results.stdout仍会触发变量未定义报错。stdout字段仅存在于command、shell、script这类直接调用系统命令的模块返回结果中,用于存储命令执行的标准输出。sysctl是Ansible封装的原生配置类模块,返回结构化执行结果,不存在stdout字段,其常用返回字段包括:
    • changed:布尔值,标记系统配置是否发生变更
    • failed:布尔值,标记任务是否执行失败
    • before:字符串,存储修改前的内核参数值
    • after:字符串,存储修改后的内核参数值
    • msg:字符串,存储执行结果的文本说明
修正后可正常运行的Playbook
---
- hosts: "{{ target }}"
  become: yes

  vars:
    sysctl_name: "vm.swappiness"
    sysctl_value: "6"

  tasks:
   - name: 'set VM swap setting'
     sysctl:
       name: "{{ sysctl_name }}"
       value: "{{ sysctl_value }}"
       state: present
       sysctl_set: true
       reload: true
     register: results

   - name: 输出完整任务执行结果
     debug:
       var: results

如果仅需要查看配置生效的最终值,可将debug模块的var参数改为results.after。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:45:31