Ansible在Windows DC上执行Gather Facts失败问题咨询
故障根因分析
报错核心为Ansible的setup模块调用Get-CimInstance查询域控WMI的Root\CIMV2命名空间时返回权限拒绝,结合仅部分DC异常、其他服务器及非Gather Facts任务正常的特征,可能的原因如下:
- 域控WMI命名空间权限配置不一致
正常工作的那台DC单独配置了Ansible执行账号对Root\CIMV2命名空间的远程访问、启用、读取权限,其余故障DC未配置对应权限。域控默认WMI权限策略会限制普通域账号访问CIM接口,即使该账号属于本地管理员组,部分域控的UAC远程限制策略也会自动过滤管理员令牌的高权限。
排查方法:在故障DC上运行wmimgmt.msc,右键WMI控制->属性->安全->找到Root\CIMV2->点击安全,核对Ansible使用的账号是否拥有启用账户、远程启用、读取权限。 - 域控远程管理权限策略差异
故障DC上应用了限制CIM远程调用的组策略,可先检查本地策略/域组策略中「计算机配置->Windows设置->安全设置->本地策略->用户权限分配」下的从网络访问此计算机、拒绝从网络访问这台计算机列表,确认Ansible执行账号没有被限制。同时检查是否存在组策略限制PowerShell远程调用时的权限提升。 - CIM服务配置异常
故障DC上的Winmgmt服务权限配置损坏,可尝试在故障DC上执行以下命令重置WMI库:
执行完成后重启Winmgmt服务再重试Ansible任务即可。winmgmt /salvagerepository winmgmt /resetrepository - UAC远程限制未配置豁免
域控默认开启UAC远程令牌过滤,即使使用管理员账号远程访问,也会被过滤掉管理员权限,需要在故障DC上添加注册表项豁免Ansible执行账号的UAC过滤,路径为HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System,添加DWORD值LocalAccountTokenFilterPolicy设置为1,如果使用域账号执行任务需要确认FilterAdministratorToken设置为0。 - Ansible连接配置差异
核对故障DC和正常DC的Ansible主机变量配置,确认ansible_winrm_transport、ansible_winrm_kerberos_delegation等参数配置一致,部分认证方式(比如NTLM)在域控上如果没有开启权限委派会出现CIM调用权限不足的问题,建议使用kerberos认证并开启委派,或配置ansible_winrm_transport: credssp测试验证。
内容的提问来源于stack exchange,提问作者PeGa
相关产品推荐
相关产品推荐

