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/subject.md
2022-05-02 17:37:08 +02:00

5 KiB
Raw Permalink Blame History

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 (nginx, mysql, php, composer, nodejs)
- Déploiement applicatif (ProjectSend)
- https://github.com/projectsend/projectsend

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 de l'université.

    • Le professeur doit être ajouté en tant que owner aux membres du repository (@yohann.valentin)
  • 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

!! 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") :

Applicatif

** Possibilité d'utiliser le role suivant : https://github.com/ansistrano/deploy** 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.

-- /var/www/html/projectsend
|-- current -> /var/www/html/projectsend/releases/20200512131539
|-- releases
|   |-- 20200512131539
|   |-- 20200509150741
|   |-- 20200509145325
|-- 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

    • preprod: /var/www/html/preprod/project_send/...
    • prod: /var/www/html/prod/project_send/...
  • 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: project_send_preprod  
    - pwd: project_send_preprod  
- prod:  
    - user: project_send_prod  
    - pwd: project_send_prod  
  • Install les dépendances PHP:

    • composer install
  • 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)

  • Install et Compiler le JS et SCSS:

    • npm install
    • 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

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

Tips

Playbook

Afin de bypass le proxy sur l'execution d'un playbook, vous pouvez ajouter au debut de vos playbooks les élements suivants (pour un exemple complet: playbook-example.yaml):

  vars:
    proxy: "http://proxy.univ-lyon1.fr:3128/"
  environment:
    http_proxy: "{{proxy}}"
    https_proxy: "{{proxy}}"
    APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE: DontWarn