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.0已经解决cryptography37.0.0该问题。

答案4

当我使用另一个模块配置默认 AWX-EE(最新)的 AWX 时出现此错误。

今天(2022 年 4 月 27 日)发布的新 AWX-EE 在某些模块上产生了同样的问题(至少在我这边有一个)

将 AWX-EE 更改为 0.6.0 版本可解决该问题。

相关内容