使用Ansible部署VMware guest虚拟机

我尝试通过Ansible部署VMWare客人。 不幸

ansible-playbook -i inventory.local vmware.yml PLAY [all] ******************************************************************** GATHERING FACTS *************************************************************** ok: [vmcenter00] ok: [127.0.0.1] TASK: [vsphere_guest ] ******************************************************** failed: [127.0.0.1] => {"failed": true, "parsed": false} Traceback (most recent call last): File "/Users/some_user/.ansible/tmp/ansible-tmp-1447432699.52-19521550866442/vsphere_guest", line 2936, in <module> main() File "/Users/some_user/.ansible/tmp/ansible-tmp-1447432699.52-19521550866442/vsphere_guest", line 1207, in main viserver.connect(vcenter_hostname, username, password) File "/Library/Python/2.7/site-packages/pysphere/vi_server.py", line 101, in connect request)._returnval File "/Library/Python/2.7/site-packages/pysphere/resources/VimService_services.py", line 2170, in RetrieveServiceContent self.binding.Send(None, None, request, soapaction="urn:vim25/5.0", **kw) File "/Library/Python/2.7/site-packages/pysphere/ZSI/client.py", line 295, in Send self.local.h.connect() File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1274, in connect server_hostname=server_hostname) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 352, in wrap_socket _context=self) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 579, in __init__ self.do_handshake() File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 808, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) FATAL: all hosts have already failed -- aborting PLAY RECAP ******************************************************************** to retry, use: --limit @/Users/some_user/vmware.retry 127.0.0.1 : ok=1 changed=0 unreachable=0 failed=1 vmcenter00 : ok=1 changed=0 unreachable=0 failed=0 

你应该知道什么

我运行OS X 10.11。 我有理由1.9.3我有pysphere(0.1.7)输出:

 python -c 'import ssl; print(ssl.OPENSSL_VERSION)' OpenSSL 0.9.8zg 14 July 2015... 

我在这里错过了什么?

由于SSL证书validation失败,任务失败。 在Ansible版本2.1 validate_certs已添加到vsphere_guest_module

validationSSL证书。 请注意,如果在没有SSLContext支持(通常是python <2.7.9)的情况下运行python,则必须将其设置为no,因为pysphere不支持在较早的python上validation证书。 在2.1之前,这个模块总是在python> = 2.7.9上validation,并且永远不会在python <= 2.7.8上validation。

所以设置validate_certs: no应该可以解决这个问题,只要你可以使用Ansible版本> = 2.1和Python版本> = 2.7.9

解决方法:在/Library/Python/2.7/site-packages/pysphere/vi_server.py添加以下两行

 import ssl ssl._create_default_https_context = ssl._create_unverified_context