Projet

Général

Profil

Tâche #34250

Scénario #36867: Mise à jour Salt en version 3007.6

salt-minion 3004.1 : RSA key format is not supported (bug upstream)

Ajouté par Gilles Grandgérard il y a presque 4 ans. Mis à jour il y a 6 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
17/06/2025
Echéance:
% réalisé:

100%

Restant à faire (heures):
0.0

Description

Il semble y avoir un problème entre Scribe 2.7.2 et le minion des postes.

Vu dans https://dev-eole.ac-dijon.fr/jenkins/job/2.7.2/job/test-etb1-scribe-joindomain-win10-prev-2.7.2-amd64/455/console
Dans URL : https://dev-eole.ac-dijon.fr/jenkins/job/2.7.2/job/test-etb1-scribe-joindomain-win10-prev-2.7.2-amd64/ws/ws/etb1.pceleve-851799/salt_minion.log
ATTENTION : le fichier fait 230 MO !!!

2022-06-03 07:03:58,699 [salt.minion      :1166][CRITICAL][4704] Unexpected error while connecting to salt
Traceback (most recent call last):
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\minion.py", line 1140, in _connect_minion
    yield minion.connect_master(failed=failed)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\ext\tornado\gen.py", line 1056, in run
    value = future.result()
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\ext\tornado\concurrent.py", line 249, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 4, in raise_exc_info
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\ext\tornado\gen.py", line 1064, in run
    yielded = self.gen.throw(*exc_info)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\minion.py", line 1366, in connect_master
    master, self.pub_channel = yield self.eval_master(
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\ext\tornado\gen.py", line 1056, in run
    value = future.result()
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\ext\tornado\concurrent.py", line 249, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 4, in raise_exc_info
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\ext\tornado\gen.py", line 309, in wrapper
    yielded = next(result)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\minion.py", line 821, in eval_master
    pub_channel = salt.transport.client.AsyncPubChannel.factory(
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\transport\client.py", line 205, in factory
    return salt.transport.zeromq.AsyncZeroMQPubChannel(opts, **kwargs)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\transport\zeromq.py", line 384, in __init__
    self.auth = salt.crypt.AsyncAuth(self.opts, io_loop=self.io_loop)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\crypt.py", line 515, in __new__
    auth.__singleton_init__(opts, io_loop=io_loop)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\crypt.py", line 551, in __singleton_init__
    self.get_keys()
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\crypt.py", line 903, in get_keys
    key = get_rsa_key(self.rsa_path, None)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\crypt.py", line 213, in get_rsa_key
    return _get_key_with_evict(path, str(os.path.getmtime(path)), passphrase)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\utils\decorators\__init__.py", line 298, in _memoize
    cache[args_] = func(*args, **kwargs)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\salt-3004.1-py3.8.egg\salt\crypt.py", line 197, in _get_key_with_evict
    key = RSA.importKey(f.read(), passphrase)
  File "C:\Program Files\Salt Project\Salt\bin\lib\site-packages\Cryptodome\PublicKey\RSA.py", line 788, in import_key
    raise ValueError("RSA key format is not supported")
ValueError: *RSA key format is not supported*
  • ls salt_minion.log -l
    243911419 juin 3 11:28 salt_minion.log
  • gilles@gilles-thinkpad ~/Téléchargements $ grep "2022-06-03 07:03:58" salt_minion.log
    2022-06-03 07:03:58,699 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,715 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,715 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,731 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,731 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,746 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,746 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,746 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,762 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,762 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,778 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,778 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,778 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,793 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,793 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,809 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,809 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,809 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,825 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,825 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,840 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,856 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,871 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,871 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,887 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,902 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,918 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,934 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,949 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,949 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,965 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,981 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,981 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt
    2022-06-03 07:03:58,996 [salt.minion :1166][CRITICAL][4704] Unexpected error while connecting to salt

soit 34 à la seconde. Le poste doit être quasi arrêté...

Révisions associées

Révision 3f7fdd12 (diff)
Ajouté par Daniel Dehennin il y a 9 mois

fix: minion can be started with an empty RSA key file

The restart of the minion can interrupt the generation of the minion
RSA key which makes the minion fail due to insufficient upstream
checks.

As a workaround, we can avoid the minion restart after installation
since grains are dynamic and highstate is run by reactor when the
minion key is accepted.

Ref: #34250

Révision ceb3fcf3 (diff)
Ajouté par Daniel Dehennin il y a 9 mois

fix: compile installMinion binaries

Ref: #34250

Historique

#1 Mis à jour par Daniel Dehennin il y a presque 4 ans

Ha mais normalement nous utilisons python3-m2crypto, qui est la bibliothèque utilisée en premier, pour éviter cette erreur.

Peux-tu vérifier ce que donne la commande suivante sur le serveur Scribe :

apt policy python3-m2crypto

#2 Mis à jour par Daniel Dehennin il y a presque 4 ans

Arf, je viens de comprendre que cela se passe sur le minion et non le scribe.

Est-ce une clef générée sur le minion ou une clef sauvegardé/restaurée ?

Normalement m2crypto est la bibliothèque préférée.

#3 Mis à jour par Daniel Dehennin il y a presque 4 ans

Faire sur le client :

salt-call --local --versions-report

#4 Mis à jour par Gilles Grandgérard il y a presque 4 ans

  • Version cible mis à sprint 2022 23-25 Equipe MENSR
  • Tâche parente mis à #34243

#6 Mis à jour par Joël Cuissinat il y a plus de 3 ans

  • Tâche parente changé de #34243 à #34369

#7 Mis à jour par Joël Cuissinat il y a plus de 3 ans

  • Tâche parente #34369 supprimé

#8 Mis à jour par Joël Cuissinat il y a plus de 3 ans

  • Tracker changé de Tâche à Scénario
  • Sujet changé de salt-minion 3004.1 : RSA key format is not supported à salt-minion 3004.1 : RSA key format is not supported (bug upstream)
  • Version cible sprint 2022 26-35 Equipe MENSR (été+) supprimé
  • Début 03/06/2022 supprimé
  • Release mis à EOLE 2.8.1

#9 Mis à jour par Gilles Grandgérard il y a plus de 3 ans

  • Echéance mis à 30/09/2022
  • Version cible mis à sprint 2022 36-39 Equipe MENSR
  • Début mis à 05/09/2022

#10 Mis à jour par Joël Cuissinat il y a plus de 3 ans

  • Echéance 30/09/2022 supprimé
  • Version cible sprint 2022 36-39 Equipe MENSR supprimé
  • Début 05/09/2022 supprimé

#11 Mis à jour par Klaas TJEBBES il y a 9 mois

Le problème n’apparaît plus sur les clients Windows 10.
Il est ré-apparu sur les clients Windows 11.

https://groups.google.com/g/salt-users/c/_pw50MphBac

#12 Mis à jour par Daniel Dehennin il y a 9 mois

  • Tâche parente mis à #36867
  • Release EOLE 2.8.1 supprimé

#13 Mis à jour par Daniel Dehennin il y a 9 mois

Il est possible que le redémarrage fait dans installMinion soit l’origine du problème, genre la paire de clef est générée au premier démarrage du minion mais on fait un redémarrage du service qui peut tomber au mauvais moment. De plus, sur nos infrastructures virtualisées, le PRNG peut être un peu long.

Je propose donc de ne plus redémarrer le minion après l’ajout des grains.

Cela ne pose aucun problème car il faut une intervention manuelle pour accepter la clef du client côté serveur et c’est uniquement lorsque cette acceptation est effectuée que les grains sont utilisés.

#14 Mis à jour par Daniel Dehennin il y a 9 mois

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Daniel Dehennin
  • Début mis à 17/06/2025

#15 Mis à jour par Daniel Dehennin il y a 9 mois

  • Statut changé de En cours à Résolu
  • % réalisé changé de 0 à 100

#16 Mis à jour par Daniel Dehennin il y a 9 mois

  • Statut changé de Résolu à En cours
  • % réalisé changé de 100 à 80

J’ai oublié le binaire

#17 Mis à jour par Daniel Dehennin il y a 9 mois

  • Statut changé de En cours à Résolu
  • % réalisé changé de 80 à 100

Voilà, les binaires sont disponibles.

#18 Mis à jour par Joël Cuissinat il y a 9 mois

eole-workstation-joineole$ git branch -r --contains 3f7fdd12 
  origin/HEAD -> origin/master
  origin/dist/eole/2.10.0/master
  origin/master
  origin/refactor/rework-installMinion

#19 Mis à jour par Joël Cuissinat il y a 9 mois

  • Statut changé de Résolu à Fermé
  • Restant à faire (heures) mis à 0.0

Formats disponibles : Atom PDF