26/05/2021
Ce troisième article a pour vocation de présenter une première approche sur la façon de personnaliser des images Docker afin de redéployer la plateforme avec des modifications.
Avant d'aller plus loin, il est fortement recommandé de lire notre article sur le déploiement de la plateforme ForgeRock Identity Platform en local ici
Partie 1: configuration de l'environnement
Partie 2: déploiement du CDK forgeops en local
Partie 3: personnalisation de la plateforme (c'est ici).
Cet article puise ces sources de la documentation ForgeRock, pour plus de détails visiter le lien suivant : https://backstage.forgerock.com/docs/forgeops/7/devops-develop.html#devops-data-profiles
Avant de pouvoir développer des images Docker personnalisées, il faut avoir déployé la plateforme d'identité ForgeRock et appris comment accéder à ses interfaces graphiques d'administration et à ses API REST. Lorsque la plateforme est configurée, il est possible de décider à tout moment de créer de nouvelles images Docker personnalisées qui incorporeront les modifications de configuration apportées.
Le développement d'images Docker personnalisées implique l'itération sur le processus suivant:
Accéder à AM et IDM exécutés dans le CDK et les personnaliser à l'aide de leurs interfaces graphiques et API REST.
Exporter les personnalisations du CDK vers l'ordinateur local .
Reconstruire les images Docker pour la plateforme avec les nouvelles modifications.
Redéployer la plateforme sur le CDK.
Pour développer des images Docker personnalisées, il faut commencer par des images de base et un profil de configuration de base(le profil est par défaut cdk) de ForgeRock. Ensuite, il faut créer un profil de configuration en personnalisant la plateforme afin de répondre aux besoins. Le profil de configuration est intégré dans l'image Docker personnalisée.
La variable d'environnement suivante sera nécessaire, il est évidemment fortement recommandé de la modifier afin de l' adapter à l'environnement de travail :
$ PATH_TO_FORGEOPS="/home/a3/forgeops"
L'image Docker "am" contient la configuration AM. C'est cette image qui permet lors du déploiement de la plateforme de mettre en place, avec une configuration adéquate, l'outil AM.
Exécuter la procédure suivante de manière itérative lors du développement d'une image Docker "am" personnalisée pour que l'outil corresponde aux besoins en question.
Modifier la configuration AM à l'aide de la console AM ou des API REST. Pour plus d'informations sur l'accès à l'interface utilisateur AM Admin ou aux API REST, consulter Services AM.
Il est possible de réaliser une modification légère pour s'assurer du bon fonctionnement de la personnalisation de la plateforme(qui se trouve dans l'état post-déploiement cf. fin article 2). Pour ce faire:
Aller dans la console AM
Créer un nouvel arbre d'authentification en cliquant sur Top Level Realm> Authentication trees> + Create Tree puis le nommer (dans notre cas: "TreeTest") et enregistrer.
Une page présentant l'arbre s'ouvre, l'arbre a donc été créé.
Exporter et sauvegarder les modifications apportées à la configuration AM vers le profil de configuration choisi qu'il faut créer au préalable dans l'emplacement suivant: "forgeops/config/7.0" (par exemple il est possible de créer un profil my-profile qui servira à stocker les images docker personnalisées).Pour ce faire, il faut exécuter les commandes suivantes:
NB: Dans le cas où nous avons besoin de plusieurs versions différentes de AM, configurées pour des besoins spécifiques. Il est possible tout simplement de donner un nom de profil différent (en remplacement de -- profile my-profile). En revanche, il faudra absolument créer le répertoire associé à l'emplacement suivant: "forgeops/config/7.0" de la même manière que le répertoire "my-profile" a été créé précédemment.
$ cd ${PATH_TO_FORGEOPS}/config/7.0
$ mkdir my-profile
$ cd ${PATH_TO_FORGEOPS}/bin
$ ./config.sh sync --profile my-profile --component am --version 7.0
La commande ./config.sh sync est celle qui permet d'exporter et sauvegarder les modifications, elle joue le rôle des commandes export et save. Dans notre cas de figure, l'argument my-profile correspond au profil avec lequel nous souhaitons synchroniser les modifications de configurations, l'argument am indique le composant que nous modifions et l'argument 7.0 précise la version de la plateforme. Pour plus d'informations sur l'utilisation et le fonctionnement du script ./config.sh il est possible de consulter la documentation forgeops hébergée sur git en cliquant ici.
Par ailleurs, l'exécution de la commande ./config.sh doit ressembler à ceci:
Exporting AM configuration..
config/services/realm/root/authenticationtreesservice/1.0/organizationconfig/default/treetest.json
Any changed configuration files have been exported into docker/7.0/am/config.
Check any changed files before saving back to the config folder to ensure correct formatting/functionality.
Saving AM configuration..
permettant ainsi de comprendre quels fichiers ont été modifiés et/ou ajoutés.
Réinitialiser la zone de transition (staging area) avec le profil de configuration choisi:
$ cd ${PATH_TO_FORGEOPS}/bin
$ ./config.sh init --profile my-profile --component am --version 7.0
Par précaution, il est recommandé de supprimer l'application avant de la relancer. En effet, des configurations non désirées et/ou des volumes persistants peuvent être conservés et donc poser problème pour le redéploiement. Pour ce faire, exécuter les commandes suivantes:
$ cd ${PATH_TO_FORGEOPS}
$ skaffold delete
$ kubectl delete pvc --all
Exécuter la commande skaffold run:
$ cd ${PATH_TO_FORGEOPS}
$ skaffold run
Skaffold crée une nouvelle image am Docker et redéploie AM.
NB: Pour rappel, skaffold s'utilise toujours dans le répertoire forgeops ou se trouve le fichier skaffold.yaml
Pour valider que AM a la configuration attendue, il faut démarrer la console et vérifier que les modifications de configuration sont présentes. Dans notre cas de figure, nous constatons que l'arbre est bien présent:
1. l'arbre TreeTest est bien présent.
Maintenant qu'on a validé la procédure en ajoutant un simple arbre d'authentification, on va faire une autre modification simple, l'ajout d'un realm.
Pour plus de détails, se référer aux instructions précédentes.
Se connecter à la console d'administration web de AM
Ensuite, grâce à la console AM, ajouter un simple realm dans le but de vérifier que la personnalisation fonctionne correctement (si celui-ci persiste lors du redéploiement). (note: on peut également faire ceci via les API). Pour ajouter un realm, il faut cliquer sur le bouton "+ New Realm" puis nommer le realm et enfin l'enregistrer. Une fois cette opération réalisée le realm apparaitra sur la page d'acceuil de la console.
Exécuter les commandes suivantes comme précédemment (en partant du principe que le répertoire my-profile est déjà crée) afin d'exporter et de sauvegarder la configuration:
$ cd ${PATH_TO_FORGEOPS}/config/7.0
$ cd ${PATH_TO_FORGEOPS}/bin
$ ./config.sh sync --profile my-profile --component am --version 7.0
$ ./config.sh init --profile my-profile --component am --version 7.0
$ cd ${PATH_TO_FORGEOPS}
$ skaffold delete
$ kubectl delete pvc --all
$ skaffold run
L'ajout d'un Realm est plus complexe que l'ajout d'un arbre. Lorsque la commande ./config.sh sync est exécutée, la configuration de la plateforme est exportée et sauvegardée dans deux répertoires principalement :
config/services/global/
config/services/realm/
les modifications suivantes ont été apportées:
config/services/global/realms/root-test.json
config/services/realm/root-test/accepttermsandconditionsnode.json
config/services/realm/root-test/accepttermsandconditionsnode/1.0.json
config/services/realm/root-test/accepttermsandconditionsnode/1.0/organizationconfig.json
config/services/realm/root-test/accepttermsandconditionsnode/1.0/organizationconfig/default.json
config/services/realm/root-test/accepttermsandconditionsnode/1.0/organizationconfig/default/b4a0e915-c15d-4b83-9c9d-18347d645976.json
config/services/realm/root-test/amdatastoreservice.json
config/services/realm/root-test/amdatastoreservice/1.0.json
config/services/realm/root-test/amdatastoreservice/1.0/organizationconfig.json
config/services/realm/root-test/amdatastoreservice/1.0/organizationconfig/default.json
config/services/realm/root-test/attributecollectornode.json
config/services/realm/root-test/attributecollectornode/1.0.json
config/services/realm/root-test/attributecollectornode/1.0/organizationconfig.json
config/services/realm/root-test/attributecollectornode/1.0/organizationconfig/default.json
config/services/realm/root-test/attributecollectornode/1.0/organizationconfig/default/0a042e10-b22e-4e02-86c4-65e26e775f7a.json
config/services/realm/root-test/attributecollectornode/1.0/organizationconfig/default/276afa7c-a680-4cf4-a5f6-d6c78191f5c9.json
config/services/realm/root-test/attributecollectornode/1.0/organizationconfig/default/9f1e8d94-4922-481b-9e14-212b66548900.json
config/services/realm/root-test/attributecollectornode/1.0/organizationconfig/default/d3ce2036-1523-4ce8-b1a2-895a2a036667.json
config/services/realm/root-test/attributepresentdecisionnode.json
config/services/realm/root-test/attributepresentdecisionnode/1.0.json
config/services/realm/root-test/attributepresentdecisionnode/1.0/organizationconfig.json
config/services/realm/root-test/attributepresentdecisionnode/1.0/organizationconfig/default.json
config/services/realm/root-test/attributepresentdecisionnode/1.0/organizationconfig/default/0f0904e6-1da3-4cdb-9abf-0d2545016fab.json
config/services/realm/root-test/authenticationtreesservice.json
config/services/realm/root-test/authenticationtreesservice/1.0.json
config/services/realm/root-test/authenticationtreesservice/1.0/organizationconfig.json
config/services/realm/root-test/authenticationtreesservice/1.0/organizationconfig/default.json
config/services/realm/root-test/authenticationtreesservice/1.0/organizationconfig/default/forgottenusername.json
config/services/realm/root-test/authenticationtreesservice/1.0/organizationconfig/default/login.json
config/services/realm/root-test/authenticationtreesservice/1.0/organizationconfig/default/progressiveprofile.json
config/services/realm/root-test/authenticationtreesservice/1.0/organizationconfig/default/registration.json
config/services/realm/root-test/authenticationtreesservice/1.0/organizationconfig/default/resetpassword.json
config/services/realm/root-test/authenticationtreesservice/1.0/organizationconfig/default/updatepassword.json
config/services/realm/root-test/createobjectnode.json
config/services/realm/root-test/createobjectnode/1.0.json
config/services/realm/root-test/createobjectnode/1.0/organizationconfig.json
config/services/realm/root-test/createobjectnode/1.0/organizationconfig/default.json
config/services/realm/root-test/createobjectnode/1.0/organizationconfig/default/ad5dcbb3-7335-49b7-b3e7-7d850bb88237.json
config/services/realm/root-test/datastoredecisionnode.json
config/services/realm/root-test/datastoredecisionnode/1.0.json
config/services/realm/root-test/datastoredecisionnode/1.0/organizationconfig.json
config/services/realm/root-test/datastoredecisionnode/1.0/organizationconfig/default.json
config/services/realm/root-test/datastoredecisionnode/1.0/organizationconfig/default/2998c1c9-f4c8-4a00-b2c6-3426783ee49d.json
config/services/realm/root-test/datastoredecisionnode/1.0/organizationconfig/default/7d1deabe-cd98-49c8-943f-ca12305775f3.json
config/services/realm/root-test/emailsuspendnode.json
config/services/realm/root-test/emailsuspendnode/1.0.json
config/services/realm/root-test/emailsuspendnode/1.0/organizationconfig.json
config/services/realm/root-test/emailsuspendnode/1.0/organizationconfig/default.json
config/services/realm/root-test/emailsuspendnode/1.0/organizationconfig/default/06c97be5-7fdd-4739-aea1-ecc7fe082865.json
config/services/realm/root-test/emailsuspendnode/1.0/organizationconfig/default/a3d97b53-e38a-4b24-aed0-a021050eb744.json
config/services/realm/root-test/emailsuspendnode/1.0/organizationconfig/default/d9a79f01-2ce3-4be2-a28a-975f35c3c8ca.json
config/services/realm/root-test/identifyexistingusernode.json
config/services/realm/root-test/identifyexistingusernode/1.0.json
config/services/realm/root-test/identifyexistingusernode/1.0/organizationconfig.json
config/services/realm/root-test/identifyexistingusernode/1.0/organizationconfig/default.json
config/services/realm/root-test/identifyexistingusernode/1.0/organizationconfig/default/21b8ddf3-0203-4ae1-ab05-51cf3a3a707a.json
config/services/realm/root-test/identifyexistingusernode/1.0/organizationconfig/default/bf9ea8d5-9802-4f26-9664-a21840faac23.json
config/services/realm/root-test/incrementlogincountnode.json
config/services/realm/root-test/incrementlogincountnode/1.0.json
config/services/realm/root-test/incrementlogincountnode/1.0/organizationconfig.json
config/services/realm/root-test/incrementlogincountnode/1.0/organizationconfig/default.json
config/services/realm/root-test/incrementlogincountnode/1.0/organizationconfig/default/97a15eb2-a015-4b6d-81a0-be78c3aa1a3b.json
config/services/realm/root-test/incrementlogincountnode/1.0/organizationconfig/default/bba3e0d8-8525-4e82-bf48-ac17f7988917.json
config/services/realm/root-test/innertreeevaluatornode.json
config/services/realm/root-test/innertreeevaluatornode/1.0.json
config/services/realm/root-test/innertreeevaluatornode/1.0/organizationconfig.json
config/services/realm/root-test/innertreeevaluatornode/1.0/organizationconfig/default.json
config/services/realm/root-test/innertreeevaluatornode/1.0/organizationconfig/default/33b24514-3e50-4180-8f08-ab6f4e51b07e.json
config/services/realm/root-test/innertreeevaluatornode/1.0/organizationconfig/default/b93ce36e-1976-4610-b24f-8d6760b5463b.json
config/services/realm/root-test/iplanetamauthamsterservice.json
config/services/realm/root-test/iplanetamauthamsterservice/1.0.json
config/services/realm/root-test/iplanetamauthamsterservice/1.0/organizationconfig.json
config/services/realm/root-test/iplanetamauthamsterservice/1.0/organizationconfig/default.json
config/services/realm/root-test/iplanetamauthconfiguration.json
config/services/realm/root-test/iplanetamauthconfiguration/1.0.json
config/services/realm/root-test/iplanetamauthconfiguration/1.0/organizationconfig.json
config/services/realm/root-test/iplanetamauthconfiguration/1.0/organizationconfig/default.json
config/services/realm/root-test/iplanetamauthconfiguration/1.0/organizationconfig/default/configurations.json
config/services/realm/root-test/iplanetamauthconfiguration/1.0/organizationconfig/default/configurations/amsterservice.json
config/services/realm/root-test/iplanetamauthconfiguration/1.0/organizationconfig/default/configurations/ldapservice.json
config/services/realm/root-test/iplanetamauthldapservice.json
config/services/realm/root-test/iplanetamauthldapservice/1.0.json
config/services/realm/root-test/iplanetamauthldapservice/1.0/organizationconfig.json
config/services/realm/root-test/iplanetamauthldapservice/1.0/organizationconfig/default.json
config/services/realm/root-test/iplanetamauthoathservice.json
config/services/realm/root-test/iplanetamauthoathservice/1.0.json
config/services/realm/root-test/iplanetamauthoathservice/1.0/organizationconfig.json
config/services/realm/root-test/iplanetamauthoathservice/1.0/organizationconfig/default.json
config/services/realm/root-test/iplanetamauthservice.json
config/services/realm/root-test/iplanetamauthservice/1.0.json
config/services/realm/root-test/iplanetamauthservice/1.0/organizationconfig.json
config/services/realm/root-test/iplanetamauthservice/1.0/organizationconfig/default.json
config/services/realm/root-test/iplanetampolicyconfigservice.json
config/services/realm/root-test/iplanetampolicyconfigservice/1.0.json
config/services/realm/root-test/iplanetampolicyconfigservice/1.0/organizationconfig.json
config/services/realm/root-test/iplanetampolicyconfigservice/1.0/organizationconfig/default.json
config/services/realm/root-test/kbacreatenode.json
config/services/realm/root-test/kbacreatenode/1.0.json
config/services/realm/root-test/kbacreatenode/1.0/organizationconfig.json
config/services/realm/root-test/kbacreatenode/1.0/organizationconfig/default.json
config/services/realm/root-test/kbacreatenode/1.0/organizationconfig/default/120c69d3-90b4-4ad4-b7af-380e8b119340.json
config/services/realm/root-test/logincountdecisionnode.json
config/services/realm/root-test/logincountdecisionnode/1.0.json
config/services/realm/root-test/logincountdecisionnode/1.0/organizationconfig.json
config/services/realm/root-test/logincountdecisionnode/1.0/organizationconfig/default.json
config/services/realm/root-test/logincountdecisionnode/1.0/organizationconfig/default/8afdaec3-275e-4301-bb53-34f03e6a4b29.json
config/services/realm/root-test/pagenode.json
config/services/realm/root-test/pagenode/1.0.json
config/services/realm/root-test/pagenode/1.0/organizationconfig.json
config/services/realm/root-test/pagenode/1.0/organizationconfig/default.json
config/services/realm/root-test/pagenode/1.0/organizationconfig/default/0c091c49-f3af-48fb-ac6f-07fba0499dd6.json
config/services/realm/root-test/pagenode/1.0/organizationconfig/default/20237b34-26cb-4a0b-958f-abb422290d42.json
config/services/realm/root-test/pagenode/1.0/organizationconfig/default/5e2a7c95-94af-4b23-8724-deb13853726a.json
config/services/realm/root-test/pagenode/1.0/organizationconfig/default/a12bc72f-ad97-4f1e-a789-a1fa3dd566c8.json
config/services/realm/root-test/pagenode/1.0/organizationconfig/default/a5aecad8-854a-4ed5-b719-ff6c90e858c0.json
config/services/realm/root-test/pagenode/1.0/organizationconfig/default/cc3e1ed2-25f1-47bf-83c6-17084f8b2b2b.json
config/services/realm/root-test/pagenode/1.0/organizationconfig/default/d018fcd1-4e22-4160-8c41-63bee51c9cb3.json
config/services/realm/root-test/pagenode/1.0/organizationconfig/default/e4c752f9-c625-48c9-9644-a58802fa9e9c.json
config/services/realm/root-test/patchobjectnode.json
config/services/realm/root-test/patchobjectnode/1.0.json
config/services/realm/root-test/patchobjectnode/1.0/organizationconfig.json
config/services/realm/root-test/patchobjectnode/1.0/organizationconfig/default.json
config/services/realm/root-test/patchobjectnode/1.0/organizationconfig/default/3990ce1f-cce6-435b-ae1c-f138e89411c1.json
config/services/realm/root-test/patchobjectnode/1.0/organizationconfig/default/423a959a-a1b9-498a-b0f7-596b6b6e775a.json
config/services/realm/root-test/patchobjectnode/1.0/organizationconfig/default/989f0bf8-a328-4217-b82b-5275d79ca8bd.json
config/services/realm/root-test/queryfilterdecisionnode.json
config/services/realm/root-test/queryfilterdecisionnode/1.0.json
config/services/realm/root-test/queryfilterdecisionnode/1.0/organizationconfig.json
config/services/realm/root-test/queryfilterdecisionnode/1.0/organizationconfig/default.json
config/services/realm/root-test/queryfilterdecisionnode/1.0/organizationconfig/default/a1f45b44-5bf7-4c57-aa3f-75c619c7db8e.json
config/services/realm/root-test/services.json
config/services/realm/root-test/sessiondatanode.json
config/services/realm/root-test/sessiondatanode/1.0.json
config/services/realm/root-test/sessiondatanode/1.0/organizationconfig.json
config/services/realm/root-test/sessiondatanode/1.0/organizationconfig/default.json
config/services/realm/root-test/sessiondatanode/1.0/organizationconfig/default/d1b79744-493a-44fe-bc26-7d324a8caa4e.json
config/services/realm/root-test/sunamauthdatastoreservice.json
config/services/realm/root-test/sunamauthdatastoreservice/1.0.json
config/services/realm/root-test/sunamauthdatastoreservice/1.0/organizationconfig.json
config/services/realm/root-test/sunamauthdatastoreservice/1.0/organizationconfig/default.json
config/services/realm/root-test/sunamauthfederationservice.json
config/services/realm/root-test/sunamauthfederationservice/1.0.json
config/services/realm/root-test/sunamauthfederationservice/1.0/organizationconfig.json
config/services/realm/root-test/sunamauthfederationservice/1.0/organizationconfig/default.json
config/services/realm/root-test/sunamauthhotpservice.json
config/services/realm/root-test/sunamauthhotpservice/1.0.json
config/services/realm/root-test/sunamauthhotpservice/1.0/organizationconfig.json
config/services/realm/root-test/sunamauthhotpservice/1.0/organizationconfig/default.json
config/services/realm/root-test/sunamauthsaeservice.json
config/services/realm/root-test/sunamauthsaeservice/1.0.json
config/services/realm/root-test/sunamauthsaeservice/1.0/organizationconfig.json
config/services/realm/root-test/sunamauthsaeservice/1.0/organizationconfig/default.json
config/services/realm/root-test/sunamdelegationservice.json
config/services/realm/root-test/sunamdelegationservice/1.0.json
config/services/realm/root-test/sunamdelegationservice/1.0/organizationconfig.json
config/services/realm/root-test/sunamdelegationservice/1.0/organizationconfig/default.json
config/services/realm/root-test/sunidentityrepositoryservice.json
config/services/realm/root-test/sunidentityrepositoryservice/1.0.json
config/services/realm/root-test/sunidentityrepositoryservice/1.0/organizationconfig.json
config/services/realm/root-test/sunidentityrepositoryservice/1.0/organizationconfig/default.json
config/services/realm/root-test/sunidentityrepositoryservice/1.0/organizationconfig/default/opendj.json
config/services/realm/root-test/validatedpasswordnode.json
config/services/realm/root-test/validatedpasswordnode/1.0.json
config/services/realm/root-test/validatedpasswordnode/1.0/organizationconfig.json
config/services/realm/root-test/validatedpasswordnode/1.0/organizationconfig/default.json
config/services/realm/root-test/validatedpasswordnode/1.0/organizationconfig/default/009c19c8-9572-47bb-adb2-1f092c559a43.json
config/services/realm/root-test/validatedpasswordnode/1.0/organizationconfig/default/0c80c39b-4813-4e67-b4fb-5a0bba85f994.json
config/services/realm/root-test/validatedpasswordnode/1.0/organizationconfig/default/21a99653-a7a7-47ee-b650-f493a84bba09.json
config/services/realm/root-test/validatedpasswordnode/1.0/organizationconfig/default/3d8709a1-f09f-4d1f-8094-2850e472c1db.json
config/services/realm/root-test/validatedpasswordnode/1.0/organizationconfig/default/fe2962fc-4db3-4066-8624-553649afc438.json
config/services/realm/root-test/validatedusernamenode.json
config/services/realm/root-test/validatedusernamenode/1.0.json
config/services/realm/root-test/validatedusernamenode/1.0/organizationconfig.json
config/services/realm/root-test/validatedusernamenode/1.0/organizationconfig/default.json
config/services/realm/root-test/validatedusernamenode/1.0/organizationconfig/default/7354982f-57b6-4b04-9ddc-f1dd1e1e07d0.json
config/services/realm/root-test/validatedusernamenode/1.0/organizationconfig/default/7fcaf48e-a754-4959-858b-05b2933b825f.json
config/services/realm/root/iplanetamplatformservice/1.0/globalconfig/default/com-sun-identity-servers/server-default.json
En effet, ces modifications et ces ajouts de fichiers s'y font dans les répertoires susmentionnés que ce soit dans la staging area mais aussi dans le répertoire "my-profile" (comme nous l'avons eu dans l'article 2). Par la suite, grâce à la commande ./config.sh init la zone de transition est réinitialisée, ce qui permettra de redéployer la plateforme correctement. En effet, comme nous avons pu déjà le mentionner, la plateforme est déployée depuis la staging area.
Une fois le redéploiement effectué (cf. étape 5. plus haut) la plateforme a bien conservé son état modifié comme nous pouvons le voir dans la capture suivante:
2. la personnalisation est effective après le redéploiement
L'application est maintenant redéployée tout en étant personnalisée. Il est donc possible de la manipuler afin qu'elle corresponde à des besoins spécifiques. En cas de problème, il est possible de consulter la section CDK troubleshooting de ForgeRock.
Pour arrêter et supprimer l'application, consulter cette section.
Cette suite d'articles nous a donc permis d'appréhender l'environnement forgeops CDK de ForgeRock d'une part mais aussi de savoir comment le déployer et l'utiliser d'autre part.
À partir du git de forgeops, nous avons configuré l'environnement dans un contexte conteneurisé de façon a pouvoir le déployer.
Une fois configurée, nous avons déployé la plateforme en initialisant la "staging area".
Une fois la plateforme fonctionnelle et opérationnelle nous avons manipulé et modifié celle-ci dans le but de personnaliser des images Docker pour faire correspondre la plateforme à des besoins spécifiques.
Une prochaine fois, nous nous lancerons dans une nouvelle aventure… celle de la mise en place du CDM ForgeRock.
Joie et bonheur.
Vos commentaires sont les bienvenus sur linkedin.
Avner-Acher Altit