Der Arbeitstag heute kann weg.
Mein Ansible-Playbook, das seit Jahren funktioniert, funktioniert auf einmal nicht mehr:
Ja großartig! So eine wunderbare Fehlermeldung! Nicht. Gesucht, gesucht, gesucht, keinen Fehler gefunden. Der Fehler kommt übrigens nur bei Opensuse.
Die einzige Änderung: Ich hatte kürzlich auf meinem Ansible-Controller (ein Mac) ansible upgedated, auf dem andern Mac nicht, und da lief das Playbook auch noch durch. WTF?
Um es abzukürzen: Hier ist der root cause:
SyntaxError: future feature annotations is not defined
Stellt sich raus: annotations
gibt es seit Python 3.7, Opensuse, auch die aktuelle 15.6, kommt aber mit Python 3.6. Will man was neueres haben, muß man das Paket python311
installieren, und das im Inventory auch bekanntgeben:
[all:vars]
ansible_python_interpreter=/usr/bin/python
ansible_ssh_common_args="-F {{ lookup('env', 'HOME') }}/.ssh/config.ansible"
ansible_ssh_private_key_file="{{ lookup('env', 'HOME') }}/.ssh/ansible-work"
[suse:vars]
ansible_python_interpreter=/usr/bin/python3.11
[suse]
suse1.example.com
[…]
Gut, Problem erkannt. Nur wie bekomme ich das Paket python311
auf die ganzen Susen? Aus dem Alter ssh auf die Kisten und dann mit zypper
nachinstallieren bin ich definitv raus. Aber da ist ja noch der andere Rechner mit einem funktionierenden Ansible.
Das ist eiin einfaches ad-hoc-Kommando, dafür braucht man kein Playbook:
❯ ansible suse -i ~/Projekte/work/git/ansible/Rainer/cfg/linux -m zypper -a "name=python311 state=present"
regelt. Und die Scheiße geht wieder!
Übrigens: Alles mit der Hand wäre wesentlich schneller gewsen. Aber auch wesentlich uncooler 😉