AttributeError: RestoreManager instance has no attribute 'work_dir'

Mon serveur YunoHost

Matériel: Machine virtuelle Proxmox
Version de YunoHost: 3.7.0.12
J’ai accès à mon serveur : En SSH | Par la webadmin | En direct avec un clavier/écran | …
Êtes-vous dans un contexte particulier ou avez-vous effectué des modifications particulières sur votre instance ? : oui
Si oui, expliquer: Ajout d’un hook de sauvegarde

Description du problème

Je découvre Proxmox et j’en profites pour faire un test d’installation puis de restauration de mes sauvegardes yunohost à la place de la post-installation pour vérifier que je puisse réinstaller en cas de plantage de mon RPI.
Lorsque je lance la commande: yunohost backup restore “ma_sauvegarde” , j’ai le message d’erreur suivant:

  File "/usr/bin/yunohost", line 214, in <module>
    timeout=opts.timeout,
  File "/usr/lib/python2.7/dist-packages/moulinette/__init__.py", line 135, in cli
    moulinette.run(args, output_as=output_as, password=password, timeout=timeout)
  File "/usr/lib/python2.7/dist-packages/moulinette/interfaces/cli.py", line 424, in run
    ret = self.actionsmap.process(args, timeout=timeout)
  File "/usr/lib/python2.7/dist-packages/moulinette/actionsmap.py", line 527, in process
    return func(**arguments)
  File "/usr/lib/moulinette/yunohost/backup.py", line 2237, in backup_restore
    restore_manager.set_system_targets(system)
  File "/usr/lib/moulinette/yunohost/backup.py", line 973, in set_system_targets
    hook_paths = '{:s}/hooks/restore/*-{:s}'.format(self.work_dir, system_part)
AttributeError: RestoreManager instance has no attribute 'work_dir'

Je suspecte que la restauration se passe mal à cause d’un hook que j’avais mis en place pour lequel il y a un bug à la restauration: Créer un hook restore
Y-a-t-il moyen de restaurer une archive en CLI en excluant certains éléments (ici la sauvegarde du hook) comme on peut le faire avec la Webadmin en cochant/décochant chaque éléments séparément?
Par ailleurs l’archive est bien reconnue dans la webadmin de Yunohost, elle s’affiche bien.

Oui, regarde yunohost backup restore --help

Edit: et tu auras probablement besoin de yunohost backup info egalement je pense, pour lister le nom des morceaux dans ton archives

1 Like

Created a ticket on the bugtracker: https://github.com/YunoHost/issues/issues/1553

Non, ce n’est pas possible lorsqu’il s’agit de remplacer la post-install:

yunohost backup info sauvegarde_auto_du_mercredi-08-avril-2020
Erreur : YunoHost n'est pas correctement installé. Veuillez exécuter 'yunohost tools postinstall'

Par contre pas de message d’erreur avec la même archive sur une yunohost installée. Il semble n’avoir que la possibilité de restaurer une archive complète lorsque la restauration à lieu à la place de la post-install.
Edit:
J’ai lancé la commande suivante, ça a l’air de passer, je verrai bien. C’est donc bien le hook custom qui posait problème:

yunohost backup restore sauvegarde_auto_du_mercredi-08-avril-2020 --system conf_cron conf_ldap conf_nginx conf_ssh conf_ssowat conf_xmpp conf_ynh_certs conf_ynh_currenthost conf_ynh_firewall conf_ynh_mysql data_home data_mail --apps

2 suggestions d’amélioration:
a)une option --exclude plutôt que d’être obligé de tout renseigner sauf l’élément exclus.
b)Avoir accès au manuel avant la post-installation:sans mon instance yunohost fonctionnelle, il m’était impossible de trouver cette commande.

Ce système de hook est bien intéressant mais ne semble pas encore complètement au point, je vais faire les sauvegardes des fichiers complémentaires que je souhaite sauvegarder à part.
Merci Aleks pour ta réponse.

Suite de la restauration, ça a échoué:

Attention : Job for nginx.service failed because the control process exited with error code.
Attention : See "systemctl status nginx.service" and "journalctl -xe" for details.
Erreur : Échec de l’exécution du script : /usr/share/yunohost/hooks/restore/29-conf_nginx
Erreur : Impossible de restaurer la partie 'conf_nginx' du système
.........
.........
Erreur : Rien n’a été restauré

En fait, tout est bien restauré sauf les certificats de mon sous-domaine pour Nextcloud, j’ai simplement passé la commande indiquée pour savoir d’où ça venait:

L'unité (unit) nginx.service a commencé à démarrer.
avril 09 21:10:44 mondomaine.ynh.fr nginx[10074]: nginx: [emerg] BIO_new_file("/etc/yunohost/certs/cloud.mondomaine.ynh.fr/crt.pem") failed (SSL: error:020010
avril 09 21:10:44 mondomaine.ynh.fr nginx[10074]: nginx: configuration file /etc/nginx/nginx.conf test failed
avril 09 21:10:44 mondomaine.ynh.fr systemd[1]: nginx.service: Control process exited, code=exited status=1
avril 09 21:10:44 mondomaine.ynh.fr systemd[1]: Failed to start A high performance web server and a reverse proxy server.

J’ai relancé la restauration après les avoir ajoutés, tout est bien revenu.
Je me pose quelques questions concernant la restauration:

1- Est-ce un bug que la restauration des certificats du sous-domaine ne soient pas restaurés? C’est un élément bloquant alors que tous le reste est remis à sa place. Les certificats du domaine principal eux sont bien restaurés.

2- Y-a-t-il un endroit sur le net ou une autre façon de procéder pour consulter le manuel? Sans celui-ci qui se trouve sur mon instance actuelle et les indications d’ Aleks, il était impossible de restaurer dans mon cas. Hors le jour ou j’aurai vraiment besoin de cette sauvegarde, c’est quand mon instance ne fonctionnera plus. En plus ça peut être intéressant de faire une réinstallation sans forcément vouloir restaurer toutes les apps.

3- Ne faudrait-il pas prévoir une exportation du dossier /root/.ssh pour ceux qui se connecte par clefs, j’ai été bloqué en ssh pour cette raison.

Cependant l’expérience est plutôt concluante, bravo aux dev :slightly_smiling_face: Je vais prévoir la sauvegarde des éléments que je mentionne pour ne pas être embêté le jour ou j’en aurai besoin (certificats yunohost/certs+clefs ssh).

Pour la petite histoire, c’est une archive créee par la commande borg export-tar à partir de mon PC qui récupère les sauvegardes borg du serveur avec Nextcloud. Ca tourne depuis 1 an comme ça avec une sauvegarde toute les nuits et je n’avais jamais testé la restauration jusque là. Comme quoi il est important de tester la restauration avant d’en avoir vraiment besoin.

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.