-
Mathieu Leguay authored
- Update PKI scripts: Restructuring scripts on an overload strategy - Renew PKI dev (missing CA, useful when we need to connect vitamui to others applications) - Update application assets according to the new dev PKI - Add/update readme
17db9bce
En Développement
Ce projet est en développement.
Pre-requis
Disposer à minima de 8GO de RAM et de 20 GO de disk
Centos - Installer docker en dernière version de docker engine
sudo yum check-update
curl -fsSL https://get.docker.com/ | sh
sudo systemctl start docker
sudo systemctl status docker
sudo systemctl enable docker (to start automatically)
Lancement des services Mongo avec docker
Pour lancer Mongo exécuter la commande :
./start_XXX.sh
Cette commande permet de démarrer les containers et de lancer les services Mongo.
Arrêt des services Mongo avec docker
Pour arrêter les services Mongo exécuter la commande :
./stop_XXX.sh
Aucune donnée n'est sauvegardée à l'arrêt de la base.
Suppression du container Mongo
Pour détruire le container vitamui-mongo :
docker rm vitamui-mongo
Ajouter un utilisateur Admin pour mongo
$ docker exec -it vitamui-mongo mongo admin connecting to: admin
> db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
Successfully added user: {
"user" : "jsmith",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
Initialisation de la base Mongo
Afin de mutualiser le code et les scripts Mongo exploités en developpement ou lors du déploiement sur un environnement, l'intelligence a été répartie de la manière suivante:
- Les scripts Mongo figurent à l'emplacement suivant: ~/tools/docker/mongo/database_scripts
- Le role Ansible d'initialisation figure à l'emplacement suivant: ~/deployment/roles/mongo_init
Le role d'initialisation de la base de données a plusieurs fonctionnalités: ordonnancement des scripts, templatage et versioning.
Templatage des scripts de DB
La structure du dossier database_scripts est simple:
> database_scripts
> 0.0.0
> 01_script.js
> 02_script.js
> 0.1
> 1.0
> 1.0.5
> 1.0.10
Deux niveaux de répertoires sont pris en compte:
-
1er niveau: la version de l'application
Lors du templatage, un premier tri par version est exécutée afin de trier ces dernières par ordre croissante.
-
2ème niveau: les scripts à exécuter par version
Lors du templatage, les scripts sont triés par ordre d'index (X_nomDuScript) afin d'assurer l'ordonnacement de l'exécution des scripts. Si aucun index n'est renseigné, l'ordre alphabétique s'applique.
Par convention, les catégories d'indexes sont:
- 0-99: scripts de référence à passer quelque soit les environnements
- 100-199: scripts de démo
- 200-299: Scripts de developpement.
Les scripts de templatage utilisés sont ceux du déploiement. Lors du packaging du projet, l'ensemble des scripts est copié et intégré à l'archive de déploiement.
Afin d'injecter les bonnes valeurs aux variables des templates, le fichier mongo_vars_dev.yml est présent.
Afin d'intégrer une surcharge extérieure des variables par défaut, il est possible de renseigner le chemin d'un autre fichier de variable à travers la variable d'environnements ADDITIONNAL_VITAMUI_CONFIG_FILE. Attention, toute variable définie dans ce fichier additionnel écrasera la valeur existante.
Versionning des scripts Mongo
Avant l'exécution d'un script, on vérifie que ce dernier a été exécuté. Pour ce faire, nous nous basons sur deux éléments:
- le nom du fichier
- le checkum du fichier
Lors de l'initialisation de la base de données, la base de données versioning est créée et la collection suivante est initialisée:
Changelog {
id: Identifiant interne mongo
filename: nom du fichier
date: date d'éxécution du script
version: version de l'application associée au script
checksum: hash du fichier
}
Avant l'exécution de chaque script, on effectue une recherche d'exécution (sur les champs filename et checksum):
- si le script a déjà été exécutée, aucun action n'est effectuée
- si le script n'a pas été exécuté, ce dernier est exécuté et une entrée est rajoutée dans la collection changelog
Toute erreur lors du processus entraine l'arrêt de l'initialisation de la base Mongo
Dans le cas d'une migration d'une version de VitamUI précédent le versioning, il suffit de définir la variable Ansible mock_insert_data. Dans le cas présent, l'ensemble des scripts seront joués mais non exécutées, seules les entrées dans la collection changelog seront ajoutées.
Coloration syntaxique intellij
Si vous utilisez un IDE intellij, le plugin suivant vous offrera la coloration syntaxique adequate ainsi que quelques fonctionnalité de https://plugins.jetbrains.com/plugin/7792-yaml-ansible-support