This repo is the devops and the entrypoint for the SSDP project.
-
- Identifiants de connexions:
- username: [email protected]
- password: 1234
- Identifiants de connexions:
- Cloner le repo
git clone [email protected]:ten4ssdp/devops.git ssdp
- Dupliquer le fichier
.env.example
et le renommer en.env
et remplir les variables d'environnements du fichier. - Lancer le script
./install.sh
Cliquez-ici pour accéder au Notion du projet
La plateforme utilisée pour lancer une instance est celle d'Amazon AWS.
Pour l'ensemble des composantes de l'application avec Terraform il faut :
- Avoir le CLI Terraform d'installé
- Avoir un compte AWS
- Ajouter un groupe dans l'onglet Gestion des identités et des accès (IAM)
- IAM > Groupe > Créer un groupe
- Définir la stratégie attachée AmazonEC2FullAccess
- Définir la statégie attachée AmazonElastiCacheFullAccess
- Ajouter un utilisateur au groupe crée
- IAM > Users > Créer un utilisateur
- Puis l'assigner au groupe crée
- Récupérer l'ID de clé d'accès et la clé d'accès secrète
$ export AWS_ACCESS_KEY_ID="l'id de clé d'accès ici"
$ export AWS_SECRET_ACCESS_KEY="la clé d'accès"
Copier le contenu du fichier sensitive.tfvars.example dans un fichier nommé sensitive.tfvars
placé au même endroit.
Les variables à définir sont les suivantes :
dbusername # identifiant de la base de donnée
dbpassword # mot de passe de la base de donnée
$ terraform init
$ terraform plan -var-file="sensitive.tfvars"
$ terraform apply -var-file="sensitive.tfvars"
Définir les variables suivantes dans les group_vars
site_project_name # nom du projet
site_api_port # port de l'api
site_front_port # port du front
site_db_port # port de la base de données
site_db_name # nom de la base de données
site_db_username # identifiant de la base de donnée (le même que celui qui a été défini dans la partie terraform au lancement de la bdd)
site_db_password # mot de passe de la base de donnée (le même que celui qui a été défini dans la partie terraform au lancement de la bdd)
site_jwtsecret # mot de passe jwt
site_api_base_url # IP de l'instance lancée (au format http://hostname.ext)
site_gmail_address # Adresse Gmail
site_gmail_password # mot de passe Gmail
Ansible se charge de récupérer les inventory de manière dynamique grâce au fichier ec2.py
.
Pour lancer le playbook de déploiement la commande est la suivante :
$ ansible-playbook ./ansible/deploy.yml -i ./ansible/inventory/ec2.py --ask-vault-pass --key ~/.ssh/hetic_rsa -u ubuntu --extra-vars "app=all"
La valeur du dernier paramètre app
peut prendre les valeurs suivantes :
all
: pour construire les images du back et du front (qui est la valeur par défaut)front
: pour construire les images du frontback
: pour construire les images du back
Par défaut les playbooks sont lancés lorsque la branche master
de chacun des 2 projets est mise à jour.
Nous utilisons Github Actions pour pouvoir lancer le playbook de déploiement.
Une intégration continue a aussi été mise en place sur le repo back.
Le code est linté et des tests unitaires sont lancés à chaque push & pull_request sur toutes les branches.
- Docker => Installe docker sur le server
- Pip => Installe python sur le server
- Sites => Installe les modules python docker , docker-compose sur le server puis lance les containers