1
0
Fork 0
This repository has been archived on 2024-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
Ansible_Project/readme.md
2021-05-26 15:25:11 +02:00

125 lines
No EOL
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<center><h1>PROJET</h1></center>
#### 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 (nginx, mariadb, php, composer, nodejs)
- Déploiement applicatif (Symfony blog)
- https://forge.univ-lyon1.fr/iut-lyon-lp-devops-ansible/symfony-blog
#### Groupe ou individuel:
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 professeur doit être ajouté en tant que `owner` aux membres du repository
- 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 (VM)
- aux repositories gitlab
- 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 sur des environnements de :
- preprod
- prod
#### Serveur
Il doit être possible de déployer les parties suivantes (séparément ou "all-in-one") :
- serveur web (nginx)
- Configuration: Activer le Gzip (https://www.digitalocean.com/community/tools/nginx)
- Vhost pour Symfony: [https://symfony.com/doc/current/setup/web_server_configuration.html#nginx]
- base de données (mariadb)
- (?TODO Check timeout sur installation de la clé) Installer la version : [10.5](https://downloads.mariadb.org/mariadb/repositories/#distro=Ubuntu&distro_release=focal--ubuntu_focal&mirror=cnrs&version=10.5)
- config: create database / create user and password
- applicatif (php / composer / git / npm )
- php
- version 7.4
- Extensions: JSON, zip, mysql, intl, fpm, xml
- config:
- max_execution_time: 60
- memory_limit: 256M
- composer: https://getcomposer.org/download/
#### Applicatif
**!! ATTENTION !!! PAS DE ROLE PROVENANT DE LA COMMUNAUTÉ GALAXY POUR LA PARTIE 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 deployment
- 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/html/my-app.com
|-- current -> /var/www/html/my-app.com/releases/20200512131539
|-- releases
| |-- 20200512131539
| |-- 20200509150741
| |-- 20200509145325
|-- shared
```
- Le chemin de base pour l'installation de l'applicatif sera différent en fonction du serveur
- preprod: /var/www/html/preprod/symfony_blog/...
- prod: /var/www/html/prod/symfony_blog/...
- L'applicatif doit comporter une 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.
Exemple:
- preprod:
- user: symfony_preprod
- pwd: symfony_preprod
- prod:
- user: symfony_prod
- pwd: symfony_prod
- L'applicatif doit permet d'afficher un titre de blog différent par environnement.
Exemple:
Symfony blog - preprod
- Variable d'environnement du projet symfony dans le ficher `.env` du projet Symfony blog:
- DATABASE_URL=
- APP_ENV=
- APP_SECRET=
- PROJECT_TITLE=
Commande pour compiler les variables d'environment: `composer dump-env dev`
- Mise à jours de la base de données:
- bin/console doctrine:migration:migrate
- Compiler le JS et SCSS:
- npm run build
- Pour la preprod:
- Ajouter les données de test (fixtures)
- `bin/console hautelook:fixtures:load`
#### 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)
- Si des `roles` ont été créés ceux-ci pourront être testés avec [Molecule](https://molecule.readthedocs.io/en/latest/)