Ansible 2.5中snow_record模块报错求助及使用方法咨询
解决Ansible 2.5中snow_record模块的报错问题
我之前在Ansible 2.5里用过snow_record模块,刚好踩过和你一模一样的坑,核心问题就是pysnow版本不兼容,下面给你一步步梳理解决方案:
1. 报错根源拆解
你遇到的两个问题其实是连锁反应:
- 那个
DeprecationWarning提示query方法被弃用,说明你安装的是新版pysnow(0.8+),但Ansible 2.5的snow_record模块是基于旧版pysnow的API开发的 - 致命的
AttributeError: 'module' object has no attribute 'UnexpectedResponse',是因为新版pysnow已经移除了这个异常类,而模块代码还在引用它,直接导致运行崩溃
另外补充一点:Ansible的第三方模块依赖(比如pysnow)确实不会自动安装,你手动安装的操作是对的,但选错了版本。
2. 安装兼容的pysnow版本
Ansible 2.5对应的pysnow稳定版本是0.7.x系列,推荐安装0.7.10这个版本:
pip install pysnow==0.7.10
安装完成后,那个弃用警告和属性错误都会消失,因为这个版本的API和Ansible 2.5的snow_record模块完全匹配。
3. 修正Playbook的缩进问题
你的Playbook里data下的work_notes缩进不符合YAML规范,YAML对缩进要求非常严格,正确的写法应该是:
--- - name: execute sth hosts: localhost connection: local gather_facts: no ignore_errors: True tasks: - name: update an incident snow_record: username: test password: test2 instance: dev9999 state: present number: CHG0064887 data: work_notes: "Been working all day on this thing."
虽然这次的报错不是因为缩进,但提前修正可以避免后续出现参数识别失败的问题。
4. 验证运行
重新执行Playbook,应该就能正常更新ServiceNow的工单了。如果还有报错,记得检查你的账号是否有修改工单work_notes的权限,以及instance地址是否正确。
内容的提问来源于stack exchange,提问作者NANIS
相关产品推荐
相关产品推荐

