serveurs:installation:bkp-srv:install-borg

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveurs:installation:bkp-srv:install-borg [2023/07/04 08:40] – [Installer le container de sauvegarde] jpmilcentserveurs:installation:bkp-srv:install-borg [2024/10/23 13:39] (Version actuelle) – [Restaurer une sauvegarde] jpmilcent
Ligne 28: Ligne 28:
   * Passer en root : '' sudo -i ''   * Passer en root : '' sudo -i ''
   * En tant que //root//, installer les paquets système nécessaire :    * En tant que //root//, installer les paquets système nécessaire : 
-    * Debian 11 avec Pyfuse3 : '' apt install python3 python3-pip python3-virtualenv python3-pip openssl libssl-dev libacl1-dev libacl1 build-essential libfuse3-dev fuse3 pkg-config '' +    * Debian 11/12 avec Pyfuse3 : '' apt install python3 python3-pip python3-virtualenv openssl libssl-dev libacl1-dev libacl1 build-essential pkg-config fuse3 libfuse3-dev'' 
-    * Debian 10  avec llfuse: '' apt install python3 python3-pip python3-virtualenv openssl libssl-dev libacl1-dev libacl1 build-essential fuse libfuse-dev pkg-config ''+    * Debian 10  avec llfuse: '' apt install python3 python3-pip python3-virtualenv openssl libssl-dev libacl1-dev libacl1 build-essential pkg-config fuse libfuse-dev ''
   * En tant que //backups// (ou //root//), installer l'environnement virtuel : ''<nowiki> virtualenv --python=python3 borg-env </nowiki>''   * En tant que //backups// (ou //root//), installer l'environnement virtuel : ''<nowiki> virtualenv --python=python3 borg-env </nowiki>''
   * Activer l'environnement : '' source borg-env/bin/activate ''   * Activer l'environnement : '' source borg-env/bin/activate ''
   * Installer les dépendances : '' pip install -U pip setuptools wheel ''   * Installer les dépendances : '' pip install -U pip setuptools wheel ''
   * Installer Borg Backup avec le support pour Fuse, si le container utilise :   * Installer Borg Backup avec le support pour Fuse, si le container utilise :
-    * Debian 11 avec pyfuse3 : '' pip install borgbackup[pyfuse3] ''+    * Debian 11/12 avec pyfuse3 : '' pip install borgbackup[pyfuse3] ''
     * Debian 10 avec llfuse : '' pip install borgbackup[llfuse] ''     * Debian 10 avec llfuse : '' pip install borgbackup[llfuse] ''
 +  * Sortir de l'environnement virtuel : ''deactivate''
   * **Notes** : il peut être intéressant d'installer //borg// sur l'utilisateur //root// afin de pouvoir accéder au dossier accessible uniquement par //root// sur le dépôt "db-srv". C'est le cas des fichiers de sauvegarde des bases de données.   * **Notes** : il peut être intéressant d'installer //borg// sur l'utilisateur //root// afin de pouvoir accéder au dossier accessible uniquement par //root// sur le dépôt "db-srv". C'est le cas des fichiers de sauvegarde des bases de données.
 ==== Accéder à Borg sans activer l'environnement virtuel ==== ==== Accéder à Borg sans activer l'environnement virtuel ====
Ligne 105: Ligne 106:
   * Il faut ensuite configurer l'accès aux bases à sauvegarder depuis l'IP du container Borgmatic. Le container créé a une IP privée au format //192.168.xxx.xxx//, nous ajoutons donc avec ''/16'' un ensemble d'IP privé qui devrait convenir dans la plupart des cas. Si nécessaire vérifier l'IP obtenu par votre container à l'aide de Portainer par exemple. Pour éditer la config de Postgresql  : ''vi pg_hba.conf''   * Il faut ensuite configurer l'accès aux bases à sauvegarder depuis l'IP du container Borgmatic. Le container créé a une IP privée au format //192.168.xxx.xxx//, nous ajoutons donc avec ''/16'' un ensemble d'IP privé qui devrait convenir dans la plupart des cas. Si nécessaire vérifier l'IP obtenu par votre container à l'aide de Portainer par exemple. Pour éditer la config de Postgresql  : ''vi pg_hba.conf''
     * Ajouter : <code properties>     * Ajouter : <code properties>
-host    geonature2db    geonatadmin     172.18.5.1/16           md5 +host    geonature2db    geonatadmin     172.18.5.1/16           scram-sha-256 
-host    gnatlas         geonatadmin     172.18.5.1/16           md5+host    gnatlas         geonatadmin     172.18.5.1/16           scram-sha-256
 # Voir s'il n'est pas possible d'utiliser l'utilisateur geonatadmin à la place de postgres... # Voir s'il n'est pas possible d'utiliser l'utilisateur geonatadmin à la place de postgres...
 host    gnatlas         postgres        172.18.5.1/16           trust host    gnatlas         postgres        172.18.5.1/16           trust
Ligne 121: Ligne 122:
   * Générer en local un UUID pour la //passphrase// de la clé de cryptage des dépôts local et distant de l'instance concernée : ''uuid''   * Générer en local un UUID pour la //passphrase// de la clé de cryptage des dépôts local et distant de l'instance concernée : ''uuid''
     * Stocker cette //passphrase// dans Keepass     * Stocker cette //passphrase// dans Keepass
 +  * Sur l'instance //bkp-srv//, en tant qu'utilisateur ''backups'', créer le dossier qui contiendra les dépôts : ''sudo -i ; su - backups ; mkdir ~/<instance>-srv''
   * Se connecter à l'instance concernée : '' ssh admin@<instance>-<region>-sinp ''   * Se connecter à l'instance concernée : '' ssh admin@<instance>-<region>-sinp ''
     * Modifier le fichier //~/docker/borgmatic/.env// de l'instance en ajoutant sa //passphrase// comme valeur du paramètre ''BORG_PASSPHRASE'' : ''vi ~/docker/borgmatic/.env''     * Modifier le fichier //~/docker/borgmatic/.env// de l'instance en ajoutant sa //passphrase// comme valeur du paramètre ''BORG_PASSPHRASE'' : ''vi ~/docker/borgmatic/.env''
   * Accéder au container //borgmatic// pour initialiser le dépôt de l'instance : '' docker exec -it borgmatic /bin/bash ''   * Accéder au container //borgmatic// pour initialiser le dépôt de l'instance : '' docker exec -it borgmatic /bin/bash ''
 +  * Établissez une première connexion au serveur du dépôt distant via SSH pour enregistrer le serveur distant : ''ssh -p <port-ssh-bkp-srv> backups@<bkp-srv-private-ip>''
   * À l'aide de //Borgmatic//, initialiser les dépôts de l'instance (présent dans le fichier de config de //Borgmatic//). Borgmatic se charge d’exécuter les commandes //Borg// : ''<nowiki> borgmatic init --encryption repokey-blake2 </nowiki>''   * À l'aide de //Borgmatic//, initialiser les dépôts de l'instance (présent dans le fichier de config de //Borgmatic//). Borgmatic se charge d’exécuter les commandes //Borg// : ''<nowiki> borgmatic init --encryption repokey-blake2 </nowiki>''
 +    * Si besoin, vous pouvez réinitialiser les dépôts en suivant la procédure "Réinitialiser un dépôt" décrite ci-dessous.
   * Pour voir les infos concernant un dépôt :    * Pour voir les infos concernant un dépôt : 
     * Dépôt de "db-srv" : ''<nowiki> borg info ssh://backups@10.0.1.30:<ssh-port-bkp-srv>/home/backups/db-srv/ </nowiki>''     * Dépôt de "db-srv" : ''<nowiki> borg info ssh://backups@10.0.1.30:<ssh-port-bkp-srv>/home/backups/db-srv/ </nowiki>''
Ligne 161: Ligne 165:
   * À l'email adminsys : '' echo "THIS IS A TEST EMAIL sended to adminsys at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" adminsys@<domaine-sinp>  ''   * À l'email adminsys : '' echo "THIS IS A TEST EMAIL sended to adminsys at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" adminsys@<domaine-sinp>  ''
   * À un utilisateur système //root// : '' echo "THIS IS A TEST EMAIL sended to root at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" root ''   * À un utilisateur système //root// : '' echo "THIS IS A TEST EMAIL sended to root at $(date "+%F %H:%M")" | mail -s "[${HOSTNAME}] Test email" root ''
 +
 +=== Tester l'envoi de message Telegram ===
 +  * Envoyer un message : '' telegram-send "Test at `date`" ''
  
 === Tester Borgmatic === === Tester Borgmatic ===
-  * Tester les fichiers de configuration de //Borgmatic// avec : '' validate-borgmatic-config ''+  * Tester les fichiers de configuration de //Borgmatic// avec : ''borgmatic config validate''  (anciennement '' validate-borgmatic-config '')
   * **ATTENTION** : il est maintenant nécessaire d'initialiser les dépôts avant de lancer la commande de test ci-dessous. Voir la section "Initialisation des dépôts".   * **ATTENTION** : il est maintenant nécessaire d'initialiser les dépôts avant de lancer la commande de test ci-dessous. Voir la section "Initialisation des dépôts".
   * Tester une sauvegarde manuellement pour vérifier que tout fonctionne : ''<nowiki> borgmatic --verbosity 2 --stats --files </nowiki>''   * Tester une sauvegarde manuellement pour vérifier que tout fonctionne : ''<nowiki> borgmatic --verbosity 2 --stats --files </nowiki>''
- 
-=== Tester le dump Postgresql=== 
-  * Contexte : tester manuellement le dump lancé par Borgmatic dans le container. 
-  * Lancer le dump. Ex. : <code bash>PGPASSWORD=<password-geonatadmin> pg_dump --verbose --no-password --clean --if-exists --host 172.18.5.1 --port 5432 --username geonatadmin --format custom geonature2db > /root/geonature2db</code> 
-  * ATTENTION : dans les logs du container, le dump est lancer avec la variable d'env PGPASSWORD qui est non visible ! 
-  * Pour réaliser le dump de la base, il faut un utilisateur avec des droits de super utilisateurs, sinon il y a des risques que le dump échoue car l'utilisateur n'aura pas les droits suffisant sur certaines tables ou autres éléments de la base. 
  
 === Tester le cron de Borgmatic === === Tester le cron de Borgmatic ===
Ligne 180: Ligne 181:
   * Si vous avez correctement configurer l'envoie de message via Telegram, vous devriez recevoir des messages indiquant le démarrage de la sauvegarde à l'heure que vous avez indiqué. Sinon, vous devriez pouvoir voir les logs sur l'interface de Portainer.   * Si vous avez correctement configurer l'envoie de message via Telegram, vous devriez recevoir des messages indiquant le démarrage de la sauvegarde à l'heure que vous avez indiqué. Sinon, vous devriez pouvoir voir les logs sur l'interface de Portainer.
  
 +=== Tester le dump Postgresql===
 +  * Contexte : tester manuellement le dump lancé par Borgmatic dans le container (si Postgresql est installé sur votre instance).
 +  * Lancer le dump. Ex. : <code bash>PGPASSWORD=<password-geonatadmin> pg_dump --verbose --no-password --clean --if-exists --host 172.18.5.1 --port 5432 --username geonatadmin --format custom geonature2db > /root/geonature2db</code>
 +  * ATTENTION : dans les logs du container, le dump est lancer avec la variable d'env PGPASSWORD qui est non visible !
 +  * Pour réaliser le dump de la base, il faut un utilisateur avec des droits de super utilisateurs, sinon il y a des risques que le dump échoue car l'utilisateur n'aura pas les droits suffisant sur certaines tables ou autres éléments de la base.
 ==== Utiliser Telegram ==== ==== Utiliser Telegram ====
 Configurer Telegram pour l'utiliser avec ''Ntfy'' ou le script ''telegram-send'' et envoyer des alertes à l'aide de Borgmatic. Configurer Telegram pour l'utiliser avec ''Ntfy'' ou le script ''telegram-send'' et envoyer des alertes à l'aide de Borgmatic.
Ligne 244: Ligne 250:
     * Le dossier ///tmp/repo// contient les dossiers des différentes sauvegardes. Ex. de dossier sauvegardé le 17 mai 2021 à 13h57 : '' web-srv-2021-05-17T13:57:02 ''     * Le dossier ///tmp/repo// contient les dossiers des différentes sauvegardes. Ex. de dossier sauvegardé le 17 mai 2021 à 13h57 : '' web-srv-2021-05-17T13:57:02 ''
   * Copier les fichiers à restaurer sur l'hôte en les copiant depuis le point de montage vers le dossier lié l'hôte :   * Copier les fichiers à restaurer sur l'hôte en les copiant depuis le point de montage vers le dossier lié l'hôte :
-    * Ex. pour //web-srv// : '' cp -r "/tmp/repo/web-srv-2021-05-17T13:57:02/mnt/source/etc/cron.d/" /tmp/restore/ '' +    * Ex. pour //web-srv// : '' cp -r "/tmp/repo/web-srv-2021-05-17T13:57:02/mnt/source/etc/cron.d/" /tmp/restore/$(date +'%Y-%m-%d')_gnatlas.custom '' 
-    * Ex. pour //db-srv// : '' cp -r /tmp/repo/db-srv-2022-04-08T01\:07\:55/root/.borgmatic/postgresql_databases/172.18.5.1/geonature2db /tmp/restore/ ''+    * Ex. pour //db-srv// : '' cp -r /tmp/repo/db-srv-2022-04-08T01\:07\:55/root/.borgmatic/postgresql_databases/172.18.5.1/geonature2db /tmp/restore/$(date +'%Y-%m-%d')_geonature2db.custom ''
     * Vérifier las présence des fichiers à restaurer : ''ls -al /tmp/restore ''     * Vérifier las présence des fichiers à restaurer : ''ls -al /tmp/restore ''
-  * Donner les droits d'accès à l'utilisateur admin : ''chmod 644 /tmp/restore/geonature2db'' +  * Donner les droits d'accès à l'utilisateur admin : ''chmod 644 /tmp/restore/*.custom'' 
-  * Démonter le point de montage et quitter le shell interactif : '' borg umount /tmp/repo && exit '' +  * Démonter le point de montage et quitter le shell interactif : ''borg umount /tmp/repo'' 
-  * Récupérer sur votre machine locale l'archive de base de données : ''scp admin@bkp-aura-sinp:/tmp/restore/geonature2db ./2022-04-08_geonature2db.custom''+  * Récupérer sur votre machine locale l'archive de base de données : ''scp admin@bkp-<region>-sinp:/tmp/restore/*.custom ./''
     * Voir [[serveurs:installation:db-srv:postgresql-config#restaurer_localement_un_dump_de_la_base_du_serveur| la restauration en local d'une base serveur]]     * Voir [[serveurs:installation:db-srv:postgresql-config#restaurer_localement_un_dump_de_la_base_du_serveur| la restauration en local d'une base serveur]]
  
Ligne 260: Ligne 266:
     * Ex. : ''<nowiki> borgmatic extract --repository /mnt/borg-repository --archive "web-srv-2021-05-17T13:57:02" --destination /tmp/restore </nowiki>''     * Ex. : ''<nowiki> borgmatic extract --repository /mnt/borg-repository --archive "web-srv-2021-05-17T13:57:02" --destination /tmp/restore </nowiki>''
   * Pour extraire seulement un dossier de l'archive utiliser l'option ''<nowiki> --path </nowiki>'' avec le chemin du dossier sans slash au début. Ex. : ''<nowiki> borgmatic extract --repository /mnt/borg-repository --archive "web-srv-2021-05-17T13:57:02" --path "mnt/source/etc" --destination /tmp/restore </nowiki>''   * Pour extraire seulement un dossier de l'archive utiliser l'option ''<nowiki> --path </nowiki>'' avec le chemin du dossier sans slash au début. Ex. : ''<nowiki> borgmatic extract --repository /mnt/borg-repository --archive "web-srv-2021-05-17T13:57:02" --path "mnt/source/etc" --destination /tmp/restore </nowiki>''
-  * Note concernant les bases de données : les fichiers ou dossiers des sauvegardes devraient se trouver dans ''/tmp/restore/root/.borgmatic/postgresql_databases/172.18.0.1/geonature2db'' (si le dossier d'extraction est ''/tmp/restore/'')+  * Note concernant la localisation des éléments sauvegardés dans le dossier d'extraction ''/tmp/restore/'' (si le dossier d'extraction est ''/tmp/restore/'' 
 +    * les fichier ou dossiers systèmes sauvegardés se trouvent dans ''/tmp/restore/mnt/...'' 
 +    * les sauvegardes des bases de données se trouvent dans ''/tmp/restore/root/.borgmatic/postgresql_databases/172.18.0.1/..''
   * Quitter le container : ''exit''   * Quitter le container : ''exit''
  
  • serveurs/installation/bkp-srv/install-borg.1688460005.txt.gz
  • Dernière modification : 2023/07/04 08:40
  • de jpmilcent