Skip to main content

Dépôts Gitlab

Mise en place du Cloud Challenge

L'ensemble des ressources se trouvent à l'adresse suivante : https://gitlab.ippon.fr/devops-cloud-capitalisation/gameday/.

Pour tout comprendre Read the Fucking Manual dans chaque repos Gitlab du Cloud Challenge.

Organisation du Git

📁 /gameday-infra

Ce repo permet de déployer toute l'infrastructure dont a besoin le Cloud Challenge pour fonctionner.

Le dashboard est alors disponible a l'adresse suivante :

Le repo contient 5 dossiers :

Dans le dossier init/, il y a le dossier modules/ qui correspond aux modules terraform déployés et le dossier live/eu-west-1/ qui correspond à des fichiers de configurations terragrunt pour pouvoir déployer les modules terraform. Ce module est déployé tous les matins via la pipeline de stage Infrastructure et est détruit tous les soirs de façon automatique.

Le dossier cognito permet de déployer un AWS Cognito devant le dashboard admin et le dashboard team. Ce qui permet de restreindre l'accès aux plateformes du Cloud Challenge par un login/password. Ce module a été déployé une unique fois via la pipeline de stage Cognito et n'est jamais supprimé.

Le dossier multi-accounts-vars permet de déployer sur chaque compte AWS joueur la policy nécessaire à chaque compte pour jouer (teamPolicy), les budgets AWS pour chaque compte avec alerte, la pile SQS et les resources event bridge pour remonter l'utilisation de chaque resources AWS au compte master et permettre le scoring pour le gameday.

Le dossier cloudpdf permet de déployer un AWS S3 permettant de stocker les comptes rendus des participants. Ce module a été déployé une unique fois via la pipeline de stage Cognito et n'est jamais supprimé.

Le dossier waf permet de déployer un AWS WAF pour protéger le cloud-challenge lors d'un gameday ou une utilisation massive. Ce module n'est à déployer uniquement en amont d'événement pour controler les coûts engendrés.

📁 /gameday-master

Contient les fichiers sources pour les applications admin :

  • /admin-server: backend typescript principal. Plus d'infos ici.
  • /dashboard : frontend react.js pour dashboard. Plus d'infos ici.
  • /cloudpdf: microservice typescript pour générer des rapports pdf et les stocker. Plus d'infos ici.
  • /cloudmapper: microservice python pour générer et servir les apercus des architectures AWS. Plus d'infos ici.
  • /ecr : module terraform afin de déployer les registries sur AWS.

📁 /gameday-nuke

Ce repo contient l'ensemble des fichiers nécessaires pour effectuer une "nuke" à la fois sur des ressources non-critiques AWS et Azure de chaque compte joueur et sur l'infrastructure du Cloud-Challenge. Une nuke est effectué chaque vendredi à minuit via une pipeline gitlab CI afin de limiter les coûts de ressources non utilisées. Une nuke manuel peut être effectué à la fin d'un gameday via la pipeline (stage 'manual').

📁 /gameday-docs

Contient les fichiers de documentation et le module terraform pour les uploader sur un bucket s3 (https://doc.gameday.aws.ippon.fr).

📁 /modules

Ensemble des modules Terraform utilisés par le Cloud-Challenge

📁 [/scenario-xxx]

Implémentations des différents scénarios avec leurs ressources applicatives et modules terraform.

Chaque scenario doit être placé dans un sous-groupe gitlab et soumis à la nomenclature suivante : scenario-DIFFICULTE-ID-NOM

Les difficultés sont "easy", "medium" et "hard".
Exemple de nom pour le scenario medium n°2 eks : scenario-medium-02-eks
Si un scénario est crée pour Azure, il faut spécifier avec un "-azure" à la fin du nom

Chaque scenario est découpé en étape et chaque étape doit posséder son propre repo dans le sous-groupe du scénario.

Les étapes sont soumise à la nomenclature suivante : scenario-step##-NOM

Exemple de nom pour l'étape 2 du scenario medium eks : scenario-step02-deployment

Chaque repo d'étape doit être organisé comme le template-scenario-step (cf README).

Les resources nécessaires au scenario doivent être placées dans un repo appelé "master-NOM"

Variables Gitlab

Des variables nécessaire au bon fonctionnement des pipelines sont présentes les Repo Gitlab > Settings > CI/CD > Environment variables. Elles n'ont pas vocation à être modifié sauf cas exceptionnel.

Ressource nécessaires aux scénarios sélectionnés

Certains scénarios ont besoin de certaines ressources avant de démarrer le jeu, vérifier qu'elles existent.

Chaque scenario possède un repo "master-NOM" avec les ressources nécessaires.

Exemple: Pour le scenario-easy-01-simple-webapp, les images Docker team-server et mysql doivent être déployées sur les repos ECR du compte ippon-gameday-master. Cf Gitlab CI, la procédure est identique à celle des images Docker admin