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
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 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
|-- 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/)