Changement du nom de domaine de base d’une instance de Publik sur le SaaS

Prérequis

DNS / Certificats

Puppet etc.

haproxy

Puppet etc. pareil qu'un déploiement, i.e. modif publik.map, ex: modules/haproxy/files/prod.saas.entrouvert.org/publik.map

Migration des chemins des pièces jointes dans wcs

Uniquement pour les instances déployées avant le 11 novembre 2021 (#21731)


from wcs.carddef import CardDef
from wcs.formdef import FormDef

for formdef in FormDef.select(ignore_migration=True) + CardDef.select(ignore_migration=True):
    for formdata in formdef.data_class().select_iterator(ignore_errors=True, itersize=200):
        formdata.store()

sudo -u wcs wcs-manage runscript -d formulaires.demarches.maville.fr fichierdemigrationcidessus.py

FC : ajout des callback vers nouveau nom de domaine dans l'interface partenaire

En plus des callback déjà présent. Les anciens pourront être supprimés après la migration.

https://partenaires.franceconnect.gouv.fr/login

Une fois la modif faite, surveiller les mails envoyés à franceconnect@entrouvert.com (de support.partenaires@franceconnect.gouv.fr) : #69830

En cas de changement de nom de domaine uniquement sur certaines briques

Si on me migre pas l'ensemble des applications, il faut d'abord mettre en place un menu personnalisé : ("PUBLIK_EXPLICIT_MENU": true).
Sinon problèmes d'affichage du menu (#54359#note-85).
Ça reste scabreux
#66280

Opération de migration

Mettre la plateforme en mode maintenance

Via le menu maintenance dans hobo :

Attention il faut que les IP autorisées aient été configurés sur l'infra, ex: #66099 .

Mise en place des tenants avec les nouveaux noms

On commence par les services "lambda", commande la commande hobo rename_service :

hobo-manage tenant_command rename_service https://demarches.maville.fr/ https://nouvellesdemarches.maville.fr/ -d hobo.demarches.maville.fr
hobo-manage tenant_command rename_service https://formulaires.demarches.maville.fr/ https://formulaires.nouvellesdemarches.maville.fr/ -d hobo.demarches.maville.fr
...

On termine par hobo via la commande rename_hobo_service:

hobo-manage rename_hobo_service https://hobo.demarches.maville.fr/ https://hobo.nouvellesdemarches.maville.fr/

Sur les déploiements multi collectivités, pour les services lambda la commande rename_service doit être lancée sur le tenant hobo qui contrôle le service :

hobo-manage tenant_command rename_service https://demarches.ville1.fr/ https://nouvellesdemarches.ville1.fr/ -d hobo.demarches.ville1.fr
hobo-manage tenant_command rename_service https://demarches.ville2.fr/ https://nouvellesdemarches.ville2.fr/ -d hobo.demarches.ville2.fr

Les hobo secondaires se migrent comme des services lambda, en s'adressant au tenant du hobo primaire :

hobo-manage tenant_command rename_service https://hobo.demarches.ville1.fr/ https://hobo.nouvellesdemarches.ville1.fr/ -d hobo.demarches.metrolpole.fr
hobo-manage tenant_command rename_service https://hobo.demarches.ville2.fr/ https://hobo.nouvellesdemarches.ville2.fr/ -d hobo.demarches.metrolpole.fr

Modifications manuelles coté authentic si relié à un annuaire en SAML

- "MELLON_PRIVATE_KEY": "/var/lib/authentic2-multitenant/tenants/connexion.demarches.maville.fr/saml.key",
+ "MELLON_PRIVATE_KEY": "/var/lib/authentic2-multitenant/tenants/connexion.nouvellesdemarches.maville.fr/saml.key",
- "MELLON_PUBLIC_KEYS": [
    "/var/lib/authentic2-multitenant/tenants/connexion.demarches.maville.fr/saml.crt" 
  ],
+ "MELLON_PUBLIC_KEYS": [
    "/var/lib/authentic2-multitenant/tenants/connexion.nouvellesdemarches.maville.fr/saml.crt" 
  ],

Modifications manuelles coté bijoe (si wcs a changé de nom, sinon rien à faire)

Regarder wcs-olap.ini (dans le répertoire du tenant bijoe), une nouvelle section a du apparaître : https://formulaires.nouvellesdemarches.maville.fr/ (en plus de https://formulaires.demarches.maville.fr/)

Sur la base de donnée bijoe, il faut supprimer le schéma de la section https://formulaires.demarches.maville.fr/ :

DROP SCHEMA formulaires_demarches_maville_fr;

Dans wcs-olap.ini, supprimer la section https://formulaires.demarches.maville.fr/.

Dans le répertoire du tenant, supprimer l'ancien modèle de données : rm /var/lib/bijoe/tenants/xxx/schemas/formulaires_demarches_maville_fr.model

Éventuellement relancer une synchro : sudo -u bijoe /usr/bin/wcs-olap --all /var/lib/bijoe/tenants/xxx/wcs-olap.ini (ou attendre la nuit que ça se fasse tout seul)

Mettre en place des redirections des anciens nom vers les nouveaux noms

Via puppet, modification haproxy pour rediriger automatiquement tous les requêtes faites sur l'ancien nom vers le nouveau nom.

--- a/modules/haproxy/files/prod.saas.entrouvert.org/publik.map
+++ b/modules/haproxy/files/prod.saas.entrouvert.org/publik.map 
-demarches.maville.fr combo-balancer
-formulaires.demarches.maville.fr wcs-balancer
....
+demarches.maville.fr redirect-map
+formulaires.demarches.maville.fr redirect-map
.....

--- a/modules/haproxy/files/prod.saas.entrouvert.org/redirect.map
+++ b/modules/haproxy/files/prod.saas.entrouvert.org/redirect.map

+demarches.maville.fr https://nouvellesdemarches.maville.fr
+formulaires.demarches.maville.fr https://formulaires.nouvellesdemarches.maville.fr
....

Pour les impatients, sur node1/node2 forcer la mise à jour via puppet : sudo puppet agent -t.

Désactiver le mode maintenance

Postface

Dans HowDoWeDoPublikDomainNameChange il est écrit pour FranceConnect :

S'assurer que côté FranceConnect il y a juste changement d'URLs d'authentic et non la création d'un nouveau compte avec des nouveaux client_id et client_secret. Cela permet (en théorie) d'avoir les mêmes subs pour les comptes déjà fédérés.

Retour d'expérience effectué :

Ci-dessous les tickets où l'on a appliqué la procédure et les problèmes rencontrés lors de celle-ci :
#72194
#68266