Score:3

Ansible OpenSSL Error กับโมดูล apt

ธง pt

มันค่อนข้างแปลก ฉันสังเกตเห็นเมื่อวานนี้ในเครื่องเป้าหมายเครื่องหนึ่งของฉัน และวันนี้ก็เกิดขึ้นกับเครื่องที่เหลือเช่นกัน ฉันได้ลองเปิด Playbook จากเครื่องอื่นแล้ว สิ่งเดียวกันก็เกิดขึ้น ดูเหมือนว่าปัญหานี้จะเกิดขึ้นหลังจากการอัปเกรด apt บน Ubuntu 20.04 ครั้งแรกที่การอัปเกรด apt ผ่านไป ทุกอย่างเรียบร้อยดี แต่หลังจากนั้นโมดูลก็เริ่มล้มเหลว

เอาต์พุตข้อผิดพลาดเป็นดังนี้:

TASK [ทั่วไป : อัปเดตตัวจัดการแพ็คเกจ] ****************************************** *******************************************
เกิดข้อยกเว้นระหว่างการปฏิบัติงาน หากต้องการดูการย้อนกลับทั้งหมด ให้ใช้ -vvv ข้อผิดพลาดคือ: AttributeError: module 'lib
' ไม่มีแอตทริบิวต์ 'X509_V_FLAG_CB_ISSUER_CHECK'
ร้ายแรง: [mr-กระดูก]: ล้มเหลว! => เปลี่ยน = เท็จ
  module_stderr: |-
    Traceback (การโทรครั้งล่าสุดล่าสุด):
      ไฟล์ "<stdin>" บรรทัดที่ 107 ใน <โมดูล>
      ไฟล์ "<stdin>" บรรทัดที่ 99 ใน _ansiballz_main
      ไฟล์ "<stdin>" บรรทัดที่ 47 ใน invoke_module
      ไฟล์ "/usr/lib/python3.8/runpy.py", บรรทัด 207, ใน run_module
        ส่งคืน _run_module_code (รหัส, init_globals, run_name, mod_spec)
      ไฟล์ "/usr/lib/python3.8/runpy.py", บรรทัดที่ 97 ใน _run_module_code
        _run_code (รหัส mod_globals, init_globals,
      ไฟล์ "/usr/lib/python3.8/runpy.py", บรรทัดที่ 87 ใน _run_code
        ผู้บริหาร (รหัส run_globals)
      ไฟล์ "/tmp/ansible_apt_payload_vpe7xcy0/ansible_apt_payload.zip/ansible/modules/apt.py" บรรทัดที่ 346 ใน <โมดูล>
      ไฟล์ "<frozen importlib._bootstrap>", บรรทัด 991 ใน _find_and_load
      ไฟล์ "<frozen importlib._bootstrap>", บรรทัด 975 ใน _find_and_load_unlocked
      ไฟล์ "<frozen importlib._bootstrap>", บรรทัด 655, ใน _load_unlocked
      ไฟล์ "<frozen importlib._bootstrap>", บรรทัด 618, ใน _load_backward_compatible
      ไฟล์ "<frozen zipimport>" บรรทัดที่ 259 ใน load_module
      ไฟล์ "/tmp/ansible_apt_payload_vpe7xcy0/ansible_apt_payload.zip/ansible/module_utils/urls.py" บรรทัดที่ 115 ใน <โมดูล>
      ไฟล์ "/usr/local/lib/python3.8/dist-packages/urllib3/contrib/pyopenssl.py" บรรทัดที่ 50 ใน <โมดูล>
        นำเข้า OpenSSL.SSL
      ไฟล์ "/usr/lib/python3/dist-packages/OpenSSL/__init__.py", บรรทัด 8 ใน <โมดูล>
        จาก OpenSSL นำเข้า crypto, SSL
      ไฟล์ "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", บรรทัด 1553 ใน <โมดูล>
        คลาส X509StoreFlags (วัตถุ):
      ไฟล์ "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", บรรทัด 1573 ใน X509StoreFlags
        CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
    AttributeError: โมดูล 'lib' ไม่มีแอตทริบิวต์ 'X509_V_FLAG_CB_ISSUER_CHECK'
  module_stdout: ''
  ข้อความ: |-
    ความล้มเหลวของโมดูล
    ดู stdout/stderr สำหรับข้อผิดพลาดที่แน่นอน
  อาร์ค: 1

ฉันควรทราบว่าคำสั่งเช่น sudo apt-get อัปเกรด ทำงานได้ดีบนเครื่องเป้าหมายโดยไม่ต้องใช้ ansible

มีใครเคยเจอแบบนี้บ้าง? ฉันควรรายงานสิ่งนี้ว่าเป็นบั๊กกับผู้ที่เข้าใจไม่ได้บน GitHub หรือไม่

แก้ไข: ฉันทำการขุดเพิ่มเติมและเห็นได้ชัดว่าสิ่งนี้ส่งผลกระทบต่อโมดูล ansible อื่น ๆ เช่น get_url ซึ่งชี้ให้ฉันเห็นว่านี่เป็นข้อผิดพลาดของ Python / OpenSSL แทนที่จะเกี่ยวข้องกับ apt

pt flag
ดูเหมือนว่าการเรียกใช้ `sudo pip3 install --force-reinstall pyopenssl` บนเครื่องเป้าหมายได้แก้ปัญหาแล้ว อย่างไรก็ตาม ฉันยังรันบนเครื่องโฮสต์ก่อนหน้านั้นด้วยโดยไม่มีผลชัดเจน (ดังนั้น เป็นไปได้ตามสมมุติฐานที่คุณต้องทำทั้งสองอย่าง)
Score:3
ธง in

ผู้ดูแลแพ็คเกจได้ปรับใช้ v37.0.1 ซึ่งรวมถึง (https://github.com/pyca/cryptography/commit/3fb93cfde75d073a91bc4a73a51f62962092501e):

  • คืนค่าสัญลักษณ์ดั้งเดิมสำหรับรุ่นเก่า pyOpenSSL ผู้ใช้ เหล่านี้จะเป็น ออกอีกในอนาคต ดังนั้น pyOpenSSL ผู้ใช้ยังคงควรอัปเกรด เป็นเวอร์ชันล่าสุดของแพ็คเกจนั้นเมื่ออัพเกรด การเข้ารหัส.

ดังนั้นการอัปเกรดเป็นการเข้ารหัส v37.0.1 จึงควรทำงานได้โดยไม่คำนึงถึงเวอร์ชัน pyOpenSSL ของคุณ แต่ตามที่ระบุไว้ การเปลี่ยนแปลงเหล่านี้จะถูกนำกลับมาใช้ใหม่ในภายหลัง ตามที่ @Miika ได้แนะนำไว้ การอัปเกรดเป็นวิธีที่ดีกว่าหากคุณทำได้

pt flag
อาน่ารัก ขอบคุณที่ยืนยัน
Score:3
ธง cn

ฉันมีปัญหาที่คล้ายกันในวันนี้และการสืบสวนชี้ไปในทิศทางเดียวกัน

เรากำลังใช้ pyOpenSSL และได้ล็อคเป็นเวอร์ชั่นเก่า มันใช้ล่าสุด การเข้ารหัส เวอร์ชันห้องสมุดที่มีความต้องการ การเข้ารหัส>=2.8.

ดังนั้น เวอร์ชันที่เปลี่ยนแปลงโดยไม่คาดคิดคือการเข้ารหัส 36.0.2 -> 37.0.0 ที่เกิดขึ้นเมื่อวันที่ 26 เมษายน (เมื่อวาน) ใช้ตัวเก่า 36.0.2 แก้ไขปัญหาในกรณีของฉันเนื่องจากการล็อกเป็นเวอร์ชันนั้นไม่มีปัญหา

จากข้อความแสดงข้อผิดพลาด Ansible อาจมีปัญหาที่คล้ายกันเนื่องจากดูเหมือนว่าจะใช้ pyOpenSSL และการนำเข้า OpenSSL ทำให้เกิดข้อผิดพลาดในกรณีของฉัน

อัปเดต:
ตามที่กล่าวไว้ในความคิดเห็น pyOpenSSL เวอร์ชันล่าสุดไม่น่าจะมีปัญหานี้ ดังนั้น หากคุณต้องการยกเลิกการเปลี่ยนแปลงที่เป็นสาเหตุของปัญหาอย่างรวดเร็ว ให้เปลี่ยนกลับการอัปเดตไลบรารีการเข้ารหัสในทางใดทางหนึ่ง วิธีแก้ไขที่ดีกว่าคือการอัปเกรด pyOpenSSL เป็นเวอร์ชันล่าสุด หากคุณมีเวลาทดสอบอย่างถูกต้อง

pt flag
ใช่นี่ดูเหมือนเป็นวิธีแก้ปัญหาโดยทั่วไป หรืออย่างน้อยก็ดีพอ ในกรณีของฉัน การติดตั้ง pyopenssl ใหม่ดูเหมือนจะทำได้เช่นกัน
ru flag
สำหรับฉันใน python 3.8 การอัปเกรด pyopenssl เป็น 22.0.0 ได้แก้ไขแล้ว
Score:1
ธง ru

สำหรับสภาพแวดล้อมของฉันที่ใช้ python 3.8 การอัปเกรด pyopenssl ถึง 22.0.0 กับ การเข้ารหัส ที่ 37.0.0 แก้ไขปัญหา

Score:0
ธง bw

Python3.7 และ virtualenv

การเข้ารหัสการติดตั้ง pip==37.0.0

เปลี่ยนต่อการแก้ปัญหา

pip ติดตั้งการเข้ารหัส==36.0.0
Score:0
ธง in

ฉันพบข้อผิดพลาดนี้กับ AWX ที่กำหนดค่าเริ่มต้น AWX-EE (ล่าสุด) ด้วยโมดูลอื่น

AWX-EE ใหม่ที่เปิดตัวในวันนี้ (27 เมษายน 2022) สร้างปัญหาเดียวกันสำหรับบางโมดูล (อย่างน้อยหนึ่งโมดูลในด้านของฉัน)

การเปลี่ยน AWX-EE เป็นเวอร์ชัน 0.6.0 ช่วยแก้ปัญหาได้

pt flag
ฉันไม่ได้ใช้ AWX แต่ดูเหมือนว่าจะมีปัญหากับการอัปเดตล่าสุดที่ไหนสักแห่ง...

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา