PROJET

#### Objectif: Automatisation de déploiement L'objectif est d'automatiser des déploiements à l'aide de playbook Ansible et de son écosystème Ce projet devra comprendre un: - Déploiement serveur - Déploiement applicatif #### Groupe ou individuel: Ce projet peut se faire en groupe (de 2/3/4 personnes) 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* - **** - * 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: - Liste des étudiants. - Comportant: nom - prénom - numéro étudiant - Les clés ssh de connexion: - aux serveurs openstack - 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 - Une présentation de l'architecture mise en place #### Architecture/Environnement L'architecture doit permettre le déploiement au minimun sur des environnements de: - preprod - prod #### Serveur Il doit être possible de déployer les types suivants (séparement ou "all-in-one"): - web - base de données - applicatif #### Applicatif La stratégie de déploiement doit permettre du `atomic deployments` ``` -- /var/www/my-app.com |-- current -> /var/www/my-app.com/releases/20200512131539 |-- releases | |-- 20200512131539 | |-- 20200509150741 | |-- 20200509145325 |-- shared ``` - 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. 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'` #### 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,...) - Si des `roles` ont été créés ceux-ci pourront être testés avec [Molecule](https://molecule.readthedocs.io/en/latest/)