misc-nroche/publik-dump
Nicolas Roche 6d5589d47c publik_dump: explain how to skip w.c.s. tenant dump/restore 2022-05-02 12:42:26 +02:00
..
publik_dump publik_dump: explain how to skip w.c.s. tenant dump/restore 2022-05-02 12:42:26 +02:00
tests publik_dump: limit DB connection to postgres user during restore 2022-05-02 12:29:21 +02:00
.gitignore publik-dump: add tests 2021-10-24 21:55:29 +02:00
README.rst publik_dump: explain how to skip w.c.s. tenant dump/restore 2022-05-02 12:42:26 +02:00

README.rst

La procédure de migration est la suivante :


Récupérer le mot de passe w.c.s. de connexion à la base de donnée
-----------------------------------------------------------------

Il faut récupérer le mot de passe sur une autre instance, sur la cible :
https://demarches-eurelien.test.entrouvert.org/backoffice/settings/postgresql
puis utiliser l'inspecteur pour récupérer le mot de passe.
Ou sinon en ligne de commande :
::

   $ sudo -u wcs wcs-manage shell -d demarches-eurelien.test.entrouvert.org
   In [1]: from quixote import get_publisher
   In [2]: print(get_publisher().cfg['postgresql'].get('createdb-connection-params', {}))


Récupérer les identifiant de connexion à la BD et le dsn sentry sur wcs-olap
----------------------------------------------------------------------------

Il faut récupérer ces information sur la cible, dans les fichiers
wcs-olap.ini des instances déjà migrées (en recette, il s'agit du même
mot de passe que pour w.c.s).


Recopier le certificat
----------------------

Pour la recette rien a faire le certificat wildcard est déja en place
pour test.entrouvert.org
::

   $ haproxy.test-hds.saas.entrouvert:/etc/ssl/bundles$ openssl x509 -in test.entrouvert.org.pem -text


Re-diriger vers une page de travaux
-----------------------------------

Ce n'est pas encore possible en recette.


Jouer une première fois le scripts pour cibler la bon noeud
-----------------------------------------------------------

(Le script doit être lancé sur le noeud où les crons ne sont pas désactivés)
::

   $ publik_dump/publik_dump.py tenantinfo node2.test.saas.entrouvert.org hobo-ac-versailles.test.entrouvert.org --update

Si un tenant est trop lourd (w.c.s à 18G)
-----------------------------------------

* Faire le dump w.c.s à la main
::

   $ ssh wcs.node1.prod.saas.entrouvert.org
   $ sudo tar -C /var/lib/wcs -Jcf demarches.demarches.ac-versailles.fr.tar.xz demarches.demarches.ac-versailles.fr
   $ ^D
   $ scp wcs.node1.prod.saas.entrouvert.org:demarches.demarches.ac-versailles.fr.tar.xz .


* Le restaurer dans un tenant .invalid
::

   $ scp demarches.demarches.ac-versailles.fr.tar.xz wcs.node1.hds.saas.entrouvert:.
   $ ssh wcs.node1.hds.saas.entrouvert
   $ sudo tar -Jxf demarches.demarches.ac-versailles.fr.tar.xz
   $ mv demarches.demarches.ac-versailles.fr /var/lib/wcs/demarches.demarches.ac-versailles.fr.invalid

* Sauter le dump et le restore w.c.s. en décommentant ces 4 lignes dans le script
::

   #if service["name"] == "wcs":
   #    continue  # in order to run rsync instead, a second time on large tenant dump


* Lors de la migration, passer ce répertoire et le synchroniser via rsync


Invalider les tenants
---------------------

Pour ne pas avoir les cron qui se jouent sur les 2 instances.
::

   $ publik_dump/publik_dump.py invalidate_source node2.test.saas.entrouvert.org hobo-ac-versailles.test.entrouvert.org


Dump
----

(tenant + base de donnée)
::

   $ publik_dump/publik_dump.py dump node2.test.saas.entrouvert.org hobo-ac-versailles.test.entrouvert.org

Restore
-------
::

   $ publik_dump/publik_dump.py restore node2.test.saas.entrouvert.org hobo-ac-versailles.test.entrouvert.org --target node1.test-hds.saas.entrouvert --dbtarget sql3.test-hds.saas.entrouvert


Mise à jour des identifiant de connexion à la base de donnée de w.c.s.
----------------------------------------------------------------------

Modification du pickle config.pck :
::

   $ scp publik_dump/adapt_wcs_config.py wcs.node1.test-hds.saas.entrouvert:.
   $ ssh wcs.node1.test-hds.saas.entrouvert
   $ sudo -u wcs ./adapt_wcs_config.py /var/lib/wcs/demarches-ac-versailles.test.entrouvert.org.invalid/config.pck --host test-hds.saas.entrouvert.clusters.entrouvert.org --password XXX

Remarque, ici on peut tester la connexion :
::

   $ ssh wcs.node1.test-hds.saas.entrouvert
   $ psql -U wcs -h test-hds.saas.entrouvert.clusters.entrouvert.org
   Mot de passe pour l'utilisateur wcs : XXX

et aussi que tout va bien côté wcs :
::

   $ sudo -u wcs wcs-manage shell -d demarches-ac-versailles.test.entrouvert.org.invalid

Mise à jour des identifiant de connexion à la BD et du dsn sentry de wcs-olap
-----------------------------------------------------------------------------

Modification de wcs-olap.ini :
::

   $ ssh bijoe.node1.test-hds.saas.entrouvert
   $ sudo -u bijoe vi /var/lib/bijoe/tenants/statistiques-ac-versailles.test.entrouvert.org.invalid/wcs-olap.ini
   ...
   pg_dsn = dbname='bijoe' host='test-hds.saas.entrouvert.clusters.entrouvert.org' password='YYY'

   [sentry]
   dsn = https://39e69f265d6d41adbba9cbdd9f1d4573@sentry.entrouvert.org/6
   environment = test
   ...

Remarque, ici on peut tester la connexion et l'import :
::

   ssh bijoe.node1.test-hds.saas.entrouvert
   psql -U bijoe -h test-hds.saas.entrouvert.clusters.entrouvert.org
   Mot de passe pour l'utilisateur bijoe : YYY
   bijoe=> set search_path="statistiques_ac_versailles_test_entrouvert_org"
   bijoe=> \d
   bijoe=> select * from auth_user;


Valider les tenants cibles
--------------------------

Cela va également rétablir les crons.
::

   $ publik_dump/publik_dump.py validate_target node2.test.saas.entrouvert.org hobo-ac-versailles.test.entrouvert.org --target node1.test-hds.saas.entrouvert


Rejouer les migrations Passerelle
---------------------------------

Parce qu'il y a les deux connecteurs mdph13 et rsa13 en plus sur
l'HDS, qui ne sont pas déployé sur le SaaS.
::

   $ ssh passerelle.node1.test-hds.saas.entrouvert
   $ sudo -u passerelle passerelle-manage migrate_schemas -v2


Modifier les DNS
----------------


Retirer la redirection haproxy du SaaS
--------------------------------------