적절한 모듈의 Ansible OpenSSL 오류

적절한 모듈의 Ansible OpenSSL 오류

이것은 다소 이상합니다. 어제 내 대상 컴퓨터 중 하나에서 이 현상이 나타났고 오늘은 나머지 컴퓨터에서도 발생합니다. 또한 다른 컴퓨터에서 플레이북을 실행해 보았지만 같은 일이 일어났습니다. Ubuntu 20.04에서 적절한 업그레이드 후에 이 문제가 발생하는 것 같습니다. 적절한 업그레이드가 처음으로 진행되면 모든 것이 잘 되지만 그 이후에는 모듈이 실패하기 시작합니다.

오류 출력은 다음과 같습니다.

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 upgradeAnsible 없이도 대상 컴퓨터에서 잘 작동하는 것과 같은 명령이 있다는 점에 유의해야 합니다 .

다른 사람이 이런 일을 겪은 적이 있습니까? 이것을 github의 ansible 사람들에게 버그로 보고해야 합니까?

편집하다: 좀 더 자세히 조사한 결과 이는 get_url과 같은 다른 ansible 모듈에 영향을 미치는 것으로 보입니다. 이는 apt와 관련된 것이 아니라 Python/OpenSSL 오류라는 아이디어를 알려줍니다.

답변1

오늘도 비슷한 문제가 있었고 조사 결과도 같은 방향으로 나타났습니다.

우리는 사용하고 있습니다pyOpenSSL이전 버전으로 잠겨 있습니다. 최신을 사용하고 있어요암호화요구 사항이 있는 라이브러리 버전입니다 cryptography>=2.8.

그래서 예상외로 변경된 버전은 4월 26일(어제)에 발생한 암호화 36.0.2-> 였습니다. 37.0.0이전 버전을 사용하면 36.0.2해당 버전을 잠그는 것이 문제가 아니기 때문에 제 경우에는 문제가 해결되었습니다.

오류 메시지에 따르면 Ansible은 pyOpenSSL을 사용하는 것 같고 OpenSSL을 가져오면 내 경우와 같은 오류가 발생하므로 비슷한 문제가 있을 수 있습니다.

업데이트:
의견에서 언급했듯이 최신 pyOpenSSL 버전에는 이 문제가 없을 가능성이 높습니다. 따라서 문제를 일으킨 변경 사항을 신속하게 되돌리려면 어떤 방식으로든 암호화 라이브러리 업데이트를 되돌리세요. 더 나은 해결책은 제대로 테스트할 시간이 있다면 pyOpenSSL을 최신 버전으로 업그레이드하는 것입니다.

답변2

패키지 관리자는 다음을 포함하는 v37.0.1을 배포했습니다.https://github.com/pyca/cryptography/commit/3fb93cfde75d073a91bc4a73a51f62962092501e):

  • 이전 사용자를 위해 일부 레거시 기호를 복원했습니다 pyOpenSSL. 이는 나중에 다시 제거될 예정이므로 pyOpenSSL사용자는 업그레이드할 때 해당 패키지의 최신 버전으로 계속 업그레이드해야 합니다 cryptography.

따라서 암호화 v37.0.1로 업그레이드하면 pyOpenSSL 버전에 관계없이 작동해야 하지만 언급한 대로 이러한 변경 사항은 @Miika가 제안한 대로 나중에 다시 도입될 것이므로 가능하다면 업그레이드하는 것이 더 좋은 방법입니다.

답변3

Python 3.8을 사용하는 환경의 경우 pyopenssl로 업그레이드 22.0.0하면 문제가 해결되었습니다 cryptography.37.0.0

답변4

다른 모듈과 함께 기본 AWX-EE(최신)로 구성된 AWX에서 이 오류가 발생했습니다.

오늘(2022년 4월 27일) 출시된 새로운 AWX-EE는 일부 모듈(내 측에 하나 이상)에서 동일한 문제를 발생시킵니다.

AWX-EE를 버전 0.6.0으로 변경하면 문제가 해결되었습니다.

관련 정보