ansible win_ping 出现错误

ansible win_ping 出现错误

在远程 Windows 服务器上

 PS C:\Users\name.domain> Winrm quickconfig
 WinRM service is already running on this machine.
 WinRM is already set up for remote management on this computer.

在安装了 Ansible 的 Linux 主机上:

 # klist
 Ticket cache: FILE:/tmp/krb5cc_0
 Default principal: [email protected]

Valid starting       Expires              Service principal
09/19/2016 10:02:18  09/19/2016 20:02:18  krbtgt/[email protected]
    renew until 09/26/2016 10:02:12


/etc/ansible/hosts

 [local]
 127.0.0.1

 [windows]
 ip address 

[windows:vars]
ansible_user= [email protected]
ansible_password= password
ansible_port= 5985
ansible_connection= winrm



# ansible windows -m win_ping
 ip_address | UNREACHABLE! => {
 "changed": false,
"msg": "kerberos: requested auth method is kerberos, but requests_kerberos    is not installed, ssl: HTTPSConnectionPool(host='ip_address', port=5986): Max   retries exceeded with url: /wsman (Caused by   ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x3585d90>, 'Connection to ip_address timed out. (connect timeout=30)'))",
"unreachable": true
}

答案1

错误信息非常清楚:

“msg”:“kerberos:请求的身份验证方法是 kerberos,但未安装requests_kerberos

要使用具有 Kerberos 身份验证的 Ansible Windows 支持,必须在控制主机上安装一些依赖项:

如果您希望连接到通过 Active Directory 发布的域帐户(而不是在远程主机上创建的本地帐户),则需要在 Ansible 控制主机上安装“python-kerberos”模块(以及它所依赖的 MIT krb5 库)。Ansible 控制主机还需要在 Active Directory 中正确配置计算机帐户。

请参阅 Ansible 文档活动目录支持以获取进一步的指示。

模块的情况ping可能有点令人困惑。这些模块用于确保 Ansible 能够在目标主机上执行命令。有人可能会认为 Ansible 会ping在目标主机的控制箱上运行命令。但事实并非如此。

因此实际win_ping模块是用 编写的PowerShell,将在目标主机上执行,因此需要适当的 Kerberos 设置。win_ping模块的代码位于Ansible ansible-modules-core 存储库

也可以看看Ansible 文档:Windows 模块如何工作

相关内容