- Ansible
- Docker CE
- NodeJs
yarn
npx husky init
cp .env .env.local
(remplir les variables affectées par "A_REMPLIR")yarn start:db
(il se peut que le container Kafka ne se lance pas du premier coup, le relancer)yarn load_referentiels
yarn dev
- Le code source
- Swagger api-rest-referentiels
- Swagger api-rest-expositiondonneesentrees
- Swagger api-event-calculs
Demander à Nathalie Baudiniere pour avoir accès à la VM OVH, il faudra donner une clé SSH publique.
Pour se connecter sur la VM OVH :
ssh ubuntu@eval-carbone-sih.esante.gouv.fr
Tout se fait avec les recettes Ansible se trouvant dans /infra
.
Récupérer le fichier .env.prod
sur la machine en question.
Puis :
ansible-galaxy collection install community.docker
yarn deploy:backend
(joué la première fois ou lors d'une mise à jour)yarn deploy:reverse-proxy
(joué la première fois ou lors d'une mise à jour)- Les fichiers crt et key peuvent être récupérés sur la VM ou en demandant à Nathalie Baudiniere
yarn deploy:referential
(joué la première fois ou lors d'une mise à jour)
En étant connecté sur la VM OVH avec ssh
, il suffit de lancer les commandes suivantes :
# se placer dans le bon répertoire
cd /home/ubuntu/
# relancer le reverse proxy (nginx)
docker compose --file docker-compose-reverse-proxy.yml up -d --force-recreate
# relancer les conteneurs du front NumEcoEval
docker compose --file docker-compose-front.yml --env-file .env.prod --env-file .env.version up -d --force-recreate
# relancer les conteneurs du backend NumEcoEval
docker compose up -d --force-recreate
C4Context
title EvalCarbone SIH
Person(dsi, "DSI hospitalier")
Boundary(ovh, "VM OVH") {
Boundary(reverse-proxy, "Reverse proxy") {
Container(reverse-proxy, "Reverse proxy", "Nginx")
}
Boundary(eval-carbone-sih, "EvalCarbone SIH") {
Container(front, "Frontend", "NextJs")
}
Boundary(num-eco-eval, "NumEcoEval") {
ContainerDb(db, "Database", "PostgreSQL")
Container(expositiondonneesentrees, "api-rest-expositiondonneesentrees", "Java")
Container(referentiels, "api-rest-referentiels", "Java")
Container(donneesentrees, "api-event-donneesentrees", "Java")
Container(calculs, "api-event-calculs", "Java")
Container(kafka, "Kafka", "kafka")
Container(zookeeper, "Zookeeper", "zookeeper")
}
}
BiRel(dsi, reverse-proxy, "")
BiRel(kafka, zookeeper, "")
Rel(expositiondonneesentrees, db, "write")
BiRel(front, db, "write and read")
BiRel(reverse-proxy, front, "")
Rel(front, expositiondonneesentrees, "use", "Lancer le calcul et ajouter les équipements physiques")
La clé SSH privée (créée plus haut) doit être mise sur GitHub dans les settings.
Plage est le service d'authentification.
A savoir lors d'une mise à jour des référentiels au format CSV :
- Les identifiants doivent être exactement les même, aucune typo (majuscule, caractère accentué,…), pas d'espaces en trop…
- Séparateur ";"
- Écrire les (types) équipements dans le même ordre
- La mise à jour de NumEcoEval peut être douloureuse parce que
- la plupart des appels se font directement sur la base de données (suppression, modification...) car les routes n'existent pas
- il se peut que la base de données aura changé donc il faudra réécrire le front
- Idéalement, il faudrait utiliser le SaaS du Ministère de la Transition Ecologique (qui n'est pas encore en ligne à ce jour) et retirer la brique NumEcoEval mais voir le point numéro 1
- Avoir un système de monitoring de la base de données pour pouvoir la mettre à l'échelle s'il y a trop de données et pourrait faire ralentir l'application à long terme
- La base de données doit avoir un système de sauvegarde régulier au cas où la VM d'OVH doit être reconstruite