Project

General

Profile

Anomalie #7480

La programmation d'une sauvegarde quotidienne ne fonctionne pas

Added by Gérald Schwartzmann over 7 years ago. Updated over 7 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Category:
-
Start date:
Due date:
% Done:

100%

Spent time:
Distribution:
EOLE 2.4

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

bacula_passwords.patch View - patch auto_store (2.52 KB) Bruno Boiget, 02/25/2014 05:31 PM


Related issues

Related to python-pyeole - Anomalie #7465: Par le jeu des imports, bacula se retouve à ouvrir un logger sur /var/log/creole.log Fermé 03/07/2014
Related to eole-bareos - Anomalie #7475: Bacula : Dans l'EAD suite à une demande de première sauvegarde immédiate "Une sauvegarde est en cours..." Classée sans suite
Related to creole - Evolution #7515: ajouter un attribut auto_save aux variables creole Fermé 03/21/2014
Related to python-pyeole - Anomalie #7461: Il n'est pas possible de lancer une sauvegarde immédiate tant qu'il n'y a pas eu de sauvegarde programmée Fermé 02/21/2014

Associated revisions

Revision 3fec0cb1 (diff)
Added by Benjamin Bohard over 7 years ago

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 7 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 7 years ago

  • Description updated (diff)

#3 Updated by Gérald Schwartzmann over 7 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 7 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 7 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'/>
bacula_fd_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'/>
bacula_sd_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 7 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 7 years ago

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 7 years ago

  • Status changed from Nouveau to Résolu
  • % Done changed from 0 to 100

#9 Updated by Joël Cuissinat over 7 years ago

Validé par le test squashTM.

#10 Updated by Joël Cuissinat over 7 years ago

  • Status changed from Résolu to Fermé
  • Assigned To set to Benjamin Bohard

Also available in: Atom PDF