Skip to main content

Reconfigurer le réseau d'un serveur Medulla (IP, FQDN, HTTPS)

S'applique à : Medulla
Version : Toutes
Environnement : On-Premise
Catégorie : Administration serveur

Contexte

Cette procédure permet de modifier la configuration réseau d’une instance Medulla : adresse IP, FQDN (nom DNS complet), passerelle, serveurs DNS et protocole (http / https).

Exemples :

192.168.1.10/24            → 10.0.0.50/24
medulla.ancien-domaine.lan → medulla.nouveau-domaine.fr

Le script reconfigure_network.py remplace l’ancien script rename_fqdn_and_protocol.py. Il permet :

  • De changer l’adresse IP, le masque, la passerelle et les serveurs DNS du serveur
  • De changer le FQDN de l’instance
  • De mettre à jour automatiquement les fichiers de configuration Medulla et la base de données
  • De migrer de http vers https et de configurer Apache pour SSL
  • De régénérer les agents Medulla avec le nouveau FQDN
  • De reconfigurer un serveur relais (ARS)

Important :
Si le FQDN change, le nouveau FQDN doit être résolvable par DNS avant l’exécution du script : le script vérifie sa résolution et s’arrête sinon.
Ne supprimez pas l’ancien enregistrement DNS tant que tous les postes n’ont pas basculé (voir Propagation vers les postes clients).


Pré-requis

  • Le script doit être exécuté en root
  • Le module Python mysql-connector (paquet mysql-connector-python) doit être installé
  • Changement de FQDN : le nouveau FQDN existe dans le DNS et pointe vers l’adresse IP (nouvelle ou actuelle) du serveur Medulla
  • Changement de FQDN : l’ancien FQDN reste résolvable pendant toute la période de transition
  • Changement d’IP : la configuration réseau du serveur est gérée par /etc/network/interfaces (voir Limites)
  • Changement d’IP : l’entrée pulse du fichier /etc/hosts contient l’adresse IP actuelle (elle sert à détecter l’ancienne IP)
  • Changement d’IP : disposer d’un accès console au serveur (console hyperviseur, iDRAC/iLO, accès physique) en cas de perte de connexion
  • HTTPS : disposer d’un certificat SSL au format PEM couvrant le FQDN (CN ou SAN), ainsi que de sa clé privée non chiffrée

Sauvegarde avant exécution

Recommandation :
Le script n’effectue aucun rollback automatique. Sauvegardez les fichiers de configuration et la base xmppmaster avant exécution.

mysqldump xmppmaster > /root/xmppmaster_$(date +%F).sql
tar czf /root/conf_backup_$(date +%F).tgz \
  /etc/network/interfaces /etc/hosts /etc/mmc /etc/pulse-xmpp-agent* \
  /etc/apache2 /etc/guacamole /var/lib/pulse2/clients/config \
  /var/lib/pulse2/clients/.generation_options /var/lib/pulse2/clients/win/install-agent.ps1

Téléchargement du script

Télécharger le script :

wget https://dl.medulla-tech.io/ma/reconfigure_network.py

Le rendre exécutable :

chmod +x reconfigure_network.py

Afficher l’aide du script :

./reconfigure_network.py --help

Déroulement de l’exécution

  1. Le script vérifie les arguments, détecte l’ancienne IP (entrée pulse de /etc/hosts) et l’ancien FQDN (nom d’hôte du système, sauf si --old-fqdn est fourni).
  2. Un avertissement s’affiche pendant 10 secondes : appuyez sur Ctrl+C pour annuler.
  3. Les fichiers de configuration, la base de données et Apache sont mis à jour, et les services concernés sont redémarrés.
  4. Si l’IP change, le service réseau est redémarré en dernier. Les instructions de reconnexion s’affichent juste avant.

Conseil :
L’ancien FQDN est déduit du nom d’hôte du serveur. Si celui-ci ne correspond pas au FQDN utilisé par Medulla, indiquez-le explicitement avec --old-fqdn.


Changer l’adresse IP

La nouvelle adresse doit être fournie en notation CIDR (adresse/préfixe). Le masque est déduit du préfixe.

./reconfigure_network.py \
--new-ip 10.0.0.50/24 \
--gateway 10.0.0.1 \
--dns-servers "10.0.0.10 10.0.0.11"

Attention :
Lors d’un changement d’IP, indiquez toujours --gateway et --dns-servers, même s’ils ne changent pas. Sans ces options, les lignes gateway et dns-nameservers existantes sont supprimées de /etc/network/interfaces et le serveur perd sa passerelle et ses DNS.

Attention :
Si vous êtes connecté en SSH, la connexion sera coupée au redémarrage du réseau. Reconnectez-vous ensuite sur la nouvelle adresse IP.

Information :
Si l’interface est configurée en DHCP, elle est convertie en configuration statique avec l’adresse fournie.


Changer le FQDN

./reconfigure_network.py \
--old-fqdn medulla.ancien-domaine.lan \
--new-fqdn medulla.nouveau-domaine.fr

Changer l’IP et le FQDN

./reconfigure_network.py \
--new-ip 10.0.0.50/24 \
--gateway 10.0.0.1 \
--dns-servers "10.0.0.10 10.0.0.11" \
--old-fqdn medulla.ancien-domaine.lan \
--new-fqdn medulla.nouveau-domaine.fr

Passer de HTTP à HTTPS

Le protocole peut être changé en même temps que l’IP ou le FQDN. Si --new-protocol n’est pas spécifié, le protocole existant est conservé.

./reconfigure_network.py \
--old-fqdn medulla.ancien-domaine.lan \
--new-fqdn medulla.nouveau-domaine.fr \
--new-protocol https \
--ssl-pem-chain-filename /root/fullchain.pem \
--ssl-pem-key-filename /root/privkey.pem

Pour passer en HTTPS sans changer de FQDN, indiquez le FQDN actuel dans --new-fqdn (le script exige au moins --new-ip ou --new-fqdn) :

./reconfigure_network.py \
--new-fqdn medulla.mondomaine.fr \
--new-protocol https \
--ssl-pem-chain-filename /root/fullchain.pem \
--ssl-pem-key-filename /root/privkey.pem

Avec un certificat, le script réalise automatiquement :

  • La copie du certificat et de la clé dans /etc/ssl/certs/ (clé en droits 600)
  • L’activation des modules Apache ssl et headers
  • La configuration et l’activation du site default-ssl
  • La redirection HTTP → HTTPS

Attention :
Fournissez toujours le certificat et la clé privée avec --new-protocol https. Sans certificat, les URLs passent en https mais Apache n’est pas configuré pour SSL.


Régénérer les agents

Si les postes clients communiquent avec Medulla via le FQDN, régénérez les agents afin qu’ils utilisent le nouveau nom DNS :

./reconfigure_network.py \
--old-fqdn medulla.ancien-domaine.lan \
--new-fqdn medulla.nouveau-domaine.fr \
--update-agent-conf

Information :
Cette option met à jour agentconf.ini et .generation_options, puis régénère les agents Medulla.

Attention :
Après régénération, les nouveaux agents doivent être déployés sur les postes pour qu’ils continuent à communiquer avec le serveur. Conservez l’ancien enregistrement DNS jusqu’à la fin de ce déploiement.


Reconfigurer un serveur relais (ARS)

Sur un serveur relais, ajoutez l’option --ars :

./reconfigure_network.py \
--ars \
--new-ip 10.0.1.20/24 \
--gateway 10.0.1.1 \
--dns-servers "10.0.0.10 10.0.0.11"

En mode ARS, seuls le réseau, /etc/hosts, relayconf.ini.local et package-server.ini.local sont mis à jour. La base de données, Apache, Guacamole et les agents ne sont pas modifiés.

Reconfigurer uniquement le réseau

L’option --only-network modifie uniquement la configuration réseau et /etc/hosts, sans toucher à la configuration Medulla :

./reconfigure_network.py --only-network \
--new-ip 10.0.0.50/24 --gateway 10.0.0.1 --dns-servers "10.0.0.10"

Propagation vers les postes clients

L’URL Guacamole de chaque machine est mise à jour en base avec un marquage de reconfiguration (need_reconf). La nouvelle configuration est transmise à chaque poste lors de son prochain check-in.

Information :
La propagation n’est pas instantanée : elle dépend de la fréquence de connexion des agents. Les postes éteints ou hors réseau ne basculeront qu’à leur prochaine connexion.

Attention :
Conservez l’ancien enregistrement DNS jusqu’à ce que tous les postes aient basculé. Le supprimer trop tôt coupe la communication avec les postes non encore reconfigurés.


Options disponibles du script

Argument Description
--new-ip Nouvelle adresse IP en notation CIDR (ex. 10.0.0.50/24)
--new-fqdn Nouveau FQDN. Doit être résolvable par DNS
--old-fqdn FQDN actuel. Si absent, déduit du nom d’hôte du serveur
--gateway Passerelle. Prise en compte uniquement avec --new-ip
--dns-servers Serveurs DNS séparés par des espaces, entre guillemets. Pris en compte uniquement avec --new-ip
--new-protocol http ou https. Si absent, le protocole existant est conservé
--ssl-pem-chain-filename Certificat SSL PEM (chaîne complète). À utiliser avec --new-protocol https
--ssl-pem-key-filename Clé privée PEM non chiffrée. À utiliser avec --new-protocol https
--update-agent-conf Met à jour la configuration des agents et les régénère
--ars Mode serveur relais (ARS)
--only-network Reconfigure uniquement le réseau, sans la configuration Medulla
--log-level debug, info (défaut), warning ou error

Information :
Au moins une des options --new-ip ou --new-fqdn est obligatoire.


Que modifie exactement le script ?

Élément Action réalisée Condition
/etc/network/interfaces Adresse, masque, passerelle, DNS Changement d’IP
/etc/hosts IP de l’entrée pulse Changement d’IP
relayconf.ini.local IP du serveur, URL Guacamole Toujours (hors --only-network)
xmppmaster.ini.local IP du serveur, URLs Guacamole / Graph / Render Serveur principal
security.ini.local Identifiant serveur (cve_central) Serveur principal
assessor_agent.ini.local IP du serveur, URL Guacamole Serveur principal
agent_master_substitute_*.ini.local IP du serveur Serveur principal, changement d’IP
package-server.ini.local IP et masque publics Changement d’IP
mmc.ini.local Description du serveur Serveur principal, changement de FQDN
Base xmppmaster Table relayserver : URL Guacamole, IP, sous-réseau, masque. Table machines : URL Guacamole et marquage need_reconf Serveur principal
Apache ProxyPass / Referer dans guacamole.conf, medulla_agent.conf, pulse.conf, websocketlogs.conf Serveur principal
Apache SSL Certificats, site default-ssl, redirection HTTPS --new-protocol https avec certificat
/etc/guacamole/tomcat.xml IP du serveur Serveur principal, changement d’IP
Agents Medulla agentconf.ini, .generation_options, régénération --update-agent-conf
install-agent.ps1 URL de téléchargement Serveur principal, changement de FQDN

Services automatiquement redémarrés

  • pulse-xmpp-agent-relay
  • mmc-agent
  • pulse-xmpp-master-substitute-assessor
  • Tous les substituts (restart-pulse-services restart allsubs), en cas de changement d’IP
  • pulse2-package-server, en cas de changement d’IP
  • apache2
  • tomcat8 (Guacamole), en cas de changement d’IP
  • networking, en dernier, en cas de changement d’IP

Attention :
Une interruption de service est à prévoir pendant l’exécution. Planifiez l’opération en dehors des heures d’utilisation.


Après l’exécution

  • Mettre à jour les enregistrements DNS (nouvelle IP et/ou nouveau FQDN)
  • Mettre à jour les règles de pare-feu si l’IP a changé
  • Vérifier l’accès à l’interface Medulla via le nouveau FQDN (et en HTTPS si configuré)
  • Vérifier que les services sont actifs :
    systemctl status pulse-xmpp-agent-relay mmc-agent pulse-xmpp-master-substitute-assessor pulse2-package-server apache2 tomcat8
  • Vérifier qu’aucune référence à l’ancienne IP ou à l’ancien FQDN ne subsiste :
    grep -rE "192\.168\.1\.10|medulla\.ancien-domaine\.lan" /etc/mmc /etc/pulse-xmpp-agent* /etc/apache2 /etc/guacamole
  • Suivre la bascule des postes : le nombre de machines marquées need_reconf doit diminuer au fil des check-ins
  • Si --update-agent-conf a été utilisé : déployer les agents régénérés sur les postes
  • Si l’IP du serveur principal a changé : reconfigurer les serveurs relais (ARS) qui pointent vers lui

Limites

  • Gestionnaire réseau : seul /etc/network/interfaces est pris en charge. Avec Netplan ou NetworkManager, le script affiche un avertissement et la configuration réseau doit être modifiée manuellement (le reste de la reconfiguration Medulla est effectué).
  • Interface unique : le script applique la nouvelle adresse aux interfaces déclarées dans /etc/network/interfaces. Sur un serveur à plusieurs interfaces, modifiez le réseau manuellement et utilisez le script sans --new-ip, ou contactez le support.
  • Assessor distant : si l’assessor est hébergé sur un autre serveur, assessor_agent.ini.local n’est pas mis à jour. Sur ce serveur, remplacez l’IP (serverip) et le FQDN de l’URL Guacamole (guacamole_baseurl), puis redémarrez pulse-xmpp-master-substitute-assessor. L’exécution du script n’est pas interrompue.

Gestion des erreurs

En cas d’échec sur une étape critique, le script s’arrête immédiatement. Les échecs sur assessor_agent.ini.local, les fichiers des substituts et package-server.ini.local sont signalés sans interrompre l’exécution.

Important :
Le script n’effectue aucun rollback automatique. Les modifications déjà appliquées restent présentes. Corrigez le problème puis relancez le script avec les mêmes paramètres, ou restaurez la sauvegarde réalisée avant exécution.

Pour obtenir plus de détails sur une erreur, relancez avec --log-level debug.


Connexion à la base de données

Les paramètres de connexion sont lus dans la section [database] de /etc/mmc/plugins/xmppmaster.ini (et .local s’il existe).

Paramètre Valeur par défaut
Hôte SQL localhost
Port SQL 3306
Utilisateur SQL mmc
Mot de passe SQL Aucune : doit être défini dans la configuration