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

Ansible管理Windows主机时出现MODULE FAILURE错误求助

Ansible管理Windows主机时setup模块执行失败排查

问题详情

执行Ansible playbook管理Windows主机时触发模块执行失败,报错信息如下:

fatal: [XXXXXXX.DOMAIN.COM]: FAILED! => {"ansible_facts": {}, "changed": false,
 "failed_modules": {"ansible.legacy.setup": {"failed": true, "module_stderr": "", 
"module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}},
 "msg": "The following modules failed to execute: ansible.legacy.setup\n"}

当前使用的Ansible变量配置:

ansible_user: admin@DOMAIN.COM

ansible_password: Password

ansible_connection: winrm

ansible_winrm_transport: kerberos

ansible_winrm_server_cert_validation: ignore

ansible_winrm_port: 5986

已完成前置检查:WinRM HTTPS监听器已配置,5986端口的防火墙入站规则已启用。

排查步骤

1. 开启WinRM调试日志获取详细错误

在目标Windows主机上执行PowerShell命令开启WinRM verbose级别的调试日志:

winrm set winrm/config/service @{TraceEnabled="true"}
winrm set winrm/config/service @{TraceLevel="verbose"}

重新执行Ansible playbook后,通过Windows事件查看器查看日志:

事件查看器 → 应用程序和服务日志 → Microsoft → Windows → WinRM → Operational

2. 验证Kerberos认证链路

从Ansible控制节点执行Kerberos票据获取测试:

kinit admin@DOMAIN.COM
# 输入密码后查看票据状态
klist

若票据获取失败,检查以下项:

  • 控制节点是否已配置正确的Kerberos客户端配置(/etc/krb5.conf),或已加入域
  • 目标Windows主机是否已注册正确的SPN:执行setspn -L XXXXXXX.DOMAIN.COM,需存在WSMAN/XXXXXXX.DOMAIN.COM和WSMAN/XXXXXXX记录
  • 用户名格式是否符合Kerberos要求(user@DOMAIN.COM 格式)

3. 直接测试WinRM连通性

从控制节点用winrm命令直接发起连接测试,绕过Ansible模块层:

winrm identify -r https://XXXXXXX.DOMAIN.COM:5986 -u admin@DOMAIN.COM -p Password -auth:kerberos -skipcncheck

根据返回的具体错误信息定位问题(如认证失败、证书问题等)。

4. 检查控制节点WinRM依赖

确保控制节点已安装Kerberos相关的WinRM依赖包:

pip install pywinrm pywinrm[kerberos]

5. 切换传输方式排除Kerberos问题

临时修改Ansible变量,将WinRM传输方式改为ntlm,执行playbook测试是否能正常运行:

ansible_winrm_transport: ntlm

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:20:37