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 upgrade
auf 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.0
das geschah am 26. April (gestern). Die Verwendung der älteren Version 36.0.2
behob 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
pyOpenSSL
Benutzer wurden wiederhergestellt. Diese werden in Zukunft wieder entfernt, daherpyOpenSSL
sollten Benutzer beim Upgrade trotzdem auf die neueste Version dieses Pakets aktualisierencryptography
.
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 pyopenssl
auf 22.0.0
mit cryptography
at 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.