Ansible OpenSSL apt 模組錯誤

Ansible OpenSSL apt 模組錯誤

這很奇怪,我昨天在我的一台目標機器上註意到它,今天它也發生在其餘的機器上。我還嘗試從另一台機器運行劇本,但發生了同樣的事情。看來這個問題是在 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 人員嗎?

編輯:我做了更多挖掘,顯然這會影響其他 ansible 模組,例如 get_url,這讓我想到這是一個 Python/OpenSSL 錯誤,而不是與 apt 有關

答案1

我今天遇到了類似的問題,調查也指向了相同的方向。

我們正在使用pyOpenSSL並已鎖定舊版。它正在使用最新的密碼學具有要求的庫版本cryptography>=2.8

所以,意外改變的版本是密碼學36.0.2->37.0.0發生在 4 月 26 日(昨天)。使用舊版本36.0.2解決了我的問題,因為鎖定該版本不是問題。

根據錯誤訊息 Ansible 可能有類似的問題,因為似乎正在使用 pyOpenSSL 並且導入 OpenSSL 會給出錯誤,就像我的情況一樣。

更新:
正如評論中提到的,最新的 pyOpenSSL 版本可能沒有這個問題。因此,如果您只是想快速恢復導致問題的更改,請以某種方式恢復加密庫更新。如果您有時間正確測試的話,更好的解決方案是將 pyOpenSSL 升級到最新版本。

答案2

軟體包維護者已經部署了 v37.0.1,其中包括(https://github.com/pyca/cryptography/commit/3fb93cfde75d073a91bc4a73a51f62962092501e):

  • pyOpenSSL為舊用戶恢復了一些舊符號。這些將來將再次被刪除,因此pyOpenSSL用戶在升級時仍應升級到該軟體包的最新版本cryptography

因此,無論您的pyOpenSSL 版本如何,升級到加密v37.0.1 都應該有效,但如上所述,這些更改將在以後重新引入,因此正如@Miika 所建議的,如果可以的話,升級是更好的方法。

答案3

對於我使用 python 3.8 的環境,升級pyopenssl22.0.0at解決cryptography37.0.0這個問題。

答案4

我在使用另一個模組配置預設 AWX-EE(最新)的 AWX 時遇到此錯誤。

今天(2022 年 4 月 27 日)發布的新 AWX-EE 對某些模組產生了相同的問題(至少我這邊有一個)

將 AWX-EE 更改為 0.6.0 版本解決了該問題。

相關內容