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)
100%
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
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
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
#5 Mis à jour par Daniel Dehennin il y a presque 4 ans
J’ai ouvert https://github.com/saltstack/salt/issues/62141.
#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
#34369supprimé
#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/2022supprimé - 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/2022supprimé - Version cible
sprint 2022 36-39 Equipe MENSRsupprimé - Début
05/09/2022supprimé
#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.
#12 Mis à jour par Daniel Dehennin il y a 9 mois
- Tâche parente mis à #36867
- Release
EOLE 2.8.1supprimé
#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