Także tego

See also in English

Ansible na Debianie 12 (bookworm)

written by woju on 11.03.2025 12:00 CET

bookworm ma już półtora roku, i został wydany z Pythonem 3.11 i Ansible 7. Problem jest taki, że Python 3.12 wyrzucił sporo różnych starych API, i jednym takim był argument cert_file= do http.client.HTTPSConnection. Tego argumentu używał Ansible, a konkretnie moduł ansible.builtin.get_url. Tak długo, jak zarządzany system to też Debian 12, nie ma żadnego problemu, ale jak każemy ansiblowi połączyć się z maszyną, na której jest Python 3.12 (np. noble vel Ubuntu 24.04 LTS), to rzeczy się psują:

..., "msg": "An unknown error occurred: HTTPSConnection.__init__() got an unexpected keyword argument 'cert_file'", ...

Bug nie był problemem, został naprawiony (#83213), a nawet zbackportowany do ansible-core 2.15 (#81257), ale bookworm ma Ansible 7, czyli ansible-core 2.14.

Rozwiązaniem jest aktualizacja Ansible, którą można sobie wziąć z trixie:

/etc/apt/sources.list.d/trixie.list:

deb https://deb.debian.org/debian trixie main

/etc/apt/preferences.d/ansible.pref:

Package: *
Pin: release n=trixie
Pin-Priority: -10

Package: ansible* python3-netaddr
Pin: release n=trixie
Pin-Priority: 990

testing nie jest objęty polityką bezpieczeństwa Debiana, ale to i tak lepiej, niż instalować nową wersję z pipa.

Wątek na Mastodonie (po angielsku): https://social.hackerspace.pl/@woju/114143424041984794