Depuis un certain temps, Microsoft fournit des Cmdlets Powershell permettant d’exporter et d’importer la configuration des serveurs FIM. Ces commandes sont incluses dans le module FIMAutomation exploitable dans l'invite de commande PowerShell. |
Prérequis
Depuis un certain temps, Microsoft fournit des Cmdlets Powershell permettant d’exporter et d’importer la configuration des serveurs FIM. Ces commandes sont incluses dans le module FIMAutomation exploitable dans l'invite de commande PowerShell.
Grace à ce module, vous pourrez ainsi très facilement sauvegarder et restaurer la configuration, migrer la configuration entre différents environnements (dev/homologation/production) ou différentes forêts, ou encore exporter et importer des ressources dans le portail FIM.
Pour réaliser ces actions, il est nécessaire d'utiliser le module FIMAutomation ainsi que script PowerShell fournit par Microsoft (téléchargeables ici).
Pour plus de facilité, j'ai zippé l'ensemble de ces scripts (utilisé dans le tuto + script MS) que vous téléchargerez ici.
Autorisez également l'exécution des scripts via cet commande : Set-ExecutionPolicy RemoteSigned
Veillez à valider toutes étape sur un environnement de dev au préalable. Afin de garantir une réussite optimale, il est nécessaire que les versions de FIM soient identiques entre le serveur source et le serveur cible.
Schéma de migration
Voici les différentes étapes à réaliser :
Etapes | Remarques |
1- Sauvegarde de l'environnement source et cible | Fortement conseillée |
2- Exportation du schéma FIM Service (serveur source & cible) | Obligatoire |
3- Exportation de la configuration du moteur de synchronisation de FIM | Obligatoire |
4- Exportation des policy FIM Service (serveur source & cible) | Obligatoire |
5- Activer le mode maintenance | Obligatoire |
6- Importer le schéma FIM Service | Obligatoire |
7- Importer la configuration du moteur de synchronisation de FIM | Obligatoire |
8- Importer les policy FIM Service | Obligatoire |
9- Désactiver le mode maintenance | Obligatoire |
Attention : la présence des DLLs customisées n'est pas pris en compte dans ce scénario.
Tuto step by step
Dans mon cas, je vais réaliser une migration entre deux forêts AD distinctes (build : 4.1.3419.0). Dans un premier temps, nous allons préparer les fichiers et dossiers nécessaires à la migration. Vous pouvez donc dézipper les deux dossiers afin de la placer à la racine de votre disque C (sur le serveur FIM Service source et cible). Si le chemin est différent, pensez à répercuter la modification directement sur les scripts.
Dans le répertoire _MigrationFim, nous retrouvons les scripts PowerShell suivants :
Scripts .ps1 | Description | |
commitChanges_policy | Applique le fichier généré par SyncPolicy | |
commitChanges_schema | Applique le fichier généré par SyncSchema | |
ExportPolicy | Exporte la configuration des ressources FIM depuis FIM Service (appel au Web Service FIM) | |
ExportSchema | Exporte le schéma utilisé dans FIM Service (appel au Web Service FIM) | |
ResumeUndoneImports_policy | Applique les erreurs générées à la suite de l'exécution du script : commitChanges_policy | |
ResumeUndoneImports_schema | Applique les erreurs générées à la suite de l'exécution du script : commitChanges_schema | |
SyncPolicy | Compare les attributs de ressources FIM et retourne une liste des changements à effectuer | |
SyncSchema | Compare le schéma FIM et retourne une liste des changements à effectuer |
Vérifiez et identifier le chemin cible ou sera créé le fichier.
Exécuter le script sur le serveur FIM Service source.
Exécuter le script sur le serveur FIM Service cible.
Vérifiez que le fichier suivant est bien généré.
Serveur FIM Service source | Serveur FIM Service cible |
Il faut réaliser la même action avec le script ExportPolicy sur le serveur source et sur le serveur cible
Serveur FIM Service source | Serveur FIM Service cible |
Exécuter le script.
Il faut ensuite exporter la configuration du serveur qui fait office de serveur de synchronisation.
Activez le mode maintenance votre portail FIM Service. Pour cela il faut :
- arrêtez le service IIS. Il est possible de désactivez uniquement le site ou est configurer FIM Service
- il faut refuser les connections sur le port 5725 au niveau du pare-feu
Copiez ensuite les deux fichiers sources sur le serveur cible.
L'idée ici est de comparer les deux fichiers relatifs au schéma du serveur source/cible afin de générer un nouveau fichier qui comportera la liste des changements à effectuer.
Un fois les chemins vérifiés. Exécutez le script SyncSchema.
Cela va générer un nouveau fichier qui indiquera le nombre de modification à effectuer. Dans mon exemple, il y a 32 changements à réaliser au niveau du schéma utilisé dans le portail FIM.
Le script commitChanges_schema va appliquer ces 32 changements.
Exécutez le script. Le nouveau schéma est maintenant importé sur le serveur FIM Service cible.
Nous allons maintenant importer les MAs ainsi que le schéma du moteur de Synchronisation de FIM. Autrement dit, la configuration serveur du moteur de synchronisation.
Pour cela, cliquez sur Import Server Configuration. Pour la sauvegarde, il suffit de cliquer sur Export Server Configuration.
L'importation démarre.
Il va falloir renseigner les informations de connexion pour chaque MA.
...
...
L'importation de la configuration de votre moteur de synchronisation est maintenant terminée.
La dernière étape de migration correspond à l'importation des "Policy" qui correspondent aux Synchronization rules, aux workflow et MPRs du portail FIM.
Le fonctionnement de la migration est identique au schéma. Nous allons comparer les deux fichiers ain de générer un fichier différentiel qui reprendra les modifications à effectuer.
En cas d'erreur, le script CommitChanges_policy va générer un fichier undone qu'il sera possible d'exécuter après corrections des problèmes afin d'importer les ressources manquantes.
Il faut ensuite lancer le script commitChanges_policy. Lorsque des erreurs sont générées, cela les ajoute dans le fichier undone_policy.
Dans mon cas, je me retrouve avec 12 erreurs.
Il faudra alors lancer le script ResumeUndoneImports_policy afin d'importer les précédentes erreurs.
Afin de retourver à quelle ressource FIM fait référence l'ObjectID, vous pouvez regarder cet article : Trouver la correspondance d'un ObjectID dans FIM
Après les phases d'importations, vous pouvez ré-ouvrir votre pare-feu sur le port 5725 ainsi que redémarrer le site IIS.
Troubleshooting
Une des problématique peut apparaître lorsque des MAs sont déjà présent dans le moteur de synchronisation de FIM. Dès lors, vous vous retrouverez avec un message d'erreur comme indiqué ci-dessous ou lors de l'importation des "policy", celles-ci ne trouvent pas les MAs. Dans mon cas, j'ai donc supprimer le MA FIMPORTAIL et je l'ai ré-importé via un Import Management Agent.
Le cas similaire se produit dans le cas ou vous faites uniquement une restauration de FIM Service (sans l'import de la configuration du moteur de synchronisation), il faudra la aussi supprimer manuellement le MA FIMPORTAIL et le ré-importer. Ces différentes étapes doivent bien entendues être validées au préalables sur un environnement de dev.
Le script CommitChanges_policy remonte une erreur car il ne trouve pas les différents MAs (33 erreurs).
Je supprime le MA FIM Service.
Je le ré-importe via l'Import Management Agent.
Je sélectionne le bon MA...
Je le configure par rapport à l'environnement cible (url et identifiant différents de l'environnement source par exemple).
...
J'exécute le script ResumeUndoneImports_policy. Les erreurs sont corrigées. Les erreurs restantes sont dûes aux spécificités de l'environnement en question tel que le compte de service utilisé pour le module PowerShell (compte présent dans le set Administrator dans mon cas).
Vous trouverez du contenu complémentaire ici : http://technet.microsoft.com/en-us/library/ff400269(v=ws.10).aspx
Bonne lecture, bon partage et n'hésitez pas à commenter...
Joris