Bug #46529
Faire qu'ansible utilise python3
0%
Description
$ ansible-playbook -i inventory.yml deploy-tenants.yml ... TASK [base : create the postgresql user named nroche] fatal: [localhost]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (psycopg2) on copain's Python /usr/bin/python. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter"}
Lors d'une installation sur une nouvelle machine (bullseye), je réalise que l'interpréteur python par défaut est encore en python2
mais que le paquet psycopg2 n'est plus disponible (en python2).
# apt policy python-psycopg2 python-psycopg2: Installé : (aucun) Candidat : (aucun) Table de version : # apt policy python3-psycopg2 python3-psycopg2: Installé : 2.8.5-1 Candidat : 2.8.5-1 Table de version : *** 2.8.5-1 500 500 http://deb.debian.org/debian bullseye/main amd64 Packages 1 http://deb.debian.org/debian unstable/main amd64 Packages 100 /var/lib/dpkg/status
La doc suggérée dans la trace (https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html) conseille de forcer l'utilisation de python3 :
$ cat ansible.cfg : [defaults] ... interpreter_python = /usr/bin/python3
Fichiers
Révisions associées
Historique
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Patch proposed changé de Non à Oui
- Fichier 0001-ansible.cfg-set-ansible-interpreter-to-python3-46529.patch 0001-ansible.cfg-set-ansible-interpreter-to-python3-46529.patch ajouté
- Tracker changé de Support à Bug
- Statut changé de Nouveau à Solution proposée
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
Ce serait cacher la misère sous le tapis, à mon avis d'abord #46530 puis aviser.
Mis à jour par Nicolas Roche il y a plus de 3 ans
En attendant, ça dépanne bien (voici une autre erreur contournée de la même façon) :
$ ansible-playbook -K -i inventory.yml install.yml ... TASK [base : Install system packages dependencies] [WARNING]: Updating cache and auto-installing missing dependency: python-apt fatal: [localhost]: FAILED! => {"changed": false, "cmd": "apt-get install --no-install-recommends python-apt -y -q", "msg": "E: Unable to correct problems, you have held broken packages." # apt-get install --no-install-recommends python-apt Les paquets suivants contiennent des dépendances non satisfaites : python : Pré-Dépend: python-minimal (= 2.7.17-2) mais ne sera pas installé Dépend: libpython-stdlib (= 2.7.17-2) mais ne sera pas installé Dépend: python2 (= 2.7.17-2) mais 2.7.18-2 devra être installé
J'ai l'impression que le problème concerne plus l'interpréteur python utilisé par ansible que ceux des venv créés.
Mis à jour par Nicolas Roche il y a plus de 3 ans
$ apt policy ansible ansible: Installé : 2.9.13+dfsg-1 Candidat : 2.9.13+dfsg-1 Table de version : *** 2.9.13+dfsg-1 500 500 http://deb.debian.org/debian bullseye/main amd64 Packages 1 http://deb.debian.org/debian unstable/main amd64 Packages 100 /var/lib/dpkg/status 2.9.6+dfsg-1~bpo10+1 100 100 http://deb.debian.org/debian buster-backports/main amd64 Packages
Mis à jour par Frédéric Péters il y a plus de 3 ans
Je ne capte pas le rapport entre ansible et le fait que la commande "apt-get install --no-install-recommends python-apt" ne fonctionne pas ?
Mis à jour par Frédéric Péters il y a plus de 3 ans
Ah, "[WARNING]: Updating cache and auto-installing missing dependency: python-apt" c'est ansible lui-même qui trouve opportun d'installer python-apt qui est un paquet qui n'existe pas, wtf.
et pourtant,
$ head -1 /usr/bin/ansible-playbook #!/usr/bin/env python3
Mis à jour par Frédéric Péters il y a plus de 3 ans
(et en fait ça ne m'intéresse pas du tout de savoir pourquoi tout ça est cassé, juste toujours pas fan d'ansible, allez savoir pourquoi).
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
Nico tu pourrais tenter une installation avec interpreter_python = auto
stp ?
Mis à jour par Nicolas Roche il y a plus de 3 ans
J'ai la même erreur avec :
$ cat ansible.cfg interpreter_python = auto $ ansible-playbook -K -i inventory.yml install.yml ... TASK [base : Install system packages dependencies] [WARNING]: Updating cache and auto-installing missing dependency: python-apt fatal: [localhost]: FAILED! => {"changed": false, "cmd": "apt-get install --no-install-recommends python-apt -y -q"
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
Bon ok j'ai pas le courage de creuser, juste si peux faire une branche wip avec ton patch original qu'on vérifie que c'est ok pour jenkins et si oui let's go.
Mis à jour par Nicolas Roche il y a plus de 3 ans
fait (j'avais pas vu ton dernier commentaire).
(un problème analogue "Could not import python modules: apt, apt_pkg.
" a été résolu chez Paul de la même façon).
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Statut changé de Solution proposée à Résolu (à déployer)
et si oui let's go.
commit f47c018ee4489edafe75d0dd3e416f09c189137d Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Wed Oct 21 14:35:31 2020 +0200 ansible.cfg: set ansible interpreter to python3 (#46529)
Mis à jour par Emmanuel Cazenave il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
ansible.cfg: set ansible interpreter to python3 (#46529)