Ansible:无法 ping windows 节点 [SSL:CERTIFICATE_VERIFY_FAILED]

Ansible: Unable to ping on windows node [SSL: CERTIFICATE_VERIFY_FAILED]

我有一台 Ubuntu 16.04 virtell 机器和两台 MS Windows Server 2008 R 2 virtell 机器。

我遵循 this 的指示,直到 "Once we have these two files setup, we can look to test connectivity"。现在我想 ping windows 个虚拟机。我在comman之后得到一个错误,但我不知道为什么。

执行:

stefan@ansible-server:~/ansible_test$ ansible windows -i host -m win_ping

答案:

[IP-ADRESS] | FAILED! => {
    "failed": true,
    "msg": "ERROR! ssl: 500 WinRMTransport. [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:"
}
[IP-ADRESS] | FAILED! => {
    "failed": true,
    "msg": "ERROR! ssl: 500 WinRMTransport. [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:"
}

你知道为什么它不起作用吗?

为了能够配置 windows 台机器,您需要 运行 在 windows 台机器中 shell 此功能,首先要为 winrm 生成证书文件。

https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1

我得到了解决方案,但我并不满意,因为这对我来说不是正确的解决方案,但它有效。

在文件夹中创建 ansible_test:

mkdir callback_plugins
nano callback_plugins/fix-ssl.py

在文件中写入:

import ssl
if hasattr(ssl, '_create_default_https_context') and hasattr(ssl, '_create_unverified_context'):
    ssl._create_default_https_context = ssl._create_unverified_context

class CallbackModule(object):
    pass

运行:

 ansible windows -i host -m win_ping -vvvvv

结果:

10.92.0.38 | SUCCESS => {
    "changed": false,
    "invocation": {
        "module_name": "win_ping"
    },
    "ping": "pong"
}