Esto es bastante extraño, lo noté ayer en una de mis máquinas objetivo y hoy también está sucediendo en el resto de ellas. También intenté ejecutar el libro de jugadas desde una máquina diferente y sucedió lo mismo. Parece que este problema ocurre después de una actualización adecuada en Ubuntu 20.04. La primera vez que se realiza la actualización apt, todo está bien, pero después el módulo comienza a fallar.
La salida del error es la siguiente:
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
Debo tener en cuenta que comandos como sudo apt-get upgrade
funcionan bien en la máquina de destino sin ansible.
¿Alguien más ha encontrado esto? ¿Debo informar esto como un error a la gente de ansible en github?
EDITAR: Investigué un poco más y aparentemente esto afecta a otros módulos ansibles como get_url, lo que me lleva a la idea de que se trata de un error de Python/OpenSSL, en lugar de algo que tenga que ver con apt.
Respuesta1
Tuve un problema similar hoy y las investigaciones apuntaron en la misma dirección.
Estamos usandopyOpenSSLy he bloqueado la versión anterior. Está usando lo últimocriptografíaversión de biblioteca con requisito cryptography>=2.8
.
Entonces, la versión cambiada inesperadamente fue la criptografía 36.0.2
-> 37.0.0
eso sucedió el 26 de abril (ayer). El uso de la versión anterior 36.0.2
solucionó el problema en mi caso, ya que bloquear esa versión no fue un problema.
Según el mensaje de error, Ansible podría tener un problema similar, ya que parece estar usando pyOpenSSL y la importación de OpenSSL genera el error como en mi caso.
Actualizar:
Como se mencionó en los comentarios, es probable que la última versión de pyOpenSSL no tenga este problema. Por lo tanto, si sólo desea revertir rápidamente el cambio que causó el problema, revierta la actualización de la biblioteca de criptografía de alguna manera. Una mejor solución es actualizar pyOpenSSL a la última versión, si tiene tiempo para probarlo correctamente.
Respuesta2
Los mantenedores de paquetes han implementado v37.0.1 que incluye (https://github.com/pyca/cryptography/commit/3fb93cfde75d073a91bc4a73a51f62962092501e):
- Se restauraron algunos símbolos heredados para
pyOpenSSL
usuarios mayores. Estos se eliminarán nuevamente en el futuro, por lo quepyOpenSSL
los usuarios aún deben actualizar a la última versión de ese paquete cuando actualicencryptography
.
Por lo tanto, la actualización a criptografía v37.0.1 debería funcionar independientemente de su versión de pyOpenSSL, pero como se indicó, estos cambios se reintroducirán en una fecha posterior, por lo que, como sugirió @Miika, la actualización es la mejor manera de hacerlo si puede.
Respuesta3
Para mi entorno que usa Python 3.8, la actualización pyopenssl
a 22.0.0
at cryptography
solucionó 37.0.0
el problema.
Respuesta4
Recibí este error con AWX configurado con AWX-EE (más reciente) predeterminado con otro módulo.
El nuevo AWX-EE lanzado hoy (27 de abril de 2022) genera el mismo problema para algunos módulos (al menos uno de mi lado)
Cambiar AWX-EE a la versión 0.6.0 resolvió el problema.