当我尝试运行剧本时,我遇到了一个错误,我认为这与某种SSL证书验证有关,但我不确定导致该错误的真正原因。
我尝试了很多配置,但是我认为对我有用的配置如下:
故障排除步骤:
在$HOME/.config/pip/pip.conf
下添加点子全局信任配置文件并复制以下内容:
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
pip install --upgrade pip
。尽管这不是必需的步骤,但由于没有任何效果,我尝试了。
pip install pyopenssl
。这一步实际上解决了我的问题,因为我的剧本不断抛出SSL握手错误和证书验证失败。
致命:[localhost]:失败! => { “已更改”:错误, “ module_stderr”:“来自cffi回调:\ nTraceback(最近一次调用):\ n文件 \“ / usr / lib / python2.7 / site-packages / OpenSSL / SSL.py \”,第309行,在 包装器\ n _lib.X509_up_ref(x509)\ nAttributeError:“模块”对象具有 没有属性'X509_up_ref'\ nTraceback(最近一次通话最近):\ n文件 \“ / root / .ansible / tmp / ansible-tmp-1550051069.59- 120598072724498 / AnsiballZ_azure_rm_virtualnetwork.py \“,第113行,在 \ n _ansiballz_main()\ n文件\“ / root / .ansible / tmp / ansible-tmp- 1550051069.59-120598072724498 / AnsiballZ_azure_rm_virtualnetwork.py \“, 第105行,位于_ansiballz_main \ n invoke_module(zipped_mod,temp_path, ANSIBALLZ_PARAMS)\ n文件\“ / root / .ansible / tmp / ansible-tmp-1550051069.59- 120598072724498 / AnsiballZ_azure_rm_virtualnetwork.py \“,第48行,在 invoke_module \ n imp.load_module(' main ',mod,module,MOD_DESC)\ n
中
文件\“ / tmp / ansible_azure_rm_virtualnetwork_payload_TxAf7f / 主要 .py \”, \ n文件中的第349行 \“ / tmp / ansible_azure_rm_virtualnetwork_payload_TxAf7f / 主要 .py \”,行 345,在主\ n文件中 \“ / tmp / ansible_azure_rm_virtualnetwork_payload_TxAf7f / 主要 .py \”,行 201,在 init \ n文件中 mp / ansible_azure_rm_virtualnetwork_payload_TxAf7f / ansible_azure_rm_virtua lnetwork_payload.zip/ansible/module_utils/azure_rm_common.py \“,第301行, 在 init \ n文件lnetwork_payload.zip/ansible/module_utils/azure_rm_common.py \“,行 1021,在 init \ n文件\“ / usr / lib / python2.7 / site- 包/msrestazure/azure_active_directory.py \“,第453行, init \ n
self.set_token()\ n文件\“ / usr / lib / python2.7 / site- 包/msrestazure/azure_active_directory.py \“,第480行,在 set_token \ n raise_with_traceback(AuthenticationError,\“ \”,err)\ n
文件\“ / usr / lib / python2.7 / site-packages / msrest / exceptions.py \”,第48行, 在raise_with_traceback \ n加薪 error \ nmsrest.exceptions.AuthenticationError:,SSLError: HTTPSConnectionPool(host ='login.microsoftonline.com',port = 443):最大值 网址超过重试次数:/ 1564e0a7-162f-4a3c-b5f3- 837525c8ad64 / oauth2 / token(由SSLError(SSLError(\“ bad handshake:`错误([('SSL例程','ssl3_get_server_certificate','证书 验证失败')],)\“,),))\ n”, “ module_stdout”:“”, “ msg”:“模块失败\ n请参阅stdout / stderr了解确切错误”, “ rc”:1 }
如果任何人都可以解释造成此错误的确切原因,那么对我来说,了解使用某些模块所需的基本知识对我很有帮助。
谢谢!
答案 0 :(得分:0)
Python或Ansible使用SSL进行通信,因此openssl是二进制文件,通过它可以在python中验证SSL。
除了无法执行之外,如果您尝试使用python安装任何软件包,如果未安装openssl也会抛出错误,并且还取决于pip和python版本