Projet

Général

Profil

Anomalie #7480

La programmation d'une sauvegarde quotidienne ne fonctionne pas

Ajouté par Gérald Schwartzmann il y a environ 10 ans. Mis à jour il y a presque 10 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
Echéance:
% réalisé:

100%

Temps passé:
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 Voir - patch auto_store (2,52 ko) Bruno Boiget, 25/02/2014 17:31


Demandes liées

Lié à python-pyeole - Anomalie #7465: Par le jeu des imports, bacula se retouve à ouvrir un logger sur /var/log/creole.log Fermé 07/03/2014
Lié à 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
Lié à creole - Evolution #7515: ajouter un attribut auto_save aux variables creole Fermé 21/03/2014
Lié à 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é 21/02/2014

Révisions associées

Révision 3fec0cb1 (diff)
Ajouté par Benjamin Bohard il y a environ 10 ans

Options auto_save pour les mots de passe de bacula et fill pour leur calcul.

Fixes #7480

Historique

#1 Mis à jour par Gérald Schwartzmann il y a environ 10 ans

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 Mis à jour par Gérald Schwartzmann il y a environ 10 ans

  • Description mis à jour (diff)

#3 Mis à jour par Gérald Schwartzmann il y a environ 10 ans

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 Mis à jour par Gérald Schwartzmann il y a environ 10 ans

  • Sujet changé de Programmation d'une sauvegarde quotidienne : prb à 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 Mis à jour par Bruno Boiget il y a environ 10 ans

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 Mis à jour par Bruno Boiget il y a environ 10 ans

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 Mis à jour par Bruno Boiget il y a environ 10 ans

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 Mis à jour par Benjamin Bohard il y a environ 10 ans

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

#9 Mis à jour par Joël Cuissinat il y a environ 10 ans

Validé par le test squashTM.

#10 Mis à jour par Joël Cuissinat il y a presque 10 ans

  • Statut changé de Résolu à Fermé
  • Assigné à mis à Benjamin Bohard

Formats disponibles : Atom PDF