From 1c344e03c3396f77b01fefcd778aa9a25be6666e Mon Sep 17 00:00:00 2001 From: yohann Date: Wed, 7 Apr 2021 11:45:58 +0200 Subject: [PATCH] update project definition --- readme.md | 58 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/readme.md b/readme.md index b5ac3ac..042932b 100644 --- a/readme.md +++ b/readme.md @@ -2,35 +2,25 @@ #### Objectif: Automatisation de déploiement -L'objectif est d'automatiser des déploiements à l'aide de playbook Ansible et de son écosystème +L'objectif est d'automatiser des déploiements à l'aide de playbook Ansible et de son écosystème -Ce projet devra comprendre un: +Ce projet devra comprendre un : - Déploiement serveur - - Déploiement applicatif + - Déploiement applicatif #### Groupe ou individuel: -Ce projet peut se faire en groupe (de 2/3/4 personnes) ou individuellement +Ce projet peut se faire en binôme ou individuellement #### Consignes: -- Le projet doit être mis sur un repository dans le [gitlab](https://forge.univ-lyon1.fr) de l'université. - - Le nom du repository devra être sous la forme: LP - DevOps - 2020 - ansible - Grp* - **** - * +- Le projet doit être mis sur un repository dans le [gitlab](https://forge.univ-lyon1.fr) de l'université. + - Le professeur doit être ajouté en tant que `owner` aux membres du repository - Exemple: `LP - DevOps - 2020 - ansible - Grp2 - Python - 2` - - - Grp* pour le numéro du groupe - - **** pour la technologie applicative utilisée (php / java / python / dotnet) - - * pour un numéro de sous groupe (1/2/3/4) si besoin - - - Le professeur doit être ajouté en tant que `owner` aux membres du - - -- Un readme doit être présent dans le projet avec les rubriques suivantes: +- Un readme doit être présent dans le projet avec les rubriques suivantes : - Liste des étudiants. - Comportant: nom - prénom - numéro étudiant - - Les clés ssh de connexion: - - aux serveurs openstack + - Les clés ssh de connexion : + - aux serveurs openstack (VM) - aux repositories gitlab - - Les technologies utilisées. - La liste des `roles` (si utilisés). - La liste des commandes à utiliser. Ceux-ci pourront aussi être présents dans un makefile @@ -38,20 +28,32 @@ Ce projet peut se faire en groupe (de 2/3/4 personnes) ou individuellement #### Architecture/Environnement -L'architecture doit permettre le déploiement au minimun sur des environnements de: +L'architecture doit permettre le déploiement sur des environnements de : - preprod -- prod +- prod #### Serveur -Il doit être possible de déployer les types suivants (séparement ou "all-in-one"): - - web - - base de données - - applicatif +Il doit être possible de déployer les parties suivantes (séparément ou "all-in-one") : + - serveur web (nginx) + - base de données (mariadb) + - applicatif (php / composer / git / nodejs ) #### Applicatif La stratégie de déploiement doit permettre du `atomic deployments` +> **Atomic deployments** are a style of code deployment that symlink the most recent version of the code +> so it’s available to the web server to serve. + +> **Atomic deployment** – Make updates available only when they are complete and totally in place. + +- Ressource pour en savoir plus sur l'atomic deployemnt + - https://deploybot.com/blog/deploy-complex-apps-with-atomic-sftp-deployments (lire les 3 premières parties) + - https://www.ewaldvanderveken.dev/zero-downtime-deployment-of-your-symfony-project-using-capistrano-and-gitlab-ci/ (lire la première partie) + +- Module ansible utilisable: + - https://docs.ansible.com/ansible/2.9/modules/deploy_helper_module.html + ``` -- /var/www/my-app.com |-- current -> /var/www/my-app.com/releases/20200512131539 @@ -65,14 +67,14 @@ La stratégie de déploiement doit permettre du `atomic deployments` - L'applicatif doit comporter un connexion à la base de données Chaque environnement doit avoir sa propre base de données avec un user et un mot de passe différent. -- L'applicatif doit permet d'afficher sur une page internet un message. +- L'applicatif doit permet d'afficher un titre de blog différent par environnement. Exemple: -`Bonjour je suis 'staging' sur l'ip: 192.168.140.67. Je me connecte sur la base de données 'db_staging' avec le user 'user_staging'` +Symfony blog - preprod #### Conseils - Un code organiser/structurer, tu feras - Sur une/des nouvelle(s) machine(s) (hôte/VM), le professeur lancera - sans erreur, les playbooks seront #### Bonus -- Des tests applicatifs pourront être lancés via un playbook (phpunit, junit, unittest, xUnit.net,...) +- Des tests applicatifs pourront être lancés via un playbook (phpunit) - Si des `roles` ont été créés ceux-ci pourront être testés avec [Molecule](https://molecule.readthedocs.io/en/latest/) \ No newline at end of file