Skip to content

ansforge/Eval-Carbone-SIH

Repository files navigation

EvalCarbone SIH

Prérequis

  • Ansible
  • Docker CE
  • NodeJs

Installation locale

  • 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

NumEcoEval

Installation OVH

Demander à Nathalie Baudiniere pour avoir accès à la VM OVH, il faudra donner une clé SSH publique.

Pour se connecter sur la VM OVH :

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)

Procédure de secours pour relancer les conteneurs

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

Schéma de la production

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")
Loading

Configuration GitHub

La clé SSH privée (créée plus haut) doit être mise sur GitHub dans les settings.

Configuration Plage

Plage est le service d'authentification.

Les référentiels

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

Points d'attention pour le futur

  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages