Python
apt模組的Ansible OpenSSL錯誤
這很奇怪,我昨天在我的一台目標機器上註意到了它,今天它也在其他機器上發生了。我還嘗試從另一台機器上執行劇本,同樣的事情發生了。似乎在 Ubuntu 20.04 上進行 apt 升級後會出現此問題。第一次進行 apt 升級時,一切都很好,但之後模組開始出現故障。
錯誤輸出如下:
TASK [common : Update package manager] ************************************************************************************* An exception occurred during task execution. To see the full traceback, use -vvv. The error was: AttributeError: module 'lib ' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK' fatal: [mr-bones]: FAILED! => changed=false module_stderr: |- Traceback (most recent call last): File "<stdin>", line 107, in <module> File "<stdin>", line 99, in _ansiballz_main File "<stdin>", line 47, in invoke_module File "/usr/lib/python3.8/runpy.py", line 207, in run_module return _run_module_code(code, init_globals, run_name, mod_spec) File "/usr/lib/python3.8/runpy.py", line 97, in _run_module_code _run_code(code, mod_globals, init_globals, File "/usr/lib/python3.8/runpy.py", line 87, in _run_code exec(code, run_globals) File "/tmp/ansible_apt_payload_vpe7xcy0/ansible_apt_payload.zip/ansible/modules/apt.py", line 346, in <module> File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 655, in _load_unlocked File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible File "<frozen zipimport>", line 259, in load_module File "/tmp/ansible_apt_payload_vpe7xcy0/ansible_apt_payload.zip/ansible/module_utils/urls.py", line 115, in <module> File "/usr/local/lib/python3.8/dist-packages/urllib3/contrib/pyopenssl.py", line 50, in <module> import OpenSSL.SSL File "/usr/lib/python3/dist-packages/OpenSSL/__init__.py", line 8, in <module> from OpenSSL import crypto, SSL File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1553, in <module> class X509StoreFlags(object): File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1573, in X509StoreFlags CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK' module_stdout: '' msg: |- MODULE FAILURE See stdout/stderr for the exact error rc: 1
我應該注意到,
sudo apt-get upgrade
在沒有 ansible 的情況下,類似命令在目標機器上工作得很好。有人遇到過這種情況麼?我應該將此作為錯誤報告給 github 上的 ansible 人員嗎?
編輯:我做了更多的探勘,顯然這會影響 get_url 等其他 ansible 模組,這讓我認為這是一個 Python/OpenSSL 錯誤,而不是與 apt 有關
我今天遇到了類似的問題,調查指向了相同的方向。
我們正在使用pyOpenSSL並已鎖定到舊版本。它使用最新的密碼庫版本,要求
cryptography>=2.8
。因此,意外更改的版本是密碼學
36.0.2
->37.0.0
發生在 4 月 26 日(昨天)。使用舊版本36.0.2
解決了我的問題,因為鎖定到該版本不是問題。根據錯誤消息,Ansible 可能有類似的問題,因為似乎正在使用 pyOpenSSL 並且導入 OpenSSL 會給出錯誤,就像我的情況一樣。
更新:
正如評論中提到的,最新的 pyOpenSSL 版本可能沒有這個問題。因此,如果您只想快速恢復導致問題的更改,請以某種方式恢復密碼庫更新。如果您有時間正確測試,更好的解決方案是將 pyOpenSSL 升級到最新版本。