Aller au contenu

Cours pratique sur DevOps


Comprendre DevOps et découvrir Git

Ce cours fait l’objet d’une introduction avec une présentation sous forme de diaporama (slides libre office). Cette page concerne la mise en pratique.

Qu’est-ce que le DevOps ?

Imaginez que vous construisiez une cabane avec vos amis :

Souvent, ces deux groupes ne se parlent pas assez, et la cabane finit par s’effondrer (j’exagère un peu, c’est pour l’exemple).
Le DevOps, c’est apprendre à collaborer et automatiser les tâches pour que la cabane soit toujours solide.

Objectifs du DevOps :

  1. Collaboration : les développeurs et les administrateurs système travaillent ensemble.
  2. Automatisation :→ les tâches répétitives sont confiées à des scripts ou à des outils.
  3. Amélioration continue : chaque jour, la cabane devient plus solide.

Introduction à Git

Git, c’est comme une machine à remonter le temps (en ce qui concerne le code)

Vous pouvez :

Commandes de base de Git :

# Crée un nouveau projet Git dans un dossier
git init

# Vérifie l'état du projet
git status

# Ajoute tous les fichiers à la zone d'attente
git add .

# Crée une sauvegarde (commit) avec un message
git commit -m "Mon premier commit"

# Affiche l’historique des sauvegardes
git log

Chaque commit correspond à une photo de votre projet à un instant donné !


TP 1 : Votre premier dépôt Git (sauf si vous connaissez déjà)

  1. Créez un dossier cabane.
  2. Entrez dans le dossier avec cd cabane.
  3. Tapez les commandes suivantes :

    git init
    echo "Bonjour DevOps" > README.md
    git add .
    git commit -m "premier commit"
    
  4. Vérifiez avec git log.

Résultat attendu :

Un commit apparaît avec votre nom et votre message.


GitHub et GitLab

GitHub et GitLab sont des réseaux sociaux pour le code. Vous pouvez y déposer votre projet (push) et vos collègues peuvent le récupérer (clone).

Commandes essentielles :

# Connecter votre projet à GitHub
git remote add origin https://github.com/votre_pseudo/mon-projet.git

# Envoyer votre code
git push -u origin main

# Récupérer le projet d’un collègue
git clone https://github.com/collegue/projet.git

TP 2 : Partager votre projet

  1. Créez un compte GitHub (si ce n’est pas déjà fait).
  2. Créez un dépôt vide nommé cabane-devops.
  3. Connectez votre dépôt local :

    git remote add origin https://github.com/votre_pseudo/cabane-devops.git
    git branch -M main
    git push -u origin main
    
  4. Vérifiez que votre fichier apparaît bien en ligne.

Résultat attendu :

Votre projet est désormais sur GitHub.


Travailler en équipe avec Git

Les branches

Imaginez un arbre :

Chaque membre de l’équipe peut travailler sur sa branche, puis fusionner les changements par la suite.

Commandes principales :

# Créer une nouvelle branche
git branch ma-branche

# Aller sur une branche
git checkout ma-branche

# Créer et aller sur la branche en une seule commande
git checkout -b ma-branche

# Fusionner une branche dans main
git checkout main
git merge ma-branche

TP°3 : Travail à faire à 2

  1. Créez une branche ajouter-ami
  2. Ajoutez votre prénom dans le fichier amis.txt
  3. Faites un commit et poussez votre branche
  4. Votre binôme crée une branche ajouter-ami2 et fait la même chose
  5. Fusionnez vos branches dans main

Résultat attendu :

Le fichier amis.txt contient vos deux prénoms !


Résoudre un conflit

Remarque : Si deux personnes modifient la même ligne, Git ne sait pas quelle version garder et donc il y a conflit.

Exemple :

<<<<<<< HEAD
Bonjour
=======
Salut
>>>>>>> ajouter-ami

Vous devez choisir : garder Bonjour ou Salut ou les deux !


TP 4 : Provoquer un conflit

  1. Vous et votre binôme modifiez la même ligne d’un fichier
  2. Poussez vos branches respectives
  3. Fusionnez pour que Git vous demande de résoudre le conflit
  4. Ouvrez le fichier et corrigez-le

Résultat attendu :

Un texte final unique dans le fichier.


Découvrir Docker

Qu’est-ce que Docker ?

Docker, c’est comme une boîte magique qui contient votre application et tout ce dont elle a besoin pour fonctionner. Peu importe la machine et le système sur lequel vous déposez votre boite, elle fonctionnera de la même manière !


Commandes de base

# Voir les conteneurs qui tournent sur votre machine
docker ps

# Télécharger une image depuis le Docker Hub (ici, le serveur web open source NGINX)
# L'intérêt de ce serveur est qu'il utilise un proxy inverse (reverse proxy) qui se trouve devant le serveur web et reçoit toutes les requêtes avant qu’elles n’atteignent le serveur d’origine.
docker pull nginx

# Lancer votre conteneur sur le port 8080
docker run -d -p 8080:80 nginx

# Arrêter le conteneur
docker stop <id>

TP 5 : Votre premier conteneur avec Docker

  1. Lancez :

    docker run -d -p 8080:80 nginx
    
  2. Ouvrez votre navigateur : http://localhost:8080
  3. Vous verrez la page : Welcome to nginx !

Résultat attendu :

La page s’affiche normalement dans votre navigateur !


Créer votre propre image

Le fichier Dockerfile est une recette de cuisine pour construire votre application. En tant que développeur, il faut que nous sachions comment créer nos propres images.

Exemple :

FROM node:16
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "index.js"]

TP 6 : Construire votre image

  1. Créez une application Node.js simple (index.js).
  2. Écrivez un Dockerfile.
  3. Lancez :
docker build -t monapp .
docker run -p 3000:3000 monapp
  1. Allez sur http://localhost:3000.

Résultat attendu :

Votre application fonctionne depuis un conteneur.


Automatisation avec GitLab CI/CD

Qu’est-ce que CI/CD ?

Ces concepts sont abordés dans la partie présentation de DevOps (diaporama) et approfondis avec des exercices guidés et des TP.

Ces pratiques permettent d’éviter les erreurs humaines et d’accélérer le développement.


Exemple d’un fichier .gitlab-ci.yml

Dans ce fichier, nous n’avons que 2 étapes, le build et le test. Cette exemple n’affiche rien d’autre que des messages mais il montre bien la mise en place d’un processus automatisé.

stages:
  - build
  - test

build:
  stage: build
  script:
    - echo "Je construis mon projet"

test:
  stage: test
  script:
    - echo "Je teste mon projet"

TP 7 : Votre premier pipeline GitLab

  1. Créez un projet sur GitLab.
  2. Ajoutez un fichier .gitlab-ci.yml.
  3. Poussez votre projet.
  4. Consultez le pipeline dans l’onglet CI/CD.

Résultat attendu :

Les jobs build et test s’exécutent avec succès (normalement ;))


Auteur : Philippe Bouget