Compare commits

..

10 Commits

2
.gitignore vendored

@ -0,0 +1,2 @@
.venv
build/*

@ -5,6 +5,9 @@ Forme des datas
------------------
.. image:: img/exemple_parchemin_acte.jpg
:align: center
*Actes du duc Charles I*\ :sup:`er` *de Bourbon du 8 décembre 1425, conservé aux Archives départementales de la Côte-d'Or (B 299, pièce scellée 338)*.
Les données du projet *Actes princiers au royaume de France* sont des actes médiévaux - c'est-à-dire des documents qui fondent un droit pour une personne physique ou morale - émis par des princes de la fin de Moyen Âge. Ces princes sont des membres de la famille du roi de France (Orléans, Anjour, Berry, Bourgogne, Alençon, Bourbon) ou des grands feudataires (Bretagne, Savoie, Albret, Armagnac).
@ -85,7 +88,7 @@ Identifiants
.. index:: Albret, Alençon, Armagnac, Berry, Bourbon, Bourgogne, Bretagne, Orléans, Savoie
- Chaque maison princière a un identifiant :
- Chaque maison princière a un identifiant :
.. list-table:: Identifiants des maisons princières
:widths: 25 25
@ -96,7 +99,7 @@ Identifiants
* - Albret
- alb
* - Alençon
- alb
- alc
* - Anjou
- anj
* - Armagnac
@ -124,63 +127,107 @@ Identifiants
:widths: 25 25
:header-rows: 1
* - Prénom
* - Prénom
- Code
* - Alain
- al
* - Amédée
- am
* - Arthur
- ar
* - Bernard
- be
* - Charles
- ch
* - Édouard
- ed
* - François
- fr
* - Jean
- je
* - Louis
- lo
* - Philippe
- ph
* - Pierre
- pi
* - René
- re
* - Anne
- ann
* - Agnès
- agn
* - Béatrice
- bea
* - Blanche
- bla
* - Bonne
- bon
* - Catherine
- cat
* - Françoise
- fra
* - Isabelle
- isa
* - Jeanne
- jea
* - Alain
- al
* - Amédée
- am
* - Arthur
- ar
* - Bernard
- be
* - Charles
- ch
* - Édouard
- ed
* - François
- fr
* - Jean
- je
* - Louis
- lo
* - Philippe
- ph
* - Pierre
- pi
* - René
- re
* - Anne
- ann
* - Agnès
- agn
* - Béatrice
- bea
* - Blanche
- bla
* - Bonne
- bon
* - Catherine
- cat
* - Françoise
- fra
* - Isabelle
- isa
* - Jeanne
- jea
* - Marguerite
- mag
* - Marie
- mar
* - Yolande
- yol
- mag
* - Marie
- mar
* - Yolande
- yol
* - Isabelle
- isa
- Chaque prince ou princesse a un numéro d'ordre, en romain minuscule : `i`, `ii`, `iii`, `iv`, etc.
- Chaque prince ou princesse a un numéro d'ordre, en romain minuscule : `i`, `ii`, `iii`, `iv`, etc.
- L'identifiant des actes (`@xml:id` de `<TEI>`) est composé des trois éléments séparés d'un underscore et suivi de la date et d'une lettre.
- Actes de Charles Ier de Bourbon du 28 août 1427 : `brb_ch_i_1427_08_24a`.
Les fichiers CSV de corpus
--------------------------
- Les actes princiers sont décrits dans des CSV. Chaque CSV correspond à un prince ou une princesse.
- Les colonnes des CSV sont :
.. list-table:: Colonnes des CSV
:widths: 15 30
:header-rows: 1
* - Colonne
- Contenu
* - ACTE_ID
- identifiant de l'acte
* - NUM
- numérotation de l'acte (*utile dans le CSV uniquement*)
* - INSTITUTION
- institution de conservation de l'acte
* - IDNO1
- série de l'acte dans l'institution de conservation
* - IDNO2
- cote de l'acte dans l'institution de conservation
* - ETAT
- état de l'acte
* - TYPE DIPLOMATIQUE
- type diplomatique de l'acte
* - ANNEE
- année d'écriture de l'acte
* - DATE
- date de l'acte *telle qu'elle est écrite dans le XML*
* - DATE_MODIFIEE
- date de l'acte au format `YYYY, DD MM`
* - LIEU
- lieu de production de l'acte
* - PRINCE
- individus ayant émis l'acte (séparés par `+++`)
* - SIGNATAIRE
- individus ayant signé l'acte (séparés par `$$$`)
* - LANGUE
- langue de rédactino de l'acte
Les fichiers XML
----------------
@ -202,7 +249,7 @@ Les fichiers XML
- le `<listPerson>` contient l'identité des individus ayant émis (princes ou pricnesses) et signé (princes, princesses ou secrétaires) l'acte ;
- le `<listWit>` contient le tableau de la tradition de l'acte, c'est-à-dire la liste de l'ensemble des exemplaires connus du document ;
- le `<listWit>` contient le tableau de la tradition de l'acte, c'est-à-dire la liste de l'ensemble des exemplaires connus du document. Des notes critiques (`<note>`) peuvent s'y trouver : *cf. supra* ;
- le `<listPlace>` contient la localisation de l'acte avec des coordonnées géographiques.
@ -234,44 +281,11 @@ Les fichiers XML
- Une ou plusieurs signatures dans une ou des `<div>` de troisième niveau (avec `@type="sign"`).
Les fichiers CSV de corpus
--------------------------
- Des notes (`<note>`) peuvent également être ajoutées :
- Les actes princiers sont décrits dans des CSV. Chaque CSV correspond à un prince ou une princesse.
- Les notes paléographiques concernent l'écriture de l'acte : `<note type="paleo">` ;
- Les colonnes des CSV sont :
.. list-table:: Colonnes des CSV
:widths: 15 30
:header-rows: 1
- Les notes critiques contextualisent ou explicitent un élément de l'édition, qu'il soit situé dans l'analyse, le tableau de la tradition ou le texte de l'acte : `<note type="bp">` (`bp` pour *bas de page*).
* - Colonne
- Contenu
* - ACTE_ID
- identifiant de l'acte
* - NUM
- numérotation de l'acte (*utile dans le CSV uniquement*)
* - INSTITUTION
- institution de conservation de l'acte
* - IDNO1
- série de l'acte dans l'institution de conservation
* - IDNO2
- cote de l'acte dans l'institution de conservation
* - ETAT
- état de l'acte
* - TYPE DIPLOMATIQUE
- type diplomatique de l'acte
* - ANNEE
- année d'écriture de l'acte
* - DATE
- date de l'acte *telle qu'elle est écrite dans le XML*
* - DATE_MODIFIEE
- date de l'acte au format `YYYY, DD MM`
* - LIEU
- lieu de production de l'acte
* - PRINCE
- individus ayant émis l'acte (séparés par `+++`)
* - SIGNATAIRE
- individus ayant signé l'acte (séparés par `$$$`)
* - LANGUE
- langue de rédactino de l'acte
.. image:: img/encodage_acte_total.png
:align: center

@ -0,0 +1,83 @@
Déploiement
=============
Le dossier `deployment/roles` contient des *roles*, c'est-à-dire des élément d'installation exécutés par ansible sur le serveur. Le fichier `playbook.yml` définit l'ordre dans lequel ansible lance les roles.
- `common` installe le paquet debian.
- `nginx` installe le reverse proxy.
- `certbot` ajoute le certificat https.
- `archive` :
- lance la commande git archive qui crée un tar.gz à partir du dossier de la webapp ;
- met cette archive dans `deployment/roles/archive/files` ;
- copie l'archive dans le dossier `opt` du serveur ;
- extraie l'archive dans le serveur : le code de la webapp est donc copiée dans le serveur.
- `pip` installe les librairies Python nécessaires sur le serveur.
- `run` lance l'application Flask.
- `mongodb` installe mongodb sur le serveur.
L'activation de l'ensemble des roles est automatisée avec le script `run_playbook.sh`.
Procédure d'installation
------------------------
1. Dans `princevault`, *activer le venv* :
- faire le decrypt : `./vault decrypt` ;
- ajouter la clef ssh : `ssh-keygen -f "<PATH>/.ssh/known_hosts" -R "<SITE>"`, `ssh-copy-id -i <PATH>/.ssh/id_ed25519.pub debian@<SITE>`.
2. Dans `webapp` :
- copier/coller le param.yaml de `princevault` et le renommer.
- pour livrer une version de la webapp il faut créer un tag : `git checkout main`, `git merge develop`, `git tag -a <nom du tag> -m "<message>"`.
3. Dans `deployment`, *activer le venv* :
- copier/coller le main.yml de `princevault/deployment` dans `deployment/group_vars/all`, le renommer et vérifier que le bon tag est renseigner dans `application_release_tag`.
- lancer le playbook (`./install.sh`), qui lance les rôles :
- Rôle common. `deployment/roles/common/tasks/main.yml` : installation et mise à jour du système et des outils. (cron renouvelle le certificat https)
- Rôle ngnx. `deployment/roles/nginx/tasks/main.yml` : compléter les fichiers de `/etc/nginx/sites-enabled/`. Pour ajouter une autre appli, faire une variable `domain2`.
- Rôle certbot.
- Rôle archive.
- Rôle pip.
- Rôle mongodb.
4. Dans `datascience`, *activer le venv* :
- copier/coller le param.yml de `princevault/datascience` dans `datascience/actes-princiers/conf/local`
- installer les librairies : `pip install -r ./actes-princiers/src/requirements.txt`
- récupéer les dernières données : `./data_registry_update.sh`
- effacer le contenu de 02_intermediate`./clean_intermediate_data.sh`
- dans `datascience/actes-princiers` : `kedro run --tags="etl_transform"`
- (scp -r datascience/ <user>@<domain>:~/)
- `kedro run --tags="populate_database"`
5. Dans `deployment`, *activer le venv* :
- Lancement de l'application (`launch_playbook.yml`) avec `./launch_application.sh`
7. Publier l'application en cas de mise à jour : `deployment/publish.sh`

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@ -9,7 +9,9 @@ Le projet de recherche « Actes princiers au royaume de France (XII\ :sup:`e`-XV
data
pipeline_actes_princiers
install
secrets
coding_standards
deploiement
.. rubric:: Index

@ -0,0 +1,32 @@
Gestion des informations d'identification
=============================================
:keywords: credentials, secrets, vault
En anglais : les *credentials*, ou d'une manière plus générale, les *secrets*.
Deux méthodes sont utilisées dans le projet, suivant que les informations
sensibles sont contenues dans un (ou des) fichier(s) centralisés ou bien que
les informations sensibles sont, de par la nature du projet, réparties dans tout le projet.
- Le fichier non inclus dans le dépôt. C'est la méthode la plus simple,
on utilise le fichier `.gitignore` du projet ;
- Dans les cas où les variables sont disséminées, on utilise un :term:`coffre`
pour chifrer et déchiffrer (encrypt and decrpyt) les fichiers sensibles.
Typiquement dans un projet de déploiement basé sur ansible, les variables de configuration et les variables sensibles sont réparties dans les différents :term:`rôles`, dans ce cas la méthode de chiffrement est préférable.
.. note:: cette méthode est à utiliser de préférence aussi
si on utilise des conteneurs (ex: docker), c'est la méthode utilisée
par les différents orchestrateurs de conteneur (ex: kubernetes).
.. glossary::
coffre
Un coffre fort virtuel est un endroit où sont placé les fichiers sensibles, ou bien simplement une manière de chiffrer ces fichiers sensibles.
rôles
Les rôles ansibles sont des morceaux cohérents de configuration, par exemple si on installe un serveur web sur une machine cible, l'étape de configuration du https avec let's encrypt est une étape autonome qui peut être isolée.
L'intérêt est de pouvoir mieux lire les différentes étapes de l'installation de la machine cible.
Loading…
Cancel
Save