Ansible OpenSSL-Fehler mit Apt-Modul

Ansible OpenSSL-Fehler mit Apt-Modul

Das ist ziemlich seltsam, ich habe es gestern auf einem meiner Zielcomputer bemerkt und heute passiert es auch auf den anderen. Ich habe auch versucht, das Playbook von einem anderen Computer aus auszuführen, und das Gleiche ist passiert. Es scheint, als ob dieses Problem nach einem Apt-Upgrade unter Ubuntu 20.04 auftritt. Beim ersten Durchlauf des Apt-Upgrades ist alles in Ordnung, aber danach beginnt das Modul zu versagen.

Die Fehlerausgabe lautet wie folgt:

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

Ich sollte anmerken, dass Befehle wie diese sudo apt-get upgradeauf der Zielmaschine auch ohne Ansible einwandfrei funktionieren.

Ist das noch jemandem aufgefallen? Soll ich das den Ansible-Leuten auf GitHub als Fehler melden?

BEARBEITEN: Ich habe noch ein bisschen nachgeforscht und anscheinend betrifft dies auch andere Ansible-Module wie get_url, was mich zu der Annahme bringt, dass es sich hier eher um einen Python/OpenSSL-Fehler handelt, als dass es etwas mit apt zu tun hat

Antwort1

Ich hatte heute ein ähnliches Problem und die Untersuchungen deuteten in die gleiche Richtung.

Wir benutzenpyOpenSSLund habe mich an eine ältere Version gebunden. Es verwendet die neuesteKryptographieBibliotheksversion mit Anforderung cryptography>=2.8.

Die unerwartet geänderte Version war also die Kryptografie 36.0.2-> 37.0.0das geschah am 26. April (gestern). Die Verwendung der älteren Version 36.0.2behob das Problem in meinem Fall, da die Sperrung auf diese Version kein Problem darstellte.

Basierend auf der Fehlermeldung könnte Ansible ein ähnliches Problem haben, da anscheinend pyOpenSSL verwendet wird und beim Importieren von OpenSSL der Fehler auftritt, wie in meinem Fall.

Aktualisieren:
Wie in den Kommentaren erwähnt, hat die neueste Version von pyOpenSSL dieses Problem wahrscheinlich nicht. Wenn Sie also die Änderung, die das Problem verursacht hat, schnell rückgängig machen möchten, machen Sie das Update der Kryptografiebibliothek auf irgendeine Weise rückgängig. Eine bessere Lösung ist, pyOpenSSL auf die neueste Version zu aktualisieren, wenn Sie Zeit haben, es richtig zu testen.

Antwort2

Die Paketbetreuer haben v37.0.1 bereitgestellt, das Folgendes umfasst:https://github.com/pyca/cryptography/commit/3fb93cfde75d073a91bc4a73a51f62962092501e):

  • Einige alte Symbole für ältere pyOpenSSLBenutzer wurden wiederhergestellt. Diese werden in Zukunft wieder entfernt, daher pyOpenSSLsollten Benutzer beim Upgrade trotzdem auf die neueste Version dieses Pakets aktualisieren cryptography.

Daher sollte ein Upgrade auf Cryptography v37.0.1 unabhängig von Ihrer pyOpenSSL-Version funktionieren. Wie jedoch bereits erwähnt, werden diese Änderungen zu einem späteren Zeitpunkt erneut eingeführt. Daher ist, wie @Miika vorgeschlagen hat, ein Upgrade die bessere Lösung, wenn Sie dazu in der Lage sind.

Antwort3

In meiner Umgebung, in der Python 3.8 verwendet wird, wurde das Problem durch ein Upgrade pyopensslauf 22.0.0mit cryptographyat behoben.37.0.0

Antwort4

Ich habe diesen Fehler mit AWX erhalten, das mit dem Standard AWX-EE (neueste) mit einem anderen Modul konfiguriert ist.

Das heute (27. April 2022) veröffentlichte neue AWX-EE erzeugt bei einigen Modulen (zumindest bei einem auf meiner Seite) das gleiche Problem.

Das Ändern von AWX-EE auf Version 0.6.0 hat das Problem gelöst.

verwandte Informationen