Skip to content

ninidas/projet-B3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Infrastructure as Code et Conteneurisation


ubuntu docker dockerhub docker-compose registry github portainer grafana cadvisor prometheus jenkins


Introduction

Bienvenue sur le projet d'Infrastructure as Code et Conteneurisation.
Le but de ce projet est de déployer une infrastructure de services en quelques commandes.

Liste des services

Les outils utilisées


Déploiement du projet

Pré-requis

Outil de virtualisation

Afin de mettre en place l'infrastructure, installer un outil de virtualisation (VMWare/Virtual box).

Image Ubuntu

Préparer une machine virtuelle Ubuntu de préférence en Desktop avec une configuration minimale :

RAM Cœurs Disk Network
4GB 4 100GB NAT (DHCP)

Commandes à lancer en amont sur la machine virtuelle

sudo -i
apt-get update
apt install -y git
apt install -y net-tools
apt install -y openssh-server
ssh-keygen

Configuration de l'authentification sur GitHub

Après avoir lancé la commande ssh-keygen, aller dans le dossier .ssh et récupérez la clé id_rsa.pub.
Sur GitHub, accéder à l'onglet de création d'un nouveau clé ssh et ajouter la clé publique. Ensuite lancer les commandes suivantes en renseignant les informations respectives :

git config --global user.name "github_pseudo"
git config --global user.email "github_email"

Cette étape vous permettra de faire des actions sur votre repository sans avoir à vous authentifier à chaque action.
Elle vous évitera également de renseigner votre mot de passe en clair, ce qui pourrait constituer un problème de sécurité.

Cloner ensuite votre projet sur votre serveur avec la commande suivante :

git clone [email protected]:nicolas-hermosilla/projet-B3.git

La dernière étape consiste à créer votre repository sur votre GitHub et de le cloner sur votre serveur.
Déplacer les fichiers du repo vers votre repo et faites votre premier push.

git add .
git commit -m "my-first-commit"
git push

Adapter la configuration de votre serveur pour le déploiement de l'infrastructure

Exécution du script d'installation de docker et docker-compose

Après avoir récupérer les données, aller dans le repository de votre serveur et retrouver le script install-docker.sh.
Donner les droits d'exécution à ce fichier et lancer le script pour installer docker et docker-compose.
chmod u+x install-docker.sh
./install-docker.sh

Création des différents volumes

A la racine de votre repo, donner les droits d'éxecution :
chmod u+x create_volume.sh

Lancer le script ./create_volume.sh

Ce script va créer les différents volumes associés aux services respectifs.
Il va également déplacer le fichier de configuration de prometheus dans le volume de prometheus et ce fichier sera pris en compte lors du déploiement du service.

Administration

Configuration de Portainer

Lancer le script admin.sh situé dans le dossier administration.
./admin.sh
Ce script va nous permettre de lancer 2 services :

  • Portainer
  • Jenkins

Une fois le script exécuté, lancer la commande docker ps et vérifier que les 2 services sont bien en UP.

Accéder à Portainer avec l'URL suivant http://@IP_serveur:9000 (lancer la commande ip a pour récuprérer l'adresse IP).
Créer un compte administrateur.
Sélectionner l'environnement à administrer, ici Docker.

Mise en place du déploiement continu

Configuration de Jenkins

Depuis la console, récupérer le mot de passe administrateur de Jenkins avec la commande
docker logs jenkins

Accéder à Jenkins depuis l'adresse @IP_serveur:8082 et y insérer le mot de passe.

Installer ensuite les plugins suggérés.

Créer un compte administrateur : admin/admin/admin/admin/admin@local.

Enfin, laisser l'adresse du serveur par défaut.

Installer les plugins Docker et Blue Ocean :

Administrer Jenkins → Gestion des plugins → Disponible

Configurer Docker sur Jenkins :

  • Depuis Administrer Jenkins → Configurer le système, aller tout en bas de la page sur separate configuration page
  • Sélectionner Docker et Docker Cloud détails pour y insérer l'URI unix:///var/run/docker.sock
  • Séléctionner Enabled et tester la connexion.
  • Sauvegarder les modifications.

Vérification des services docker :

Administrer Jenkins → Docker

Automatisation des scan du repo

  • Sur Jenkins, sélectionner nouvel item
  • Nommer votre projet et séléctionner projet free-style
  • Sélectionner Gthub project et insérer l'URL de votre repo.
  • Gestion du code source : Séléctionner Git et insérer l'URL du repo.
  • Branch to build : Ne pas spécifier de branche spécifique.
  • Ce qui déclenche le build : Sélectionner Scrutation de l'outil de gestion de version et mettre * * * * * pour une vérification du repo chaque minute.
  • Ajouter une étape au build : Sélectionner Exécuter un script shell et y ajouter :
    cd services
    ./run.sh

Après chaque modification de repo, vous pouvez visualiser sur Jenkins les logs dans historique des builds ou directement depuis Blue ocean

Si vous avez un serveur en ligne :

Sur Jenkins, accéder directement à Blue ocean en connectant à votre Git.
Créer votre webhook dans les paramètres de votre repo sur GitHub en insérant l'ip publique de votre serveur (exemple: https://192.168.5.128:8082/github-webhook/)
Cette configuration notifiera directement Jenkins dès lors qu'une modification sera faite par l'intérmédiaire de ce webhook et scannera automatiquement le repos.

Monitoring

  • Une fois que l'infrastructure est déployée sur votre serveur, accéder à Grafana depuis l'URL http:@IP_serveur:3000.
  • Authentifiez-vous (user:admin password:admin)
  • Aller dans Configuration/Data Sources et ajouter une nouvelle Data Source prometheus.

Renseigner les paramètres suivants :

Tester ensuite la datasource en sauvegadant les paramètres.

  • Accéder à Dashboard/Manage et importer le dashboard en renseignant l'ID 193 source
  • Sélectionner la datasource Prometheus

Centraliser la gestion des images

Pour pousser une image dans le registry :

Exécuter la commande docker tag
Exemple : docker tag grafana/grafana localhost:5000/img-grafana

Exécuter ensuite la commande push pour envoyer les images vers votre registry :
Exemple : docker push localhost:5000/img-grafana

Accéder à l'interface Regsitry depuis http:@IP_serveur:8081

Pour récupérer des images : Exécuter la commande pull
Exemple : docker pull localhost:5000/img-grafana

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages