You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.9 KiB
ReStructuredText
84 lines
2.9 KiB
ReStructuredText
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`
|