Anomalie #7480
La programmation d'une sauvegarde quotidienne ne fonctionne pas
Description
La sauvegarde n'a pas fonctionnée
Pas de message d'échec dans l'EAD.
Un bconsole donne le message suivant :
Running Jobs:
Console connected at 20-Feb-14 14:27
No Jobs running. ==== Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 1 Full 0 0 OK 20-Feb-14 11:48 JobSchedulePre 2 Full 744 34.25 M OK 20-Feb-14 11:48 JobSauvegarde 3 Full 3 144.4 K OK 20-Feb-14 11:48 BackupCatalog 4 Incr 0 0 Error 20-Feb-14 13:00 JobSchedulePre 5 Incr 0 0 Error 20-Feb-14 13:00 JobSauvegarde
Précision : aucun reconfigure entre la programmation via l'EAD et l'heure de la sauvegarde
Related issues
Associated revisions
Options auto_save pour les mots de passe de bacula et fill pour leur calcul.
Fixes #7480
History
#1 Updated by Gérald Schwartzmann over 9 years ago
Voici les messages dans bconsole correspondant à la sauvegarde quotidienne
20-févr. 13:00 scribetest-dir JobId 5: shell command: run AfterJob "/usr/share/eole/sbin/baculaconfig.py --backup_err --jobType=sauvegarde" 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: Traceback (most recent call last): 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: File "/usr/share/eole/sbin/baculaconfig.py", line 13, in <module> 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: from pyeole.bacula import save_bacula_support_usb, save_bacula_support_smb, \ 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: File "/usr/lib/python2.7/dist-packages/pyeole/bacula.py", line 16, in <module> 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: from creole.loader import creole_loader, config_save_values 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 33, in <module> 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: from creole.upgrade import upgrade 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: File "/usr/lib/python2.7/dist-packages/creole/upgrade.py", line 34, in <module> 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: filename=log_filename) 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: File "/usr/lib/python2.7/dist-packages/pyeole/log.py", line 314, in init_logging 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: logging.config.dictConfig(log_config) 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: File "/usr/lib/python2.7/logging/config.py", line 777, in dictConfig 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: dictConfigClass(config).configure() 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: File "/usr/lib/python2.7/logging/config.py", line 575, in configure 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: '%r: %s' % (name, e)) 20-févr. 13:00 scribetest-dir JobId 5: AfterJob: ValueError: Unable to configure handler u'file': [Errno 13] Permission denied: u'/var/log/creole.log' 20-févr. 13:00 scribetest-dir JobId 5: Error: Runscript: AfterJob returned non-zero status=1. ERR=Child exited with code 1
#2 Updated by Gérald Schwartzmann over 9 years ago
- Description updated (diff)
#3 Updated by Gérald Schwartzmann over 9 years ago
Le diagnose ne parle pas non plus de l'erreur de sauvegarde de 13:30, il affiche encore la réussite de 11:48
Statut des sauvegardes :
. sauvegarde principale => Ok : Sauvegarde terminée le Thursday 20 February 2014 à 11:48.
. sauvegarde catalogue => Ok : Sauvegarde terminée le Thursday 20 February 2014 à 11:48.
#4 Updated by Gérald Schwartzmann over 9 years ago
- Subject changed from Programmation d'une sauvegarde quotidienne : prb to La programmation d'une sauvegarde quotidienne ne fonctionne pas
Un reconfigure résout visiblement le prb :
Sauvegarde terminée le Thursday 20 February 2014 à 15:00.
#5 Updated by Bruno Boiget over 9 years ago
la gestion des différents mots de passe bacula semble poser problème lors de la regénération des fichiers de configuration par l'ead.
Après étude de l'état actuel, il semble que tous les mots de passe ne sont pas sauvegardés dans le fichier /etc/eole/extra/bacula/config.eol
au reconfigure la génération se passe correctement, mais la récupération des passwords par CreoleClient semble assez aléatoire
Pour tester:
>>> from creole.client import CreoleClient >>> cl = CreoleClient() >>> cl.get_creole('bacula_dir_password') u'72733aa1147f490f84d040647b409aebd43e4ee3bd6f8391b6c6c516' >>> cl.get_creole('bacula_dir_password') u'72733aa1147f490f84d040647b409aebd43e4ee3bd6f8391b6c6c516' >>> cl.get_creole('bacula_dir_password') u'72733aa1147f490f84d040647b409aebd43e4ee3bd6f8391b6c6c516' >>> cl.get_creole('bacula_sd_password') u'c9a321329a26bc2f50aa8e66baa43ef7e91c43a6281caf18d2b14cd6' >>> cl.get_creole('bacula_sd_password') u'c9a321329a26bc2f50aa8e66baa43ef7e91c43a6281caf18d2b14cd6' >>> cl.get_creole('bacula_dir_password') u'8e98614dbf2988d8adc8fea22975004c9a3faada5f1f52c701c4c810' >>> cl.get_creole('bacula_dir_password') u'8e98614dbf2988d8adc8fea22975004c9a3faada5f1f52c701c4c810'
Par contre, un appel direct à gen_random() (creole.utils) depuis la console renvoie bien une valeur différente à chaque appel
Point sur la définition des mots de passe dans les dictionnaires:
bacula_dir_password- <variable name='bacula_dir_password' type='string' description='Mot de passe du directeur' mode="expert"/>
- <fill name='gen_random' target='bacula_dir_password'/>
<variable name='bacula_fd_password' type='string' description='Mot de passe du serveur de fichiers' hidden='True'/>
- <auto name='gen_random' target='bacula_fd_password'/>
<variable name='bacula_sd_password' type='string' description='Mot de passe du serveur de stockage distant' mandatory='True'/>
- <condition name='frozen_if_in' source='bacula_sd_local'> (oui)
- <fill name='gen_random' target='bacula_sd_password'/>
dans le dictionnaire extra/00_bacula.xml:
bacula_mon_password- <variable name='bacula_mon_password' auto_freeze='True'/>
- <fill name='gen_random' target='bacula.monitor.bacula_mon_password'/>
- valeur enregistrée dans /etc/eole/extra/config.eol
#6 Updated by Bruno Boiget over 9 years ago
le fonctionnement actuel pour bacula_sd_password est :
- la variable devient 'frozen' (si le service local storage est activé pour bacula_sd_password)
- elle a la propriété force_default_on_freeze qui fait que la fonction de fill est appelée à chaque récupération de la valeur (non stocké dans config.eol)
l'arnaque :
- lors d'un reconfigure, la valeur reste identique pendant quelques secondes à cause du cache de la configuration, donc tout les fichiers ont bien la même valeur
- quand on fait une programmation dans l'ead, il regénère une partie des fichiers de configuration, mais le mot de passe n'est plus le même (d'où la nécessité de reconfigurer après coup).
solutions possible :
- soit mettre l'attribut auto-freeze sur les variables, mais dans ce cas le mot de passe ne pourra plus être modifié
- soit implémenter un nouvel attribut auto_save pour que la valeur soit stockée mais reste modifiable (applique la propriété force_store_value au niveau de tiramisu)
#7 Updated by Bruno Boiget over 9 years ago
- File bacula_passwords.patch View added
je met en copie les modifs qu'il faudrait appliquer après implémentation de l'attribut auto_store dans creole.
testé avec auto_freeze à la place d'auto_store
à vérifier: dans l'état actuel, la variable bacula_sd_password récupère automatiquement la propriété force_default_on_freeze parce qu'elle est 'hidden'. Dans le cas d'un auto_store, valider qu'on ne récupère pas la valeur par défaut (calculée, pour les tests avec auto_freeze, j'ai remplacé hidden par expert).
#8 Updated by Benjamin Bohard over 9 years ago
- Status changed from Nouveau to Résolu
- % Done changed from 0 to 100
Appliqué par commit 3fec0cb1c4c9ed863801b13a68691e0cb9d4ef5a.
#9 Updated by Joël Cuissinat over 9 years ago
Validé par le test squashTM.
#10 Updated by Joël Cuissinat over 9 years ago
- Status changed from Résolu to Fermé
- Assigned To set to Benjamin Bohard