update doc
This commit is contained in:
parent
72a8dfb302
commit
b5aba2d67c
1 changed files with 26 additions and 44 deletions
68
readme.md
68
readme.md
|
@ -5,9 +5,9 @@
|
||||||
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 (nginx, mariadb, php, composer, nodejs)
|
- Déploiement serveur (nginx, mysql, php, composer, nodejs)
|
||||||
- Déploiement applicatif (Symfony blog)
|
- Déploiement applicatif (ProjectSend)
|
||||||
- https://forge.univ-lyon1.fr/iut-lyon-lp-devops-ansible/symfony-blog
|
- https://github.com/projectsend/projectsend
|
||||||
|
|
||||||
#### Groupe ou individuel:
|
#### Groupe ou individuel:
|
||||||
Ce projet peut se faire en binôme ou individuellement
|
Ce projet peut se faire en binôme ou individuellement
|
||||||
|
@ -34,28 +34,30 @@ L'architecture doit permettre le déploiement sur des environnements de :
|
||||||
- prod
|
- prod
|
||||||
|
|
||||||
#### Serveur
|
#### Serveur
|
||||||
|
**!! ATTENTION !!! PAS DE ROLE PROVENANT DE LA COMMUNAUTÉ GALAXY POUR LA PARTIE APPLICATIF**
|
||||||
Il doit être possible de déployer les parties suivantes (séparément ou "all-in-one") :
|
Il doit être possible de déployer les parties suivantes (séparément ou "all-in-one") :
|
||||||
|
- apt:
|
||||||
|
- zip
|
||||||
|
- unzip
|
||||||
- serveur web (nginx)
|
- serveur web (nginx)
|
||||||
- Configuration: Activer le Gzip (https://www.digitalocean.com/community/tools/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]
|
- Vhost pour Symfony: [https://symfony.com/doc/current/setup/web_server_configuration.html#nginx]
|
||||||
- base de données (mariadb)
|
- base de données (mysql)
|
||||||
- (?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
|
- config: create database / create user and password
|
||||||
- applicatif (php / composer / git / npm )
|
- applicatif (php / composer / git / npm )
|
||||||
- php
|
- php
|
||||||
- version 7.4
|
- version 7.4
|
||||||
- Extensions: JSON, zip, mysql, intl, fpm, xml
|
- Extensions: php7.4-mysql php7.4-mbstring php7.4-gd php7.4-xml php-7.4-gmp php-7.4-zip
|
||||||
- config:
|
- config:
|
||||||
- max_execution_time: 60
|
- max_execution_time: 60
|
||||||
- memory_limit: 256M
|
- memory_limit: 256M
|
||||||
- composer:
|
- composer:
|
||||||
- version 1.*
|
- version 1.*
|
||||||
- la commande suivante suffit normalement: `apt install composer`
|
- la commande suivante suffit normalement: `apt install composer`
|
||||||
|
- nodejs / npm
|
||||||
|
|
||||||
#### Applicatif
|
#### Applicatif
|
||||||
|
** Possibilité d'utiliser le role suivant : https://github.com/ansistrano/deploy**
|
||||||
**!! ATTENTION !!! PAS DE ROLE PROVENANT DE LA COMMUNAUTÉ GALAXY POUR LA PARTIE 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
|
> **Atomic deployments** are a style of code deployment that symlink the most recent version of the code
|
||||||
|
@ -67,9 +69,6 @@ La stratégie de déploiement doit permettre du `atomic deployments`
|
||||||
- https://deploybot.com/blog/deploy-complex-apps-with-atomic-sftp-deployments (lire les 3 premières parties)
|
- 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)
|
- 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
|
-- /var/www/html/my-app.com
|
||||||
|-- current -> /var/www/html/my-app.com/releases/20200512131539
|
|-- current -> /var/www/html/my-app.com/releases/20200512131539
|
||||||
|
@ -80,53 +79,36 @@ La stratégie de déploiement doit permettre du `atomic deployments`
|
||||||
|-- shared
|
|-- shared
|
||||||
```
|
```
|
||||||
|
|
||||||
|
- Le déploiement de l'applicatif doit prendre en compte la version (release) de l'applicatif (https://github.com/projectsend/projectsend/releases)
|
||||||
|
|
||||||
- Le chemin de base pour l'installation de l'applicatif sera différent en fonction du serveur
|
- Le chemin de base pour l'installation de l'applicatif sera différent en fonction du serveur
|
||||||
- preprod: /var/www/html/preprod/symfony_blog/...
|
- preprod: /var/www/html/preprod/project_send/...
|
||||||
- prod: /var/www/html/prod/symfony_blog/...
|
- prod: /var/www/html/prod/project_send/...
|
||||||
|
|
||||||
- L'applicatif doit comporter une connexion à la base de données
|
- 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.
|
**Chaque environnement doit avoir sa propre base de données avec un user et un mot de passe différent.**
|
||||||
|
|
||||||
Exemple:
|
Exemple:
|
||||||
|
|
||||||
- preprod:
|
- preprod:
|
||||||
- user: symfony_preprod
|
- user: project_send_preprod
|
||||||
- pwd: symfony_preprod
|
- pwd: project_send_preprod
|
||||||
- prod:
|
- prod:
|
||||||
- user: symfony_prod
|
- user: project_send_prod
|
||||||
- pwd: symfony_prod
|
- pwd: project_send_prod
|
||||||
|
|
||||||
|
|
||||||
- Install les dépendances PHP:
|
- Install les dépendances PHP:
|
||||||
- composer install
|
- composer install
|
||||||
|
|
||||||
- L'applicatif doit permet d'afficher un titre de blog différent par environnement.
|
- Variable d'environnement du projet project_send pour la configuration de la base de données dans le ficher `sys.config.php` (fichier d'origine: `includes/sys.config.sample.php`)
|
||||||
Exemple:
|
|
||||||
Symfony blog - preprod
|
|
||||||
|
|
||||||
- Variable d'environnement du projet symfony dans le ficher `.env` du projet Symfony blog:
|
|
||||||
- DATABASE_URL=
|
|
||||||
- APP_ENV=
|
|
||||||
- server preprod => dev
|
|
||||||
- server prod => prod
|
|
||||||
- APP_SECRET = doit être unique par environnement
|
|
||||||
- PROJECT_TITLE=
|
|
||||||
- server preprod => Symfony blog - preprod
|
|
||||||
- server prod => Symfony blog - prod
|
|
||||||
|
|
||||||
Commande pour compiler les variables d'environment:
|
|
||||||
- server preprod : `composer dump-env dev`
|
|
||||||
- server prod : `composer dump-env prod`
|
|
||||||
|
|
||||||
- Mise à jours de la base de données:
|
|
||||||
- `bin/console doctrine:migration:migrate -n`
|
|
||||||
- Install et Compiler le JS et SCSS:
|
- Install et Compiler le JS et SCSS:
|
||||||
- npm install
|
- npm install
|
||||||
- npm run build
|
- run gulp: `./node_modules/gulp/bin/gulp.js`
|
||||||
|
|
||||||
|
- Le dossier `upload` dans projectSend doit être partagé (shared) entre les différentes versions de déploiement
|
||||||
|
|
||||||
- Pour la preprod:
|
|
||||||
- Ajouter les données de test (fixtures)
|
|
||||||
- `bin/console hautelook:fixtures:load`
|
|
||||||
#### 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
|
||||||
|
@ -147,7 +129,7 @@ Afin de bypass le proxy sur l'execution d'un playbook, vous pouvez ajouter au de
|
||||||
APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE: DontWarn
|
APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE: DontWarn
|
||||||
```
|
```
|
||||||
|
|
||||||
###### Mariadb
|
###### Mariadb (a voir ??)
|
||||||
Pour executer les commandes en rapport avec mariadb (database et user), vous pouvez soit:
|
Pour executer les commandes en rapport avec mariadb (database et user), vous pouvez soit:
|
||||||
- changer de user pour devenir root (`become_user`)
|
- changer de user pour devenir root (`become_user`)
|
||||||
- ajouter via un template la config dans le fichier `.my.cnf` au user root (`/root/.my.cnf`)
|
- ajouter via un template la config dans le fichier `.my.cnf` au user root (`/root/.my.cnf`)
|
||||||
|
|
Reference in a new issue