1
0
Fork 0

update project definition

This commit is contained in:
yohann 2021-04-07 11:45:58 +02:00
parent a9ff35b0fa
commit 1c344e03c3

View file

@ -2,35 +2,25 @@
#### Objectif: Automatisation de déploiement #### 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 serveur
- Déploiement applicatif - Déploiement applicatif
#### Groupe ou individuel: #### 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: #### Consignes:
- Le projet doit être mis sur un repository dans le [gitlab](https://forge.univ-lyon1.fr) de l'université. - 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 professeur doit être ajouté en tant que `owner` aux membres du repository
Exemple: `LP - DevOps - 2020 - ansible - Grp2 - Python - 2` - Un readme doit être présent dans le projet avec les rubriques suivantes :
- 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:
- Liste des étudiants. - Liste des étudiants.
- Comportant: nom - prénom - numéro étudiant - Comportant: nom - prénom - numéro étudiant
- Les clés ssh de connexion: - Les clés ssh de connexion :
- aux serveurs openstack - aux serveurs openstack (VM)
- aux repositories gitlab - aux repositories gitlab
- Les technologies utilisées.
- La liste des `roles` (si utilisés). - La liste des `roles` (si utilisés).
- La liste des commandes à utiliser. - La liste des commandes à utiliser.
Ceux-ci pourront aussi être présents dans un makefile 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 #### 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 - preprod
- prod - prod
#### Serveur #### Serveur
Il doit être possible de déployer les types suivants (séparement ou "all-in-one"): Il doit être possible de déployer les parties suivantes (séparément ou "all-in-one") :
- web - serveur web (nginx)
- base de données - base de données (mariadb)
- applicatif - applicatif (php / composer / git / nodejs )
#### Applicatif #### Applicatif
La stratégie de déploiement doit permettre du `atomic deployments` 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 its 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 -- /var/www/my-app.com
|-- current -> /var/www/my-app.com/releases/20200512131539 |-- 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 - 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. 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: 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 #### Conseils
- Un code organiser/structurer, tu feras - Un code organiser/structurer, tu feras
- Sur une/des nouvelle(s) machine(s) (hôte/VM), le professeur lancera - sans erreur, les playbooks seront - Sur une/des nouvelle(s) machine(s) (hôte/VM), le professeur lancera - sans erreur, les playbooks seront
#### Bonus #### 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/) - Si des `roles` ont été créés ceux-ci pourront être testés avec [Molecule](https://molecule.readthedocs.io/en/latest/)