Projet

Général

Profil

Bug #46529

Faire qu'ansible utilise python3

Ajouté par Nicolas Roche il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
10 septembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision f47c018e (diff)
Ajouté par Nicolas Roche il y a plus de 3 ans

ansible.cfg: set ansible interpreter to python3 (#46529)

Historique

#1

Mis à jour par Nicolas Roche il y a plus de 3 ans

#2

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.

#3

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.

#4

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

C'est quoi ta version d'ansible ?

#5

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
#6

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 ?

#7

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
#8

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).

#9

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

Nico tu pourrais tenter une installation avec interpreter_python = auto stp ?

#13

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" 

#15

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.

#16

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).

#17

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)
#18

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF