diff --git a/.gitignore b/.gitignore index 78e7733..598fadc 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,5 @@ terraform.rc # Optional: ignore plan files saved before destroying Terraform configuration # Uncomment the line below if you want to ignore planout files. -# planout \ No newline at end of file +# planout +.DS_Store diff --git a/README.md b/README.md index c64530f..089b901 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,10 @@ # workstation-setup -Simplon PC installation guide for DevOps + +> Formation DevOps Azure | Simplon | 2025-2026 + +Ce dépôt centralise et historise la liste des outils qu'un ingénieur DevOps Azure doit avoir sur son poste de travail. + +## Contenu + +- [instruction.md](instruction.md) — Guide d'installation pas à pas de tous les outils sur Windows +- [fiche_memo_outils.md](fiche_memo_outils.md) — Fiche mémo : ce qu'est chaque outil, à quoi il sert en DevOps, et comment vérifier son installation diff --git a/fiche_memo_outils.md b/fiche_memo_outils.md new file mode 100644 index 0000000..c90f294 --- /dev/null +++ b/fiche_memo_outils.md @@ -0,0 +1,427 @@ +# Fiche mémo – Les outils du poste DevOps Azure + +> **Formation DevOps Azure | Simplon | 2025-2026** +> Une fiche par outil : ce que c'est, à quoi ça sert, comment vérifier. + +Cette fiche est pensée pour les profils en reconversion. Pour chaque outil, vous trouverez une explication simple, une analogie du quotidien pour ancrer le concept, et son utilité concrète dans le métier de DevOps. + +--- + +## 🖥️ Système & Terminal + +--- + +### WSL2 — Windows Subsystem for Linux + +**C'est quoi ?** +WSL2 (Windows Subsystem for Linux, version 2) permet de faire tourner un vrai système Linux (Ubuntu) directement dans Windows, sans avoir à installer une machine virtuelle séparée. En clair : vous restez sur votre ordinateur Windows, mais vous pouvez ouvrir un terminal Linux à tout moment. + +> 💡 **Analogie :** C'est comme avoir un studio aménagé dans votre maison. Vous vivez dans la maison (Windows) mais vous pouvez entrer dans le studio (Linux) à tout moment, avec ses propres outils et son propre rangement — sans déménager. + +**À quoi ça sert en DevOps ?** +La plupart des serveurs, conteneurs et outils DevOps fonctionnent sous Linux. WSL2 permet de travailler avec ces outils depuis Windows, d'exécuter des scripts Bash, d'installer Ansible, etc. C'est l'environnement de base incontournable. + +**Commande de vérification :** +```powershell +wsl --list --verbose +``` + +--- + +### Windows Terminal + +**C'est quoi ?** +Un terminal moderne développé par Microsoft qui regroupe en un seul endroit PowerShell, l'invite de commandes Windows et le terminal Linux (WSL2). On peut passer de l'un à l'autre via des onglets. + +> 💡 **Analogie :** C'est comme un bureau avec plusieurs tiroirs ouverts simultanément. Plutôt que d'avoir trois fenêtres différentes éparpillées sur l'écran, tout est au même endroit et on passe de l'un à l'autre en un clic. + +**À quoi ça sert en DevOps ?** +On passe sa journée dans le terminal en DevOps. Windows Terminal remplace tous les anciens terminaux et permet de travailler proprement avec plusieurs environnements en parallèle. + +**Vérification :** Lancer Windows Terminal depuis le menu Démarrer. + +--- + +### PowerShell 7 + +**C'est quoi ?** +PowerShell 7 est la version moderne et multiplateforme de PowerShell (Windows/Linux/Mac). C'est à la fois un terminal et un langage de script puissant. + +> 💡 **Analogie :** C'est comme une télécommande universelle programmable. Plutôt que d'aller appuyer sur chaque bouton de chaque appareil à la main, vous écrivez une séquence une fois, et la télécommande exécute tout automatiquement. + +**À quoi ça sert en DevOps ?** +C'est le langage de script natif pour automatiser les tâches Windows et Azure. On l'utilise pour installer des modules Azure, lancer des scripts d'administration, automatiser des déploiements. + +**Commande de vérification :** +```powershell +pwsh --version +``` + +--- + +## 🛠️ Outils de développement + +--- + +### Visual Studio Code (VS Code) + +**C'est quoi ?** +VS Code est un éditeur de code gratuit et open source développé par Microsoft. C'est l'un des éditeurs les plus utilisés au monde, toutes spécialités confondues. + +> 💡 **Analogie :** C'est comme un atelier de menuiserie bien équipé. Vous pouvez y travailler avec les outils de base, mais surtout y installer exactement les outils dont vous avez besoin selon votre projet : scie (Docker), niveau (Git), perceuse (Azure)… tout rangé au même endroit. + +**À quoi ça sert en DevOps ?** +On s'en sert pour écrire du code, des scripts, des fichiers de configuration (YAML, JSON, Terraform, Bicep…). Grâce à ses extensions, il devient un véritable environnement de travail intégré : on peut gérer Git, Docker, Azure et Kubernetes directement depuis l'éditeur. + +**Extensions installées :** + +| Extension | Rôle | +|---|---| +| Azure Tools | Gérer les ressources Azure depuis VS Code | +| Docker | Gérer les conteneurs et images Docker | +| Kubernetes | Explorer et gérer des clusters Kubernetes | +| Terraform | Coloration et autocomplétion des fichiers `.tf` | +| Bicep | Coloration et validation des fichiers `.bicep` | +| GitLens | Visualiser l'historique Git directement dans le code | +| YAML | Validation et coloration des fichiers YAML (pipelines CI/CD) | +| Pylance + Python | Support complet du langage Python | +| Remote – WSL | Ouvrir et éditer des fichiers Linux depuis VS Code | +| Remote – SSH | Se connecter à un serveur distant via SSH | + +**Commande de vérification :** +```powershell +code --version +``` + +--- + +### Git + +**C'est quoi ?** +Git est le système de gestion de versions le plus utilisé au monde. Il permet de sauvegarder l'historique de son code, de travailler en équipe sur les mêmes fichiers et de revenir en arrière en cas d'erreur. + +> 💡 **Analogie :** C'est comme un Google Docs avec un historique illimité et une machine à remonter le temps. Chaque modification est enregistrée avec qui l'a faite, quand, et pourquoi. Si quelqu'un casse quelque chose, on revient en arrière en une commande. Et toute l'équipe travaille sur le même document sans s'écraser mutuellement. + +**À quoi ça sert en DevOps ?** +En DevOps, tout est versionné : le code applicatif, les scripts, les fichiers d'infrastructure (Terraform, Bicep, Ansible). Git est la base de tout pipeline CI/CD — sans lui, rien ne se déclenche. + +**Commande de vérification :** +```bash +git --version +git config --list # Vérifier que user.name et user.email sont configurés +``` + +--- + +### Node.js & npm + +**C'est quoi ?** +Node.js est un environnement d'exécution JavaScript côté serveur. npm (Node Package Manager) est son gestionnaire de paquets, qui permet d'installer des bibliothèques et outils JavaScript. + +> 💡 **Analogie :** Node.js c'est le moteur. npm c'est le concessionnaire de pièces détachées. Vous avez votre voiture (Node.js), et si vous avez besoin d'un nouveau composant (une librairie), vous allez chez le concessionnaire (npm) et vous l'installez en une commande. + +**À quoi ça sert en DevOps ?** +De nombreux outils DevOps et CLI sont écrits en JavaScript et nécessitent Node.js pour fonctionner. On l'utilise aussi pour construire et tester des applications web avant de les conteneuriser. + +**Commande de vérification :** +```powershell +node --version +npm --version +``` + +--- + +### Python & pip + +**C'est quoi ?** +Python est un langage de programmation très lisible et polyvalent. pip est son gestionnaire de paquets (équivalent de npm pour Python). + +> 💡 **Analogie :** Python c'est le couteau suisse des langages. Pas toujours le meilleur outil pour une tâche précise, mais il peut tout faire : écrire un script rapide, analyser des données, automatiser une tâche répétitive, communiquer avec une API… pip c'est la boutique pour lui ajouter des lames supplémentaires. + +**À quoi ça sert en DevOps ?** +Python est omniprésent en DevOps : scripts d'automatisation, outils de monitoring, SDK Azure, Ansible (qui est écrit en Python). C'est le langage de script incontournable sur Linux. + +**Commande de vérification :** +```powershell +python --version +pip --version +``` + +--- + +### DBeaver Community + +**C'est quoi ?** +DBeaver est un outil graphique gratuit et universel pour se connecter à des bases de données. Une base de données, c'est l'endroit où une application stocke ses données de façon structurée (utilisateurs, commandes, produits, logs…). DBeaver permet de les consulter, les modifier et les interroger visuellement, sans connaître les commandes spécifiques de chaque système. + +> 💡 **Analogie :** C'est comme un traducteur universel pour les bases de données. Chaque base (MySQL, PostgreSQL, SQL Server, Azure SQL…) a son propre « dialecte ». DBeaver parle tous ces dialectes et vous offre toujours la même interface, quelle que soit la base que vous ouvrez. C'est comme avoir le même cockpit pour piloter n'importe quel avion. + +**À quoi ça sert en DevOps ?** +Un DevOps est souvent amené à inspecter des bases de données pour déboguer une application, vérifier qu'un déploiement a bien migré les données ou comprendre la structure d'un projet. DBeaver évite d'apprendre les commandes spécifiques de chaque base — une interface unique, tous les projets. + +**Commande de vérification :** +``` +Lancer DBeaver depuis le menu Démarrer +→ Le panneau "Database Navigator" doit s'afficher à gauche +``` + +--- + +## ☁️ Outils Microsoft Azure + +--- + +### Azure CLI (`az`) + +**C'est quoi ?** +L'Azure CLI (Command Line Interface, soit « interface en ligne de commande ») est un outil qui permet de gérer toutes les ressources Microsoft Azure directement depuis un terminal, en tapant des commandes textuelles. Le raccourci pour l'appeler est simplement `az`. + +> 💡 **Analogie :** C'est comme la télécommande du portail Azure. Tout ce que vous pouvez faire en cliquant sur le site web Azure (créer un serveur, configurer un réseau, voir les factures), vous pouvez le faire avec une commande texte — et donc l'automatiser et le répéter à l'identique. + +**À quoi ça sert en DevOps ?** +C'est l'outil principal pour interagir avec Azure en DevOps : créer des machines virtuelles, déployer des applications, gérer des réseaux, consulter des logs… Tout ce qu'on peut faire dans le portail Azure, on peut le scripter avec `az`. + +**Commandes de base :** +```powershell +az --version # Vérifier l'installation +az login # Se connecter à son compte Azure +az account show # Vérifier la connexion +``` + +--- + +### Azure PowerShell (module Az) + +**C'est quoi ?** +Le module Az est l'équivalent de l'Azure CLI mais pour PowerShell. Il fournit des commandes PowerShell (appelées *cmdlets*) pour gérer Azure. + +> 💡 **Analogie :** C'est la même télécommande Azure, mais dans un format compatible avec les scripts PowerShell déjà existants dans votre entreprise. Même résultat, syntaxe différente — comme avoir le même livre traduit en deux langues. + +**À quoi ça sert en DevOps ?** +Utilisé principalement dans les environnements Windows ou quand les scripts d'automatisation sont déjà écrits en PowerShell. Les pipelines Azure DevOps l'utilisent fréquemment. + +**Commandes de base :** +```powershell +Connect-AzAccount # Se connecter à Azure +Get-AzSubscription # Lister les abonnements disponibles +``` + +--- + +### Azure Storage Explorer + +**C'est quoi ?** +C'est une application graphique (interface visuelle) pour naviguer et gérer les stockages Azure : Blob Storage, Files, Tables, Queues. + +> 💡 **Analogie :** C'est l'explorateur de fichiers Windows (comme l'Explorateur de fichiers classique), mais pour vos fichiers stockés dans le cloud Azure. Vous naviguez dans des dossiers, vous glissez-déposez des fichiers, vous supprimez — exactement comme sur votre ordinateur. + +**À quoi ça sert en DevOps ?** +Permet d'explorer facilement les fichiers stockés dans Azure (logs, sauvegardes, artefacts de build) sans avoir à écrire de commandes. Très pratique pour déboguer ou vérifier qu'un fichier a bien été uploadé. + +**Vérification :** Lancer l'application depuis le menu Démarrer et se connecter avec son compte Azure. + +--- + +## 🐳 Conteneurisation + +--- + +### Docker Desktop + +**C'est quoi ?** +Docker est la technologie de conteneurisation la plus utilisée au monde. Un conteneur est un environnement isolé et portable qui contient une application et tout ce dont elle a besoin pour fonctionner. + +> 💡 **Analogie :** C'est comme une boîte de déménagement standardisée. Avant Docker, livrer une application c'était comme déménager des meubles en espérant que l'appartement de destination aura les bons branchements électriques. Avec Docker, on met tout dans une boîte hermétique — l'application, ses dépendances, sa configuration — et elle fonctionne partout pareil, que ce soit sur votre ordinateur, celui d'un collègue ou un serveur en production. + +**À quoi ça sert en DevOps ?** +Docker résout le problème du « ça marche sur ma machine ». En DevOps, on conteneurise les applications pour qu'elles se déploient de façon identique en développement, en test et en production. C'est la base des pipelines CI/CD modernes. + +**Commandes de base :** +```powershell +docker --version +docker run hello-world # Tester que Docker fonctionne +docker ps # Lister les conteneurs en cours +docker images # Lister les images locales +``` + +--- + +### kubectl — Kubernetes CLI + +**C'est quoi ?** +`kubectl` (prononcé « kube-control » ou « kube-CTL ») est l'outil en ligne de commande pour interagir avec un cluster Kubernetes. Kubernetes (souvent abrégé **K8s** — le « 8 » remplace les 8 lettres entre le K et le s) est la plateforme d'orchestration de conteneurs la plus utilisée. Un *cluster* Kubernetes, c'est un ensemble de serveurs qui travaillent ensemble pour faire tourner vos applications. + +> 💡 **Analogie :** Si Docker c'est la boîte de déménagement, Kubernetes c'est le chef de chantier qui décide combien de boîtes ouvrir, lesquelles remplacer si elles sont abîmées, et comment les répartir dans l'entrepôt. `kubectl` c'est le talkie-walkie pour lui donner des ordres. + +**À quoi ça sert en DevOps ?** +Quand une application tourne dans des conteneurs Docker, Kubernetes les orchestre : il gère le démarrage, l'arrêt, la mise à l'échelle et la répartition de charge. `kubectl` permet de piloter tout ça depuis le terminal. + +**Commandes de base :** +```powershell +kubectl version --client # Vérifier l'installation +kubectl get pods # Lister les pods d'un cluster +kubectl get nodes # Lister les nœuds du cluster +``` + +--- + +### Helm + +**C'est quoi ?** +Helm est le gestionnaire de paquets pour Kubernetes. Un "chart" Helm est un paquet qui contient tout ce qu'il faut pour déployer une application sur Kubernetes. + +> 💡 **Analogie :** C'est l'IKEA de Kubernetes. Plutôt que de fabriquer votre meuble planche par planche (écrire des dizaines de fichiers YAML à la main), vous prenez un pack IKEA préconçu (un chart Helm), vous choisissez vos options (la couleur, la taille), et vous l'assemblez en une commande. + +**À quoi ça sert en DevOps ?** +Plutôt que d'écrire des dizaines de fichiers YAML Kubernetes à la main, Helm permet d'utiliser des templates réutilisables et paramétrables. On déploie une base de données ou un serveur web en une seule commande. + +**Commandes de base :** +```powershell +helm version +helm repo add stable https://charts.helm.sh/stable # Ajouter un dépôt +helm install mon-app stable/nginx # Déployer une app +``` + +--- + +## 🏗️ Infrastructure as Code (IaC) + +--- + +### Terraform + +**C'est quoi ?** +Terraform est un outil d'**Infrastructure as Code** (IaC — « infrastructure en tant que code »). Le principe : au lieu de créer des serveurs et des réseaux à la main en cliquant dans un portail web, on les décrit dans des fichiers texte (du « code »), et Terraform les crée automatiquement. Développé par HashiCorp, il fonctionne avec tous les grands fournisseurs cloud : Azure, AWS, Google Cloud… + +> 💡 **Analogie :** C'est comme le plan d'un architecte, mais magique. Vous dessinez le plan de votre maison (vous écrivez ce que vous voulez comme serveurs, réseaux, stockage), et la maison se construit toute seule. Si vous changez le plan, Terraform calcule exactement ce qu'il faut modifier et le fait. Vous ne retournez jamais sur le chantier à la main. + +**À quoi ça sert en DevOps ?** +Au lieu de créer des ressources Azure à la main via le portail, on écrit du code Terraform. L'infrastructure devient versionnée, reproductible et automatisable — exactement comme du code applicatif. + +**Commandes de base :** +```powershell +terraform --version +terraform init # Initialiser un projet Terraform +terraform plan # Prévisualiser les changements +terraform apply # Appliquer les changements (créer/modifier l'infra) +terraform destroy # Supprimer l'infrastructure +``` + +--- + +### Ansible (via WSL2) + +**C'est quoi ?** +Ansible est un outil d'automatisation et de gestion de configuration. Il permet d'installer des logiciels, configurer des serveurs et déployer des applications sur des machines distantes, sans avoir à s'y connecter manuellement. + +> 💡 **Analogie :** Imaginez que vous devez installer le même logiciel sur 50 ordinateurs. Sans Ansible, vous y allez un par un. Avec Ansible, c'est comme envoyer un message groupé à 50 assistants avec une liste de tâches précise — ils font tous la même chose en même temps, sans que vous ayez à bouger. + +**À quoi ça sert en DevOps ?** +Ansible s'utilise pour configurer des serveurs de façon automatisée et reproductible. On décrit dans un fichier YAML ("playbook") ce que la machine doit avoir installé, et Ansible s'en charge. Il est très utilisé pour les déploiements et la gestion de parcs de serveurs. + +**Commandes de base (dans WSL/Ubuntu) :** +```bash +ansible --version +ansible-playbook mon_playbook.yml # Exécuter un playbook +ansible all -m ping # Tester la connectivité aux machines +``` + +--- + +### Bicep + +**C'est quoi ?** +Bicep est le langage d'Infrastructure as Code natif de Microsoft Azure. C'est une alternative simplifiée aux ARM Templates (fichiers JSON complexes) pour déployer des ressources Azure. + +> 💡 **Analogie :** Si Terraform est un architecte universel qui peut construire n'importe où dans le monde, Bicep est un architecte spécialisé dans les constructions Azure. Il connaît tous les détails de la plateforme sur le bout des doigts et s'exprime dans un langage plus simple que les plans techniques bruts (ARM Templates). + +**À quoi ça sert en DevOps ?** +Là où Terraform est multi-cloud, Bicep est spécialisé Azure. Il permet de déployer des ressources Azure de façon déclarative avec une syntaxe plus lisible que les ARM Templates classiques. + +**Commandes de base :** +```powershell +az bicep version +az bicep build --file main.bicep # Compiler un fichier Bicep +az deployment group create --template-file main.bicep # Déployer +``` + +--- + +## 🔄 CI/CD & Gestion de code + +--- + +### GitHub Desktop *(optionnel)* + +**C'est quoi ?** +GitHub Desktop est une interface graphique pour Git et GitHub. Il permet de gérer ses dépôts, commits et branches sans passer par la ligne de commande. + +> 💡 **Analogie :** C'est la version "boîte automatique" de Git. La ligne de commande Git c'est la boîte manuelle — plus de contrôle, mais il faut apprendre. GitHub Desktop c'est la boîte automatique — on arrive au même résultat, avec une interface visuelle et des clics. + +**À quoi ça sert en DevOps ?** +Utile pour visualiser les changements et l'historique d'un projet. En pratique, un DevOps utilise surtout Git en ligne de commande, mais GitHub Desktop est un bon complément pour débuter. + +**Vérification :** Lancer l'application et se connecter à son compte GitHub. + +--- + +### Configuration SSH (GitHub / Azure DevOps) + +**C'est quoi ?** +SSH (Secure Shell — « shell sécurisé ») est un protocole de communication chiffré. Une clé SSH est une paire de fichiers générés sur votre ordinateur : une **clé privée** (que vous gardez secret) et une **clé publique** (que vous partagez avec les services distants). Ensemble, elles permettent de prouver votre identité sans jamais taper de mot de passe. + +> 💡 **Analogie :** C'est comme un badge d'accès magnétique personnalisé. Plutôt que de montrer votre carte d'identité (taper votre mot de passe) à chaque porte que vous franchissez, vous avez un badge unique (votre clé privée) reconnu instantanément. Vous gardez le badge dans votre poche, et vous donnez une copie de la "serrure" (clé publique) à chaque service qui doit vous reconnaître. + +**À quoi ça sert en DevOps ?** +Indispensable pour pousser du code sur GitHub ou Azure DevOps sans saisir son mot de passe à chaque fois. C'est aussi la méthode utilisée pour se connecter à des serveurs Linux distants. + +**Vérification :** +```bash +ssh -T git@github.com # Tester la connexion SSH à GitHub +``` + +--- + +### Azure DevOps + +**C'est quoi ?** +Azure DevOps est la plateforme Microsoft pour gérer l'ensemble du cycle de vie d'un projet : dépôts Git, pipelines CI/CD, tableaux de suivi, tests automatisés et artefacts. + +> 💡 **Analogie :** C'est le quartier général d'un projet. Imaginez un immeuble avec : une salle des archives (dépôt Git), une chaîne de montage automatisée (pipelines CI/CD), un tableau de bord de suivi (gestion de tâches) et un entrepôt de livraisons (artefacts). Tout au même endroit, pour toute l'équipe. + +**À quoi ça sert en DevOps ?** +C'est la plateforme centrale de la formation. On y hébergera le code, on y créera des pipelines qui automatisent les tests et déploiements, et on y gérera les tâches du projet. + +**Accès :** https://dev.azure.com/ + +--- + +## 🔐 Sécurité + +--- + +### Gestionnaire de mots de passe (ex : Bitwarden) + +**C'est quoi ?** +Un gestionnaire de mots de passe stocke et chiffre tous tes identifiants dans un coffre-fort sécurisé. Tu n'as plus qu'un seul mot de passe maître à retenir. + +> 💡 **Analogie :** C'est le trousseau de clés universel. Plutôt que d'avoir 30 clés identiques (le même mot de passe partout — dangereux) ou 30 clés différentes que vous oubliez en permanence, vous avez un trousseau sécurisé avec une clé maître. Vous ouvrez le trousseau une fois, et il vous donne la bonne clé pour chaque porte. + +**À quoi ça sert en DevOps ?** +Un DevOps gère de nombreux accès : Azure, GitHub, Docker Hub, serveurs SSH, APIs… Réutiliser des mots de passe ou les noter dans un fichier texte est une faille de sécurité majeure. Le gestionnaire de mots de passe est une bonne pratique professionnelle indispensable. + +--- + +### MFA — Authentification Multi-Facteurs + +**C'est quoi ?** +Le MFA (Multi-Factor Authentication) ajoute une deuxième vérification lors de la connexion à un compte : en plus du mot de passe, on valide via une application mobile (Microsoft Authenticator, Google Authenticator…). + +> 💡 **Analogie :** C'est comme un coffre-fort avec deux verrous. Le premier verrou c'est votre mot de passe (quelque chose que vous connaissez). Le second verrou c'est votre téléphone (quelque chose que vous possédez). Même si quelqu'un vole votre mot de passe, il ne peut pas ouvrir le coffre sans avoir aussi votre téléphone en main. + +**À quoi ça sert en DevOps ?** +Les comptes Azure, GitHub et Azure DevOps donnent accès à des ressources critiques. Sans MFA, un mot de passe volé suffit pour tout compromettre. Le MFA est exigé dans la quasi-totalité des entreprises. + +--- + +*Formation DevOps Azure | Simplon | 2025-2026* diff --git a/instruction.md b/instruction.md new file mode 100644 index 0000000..af56754 --- /dev/null +++ b/instruction.md @@ -0,0 +1,465 @@ +# Formation DevOps Azure +## Guide d'installation du poste de travail Windows + +> **Destiné aux apprenants DevOps Azure** +> Version 1.0 | Année 2025-2026 + +--- + +## Table des matières + +1. [Introduction](#1-introduction) +2. [Prérequis matériels et logiciels](#2-prérequis-matériels-et-logiciels) +3. [Configuration initiale de Windows](#3-configuration-initiale-de-windows) +4. [Outils de développement essentiels](#4-outils-de-développement-essentiels) +5. [Outils Microsoft Azure](#5-outils-microsoft-azure) +6. [Outils de conteneurisation](#6-outils-de-conteneurisation) +7. [Infrastructure as Code (IaC)](#7-infrastructure-as-code-iac) +8. [Outils CI/CD et gestion de code](#8-outils-cicd-et-gestion-de-code) +9. [Sécurité et bonnes pratiques](#9-sécurité-et-bonnes-pratiques) +10. [Vérification de l'installation](#10-vérification-de-linstallation) +11. [Ressources et liens utiles](#11-ressources-et-liens-utiles) + +--- + +## 1. Introduction + +Ce guide a pour objectif de vous accompagner pas à pas dans la mise en place d'un environnement de travail complet sous Windows, adapté aux besoins d'un apprenant en formation DevOps Azure. + +À l'issue de cette installation, vous disposerez de tous les outils nécessaires pour : + +- Gérer du code source avec Git et GitHub / Azure DevOps +- Travailler avec les services Microsoft Azure via CLI et PowerShell +- Conteneuriser des applications avec Docker et Kubernetes +- Automatiser des déploiements avec Terraform, Bicep et Ansible +- Mettre en place des pipelines CI/CD +- Explorer et gérer des bases de données avec DBeaver +- Appliquer les bonnes pratiques de sécurité DevSecOps + +> **ℹ️ Note :** Ce guide est conçu pour Windows 10 (version 21H2 minimum) ou Windows 11. Certaines étapes peuvent légèrement différer selon la version et l'édition de Windows. + +> **ℹ️ Pour les profils en reconversion :** Certaines étapes font appel au **terminal** (aussi appelé *invite de commandes* ou *ligne de commande*). C'est une fenêtre noire dans laquelle on tape des instructions textuelles pour piloter l'ordinateur. C'est un outil du quotidien en DevOps — ne pas s'inquiéter si c'est nouveau, tout est expliqué étape par étape. + +--- + +## 2. Prérequis matériels et logiciels + +### 2.1 Configuration matérielle recommandée + +| Composant | Spécification | +|-----------------|------------------------------------------------------------------------| +| Processeur | Intel Core i5/i7 ou AMD Ryzen 5/7 (8e génération ou supérieur) | +| RAM | 16 Go minimum — 32 Go recommandés | +| Stockage | 256 Go SSD minimum — 512 Go recommandés | +| Réseau | Connexion Internet stable (téléchargements volumineux) | +| Virtualisation | Virtualisation matérielle activée dans le BIOS (VT-x / AMD-V) | + +### 2.2 Système d'exploitation + +- Windows 10 version **21H2** (build 19044) ou supérieure +- Windows 11 version **22H2** ou supérieure +- Édition **Professionnel** ou **Entreprise** (requis pour Hyper-V et WSL2) + +--- + +## 3. Configuration initiale de Windows + +### 3.1 Mises à jour Windows + +Avant toute installation, il est essentiel que le système soit à jour. + +1. Ouvrir **Paramètres → Windows Update** +2. Cliquer sur **Rechercher les mises à jour** +3. Installer toutes les mises à jour disponibles et redémarrer si nécessaire +4. Répéter l'opération jusqu'à ce qu'aucune mise à jour ne soit disponible + +### 3.2 Activation de la virtualisation (BIOS/UEFI) + +La virtualisation matérielle est indispensable pour WSL2 et Docker Desktop. + +1. Redémarrer l'ordinateur et accéder au BIOS/UEFI (touche **F2**, **F10**, **DEL** ou **Suppr** selon le fabricant) +2. Localiser l'option **Intel Virtualization Technology (VT-x)** ou **AMD-V / SVM Mode** +3. Activer l'option +4. Sauvegarder et quitter le BIOS + +> **ℹ️ Vérification :** Ouvrir le Gestionnaire des tâches → onglet Performances → CPU. Le champ « Virtualisation » doit afficher *Activé*. + +### 3.3 Activation de Windows Subsystem for Linux (WSL2) + +WSL2 permet d'exécuter un environnement Linux natif sous Windows, essentiel pour de nombreux outils DevOps. + +1. Ouvrir **PowerShell en tant qu'Administrateur** +2. Exécuter la commande suivante : + ```powershell + wsl --install + ``` +3. Redémarrer l'ordinateur lorsque demandé +4. Au redémarrage, Ubuntu s'installe automatiquement — créer un nom d'utilisateur et un mot de passe Linux +5. Vérifier l'installation : + ```powershell + wsl --list --verbose + ``` + → Doit afficher Ubuntu en **version 2** + +> **ℹ️ Note :** Si la commande ne fonctionne pas, activer manuellement depuis **Activer ou désactiver des fonctionnalités Windows** : *Plateforme de machine virtuelle* et *Sous-système Windows pour Linux*, puis redémarrer. + +### 3.4 Installation de PowerShell 7 + +PowerShell 7 est la version moderne et multiplateforme, recommandée pour Azure. + +1. Télécharger depuis : https://github.com/PowerShell/PowerShell/releases +2. Choisir le fichier `.msi` pour Windows (ex : `PowerShell-7.x.x-win-x64.msi`) +3. Lancer l'installeur — cocher **Ajouter PowerShell au PATH** +4. Vérifier : + ```powershell + pwsh --version + ``` + +--- + +## 4. Outils de développement essentiels + +### 4.1 Visual Studio Code + +| Paramètre | Valeur | +|---------------------|-----------------------------------------------------| +| Téléchargement | https://code.visualstudio.com/ | +| Version recommandée | Stable (dernière version) | +| Options | Cocher « Ajouter au PATH » et « Ouvrir avec Code » | + +**Extensions à installer** (Ctrl+Shift+X) : + +- Azure Tools *(pack complet Microsoft)* +- Docker +- Kubernetes +- Terraform *(HashiCorp)* +- Bicep *(Microsoft)* +- GitLens +- YAML +- Pylance + Python +- Remote – WSL +- Remote – SSH +- GitHub Copilot *(optionnel)* + +### 4.2 Git + +| Paramètre | Valeur | +|-----------------------|----------------------------------------------------| +| Téléchargement | https://git-scm.com/download/win | +| Éditeur par défaut | Visual Studio Code | +| Fins de ligne | Checkout Windows-style, commit Unix-style | + +**Configuration initiale** (dans Git Bash ou PowerShell) : + +```bash +git config --global user.name "Prénom Nom" +git config --global user.email "email@exemple.com" +git config --global core.editor "code --wait" +git config --global init.defaultBranch main +``` + +### 4.3 Windows Terminal + +1. Ouvrir le **Microsoft Store** +2. Rechercher **Windows Terminal** et installer +3. Dans les paramètres, configurer **Ubuntu WSL** comme profil par défaut + +### 4.4 Node.js + +| Paramètre | Valeur | +|---------------------|-----------------------------------------------------------| +| Téléchargement | https://nodejs.org/ — choisir la version **LTS** | + +```powershell +node --version # Vérification Node.js +npm --version # Vérification npm +``` + +> **ℹ️ Note :** Pour gérer plusieurs versions de Node.js, utiliser **NVM for Windows** : https://github.com/coreybutler/nvm-windows + +### 4.5 Python + +| Paramètre | Valeur | +|---------------------|----------------------------------------------------| +| Téléchargement | https://www.python.org/downloads/ | +| Version recommandée | Python **3.11** ou **3.12** | + +1. Cocher impérativement **Add Python to PATH** avant d'installer +2. Vérifier : + ```powershell + python --version + pip --version + ``` + +### 4.6 DBeaver Community + +DBeaver est un outil graphique gratuit pour se connecter à des bases de données et les explorer visuellement, sans avoir à taper des commandes SQL dans un terminal. + +| Paramètre | Valeur | +|----------------|----------------------------------------------------| +| Téléchargement | https://dbeaver.io/download/ | +| Édition | **Community Edition** (gratuite) | + +1. Télécharger le fichier `.exe` Windows Installer +2. Lancer l'installeur et suivre les étapes (options par défaut suffisent) + +> **ℹ️ Note :** DBeaver supporte plus de 80 types de bases de données différents (PostgreSQL, MySQL, SQLite, SQL Server, Azure SQL…). Un seul outil pour tous les projets. + +--- + +## 5. Outils Microsoft Azure + +### 5.1 Azure CLI + +| Paramètre | Valeur | +|-----------------|--------------------------------------------------------------------------------------| +| MSI | https://learn.microsoft.com/fr-fr/cli/azure/install-azure-cli-windows | +| Via winget | `winget install --exact --id Microsoft.AzureCLI` | + +```powershell +az --version # Vérifier l'installation +az login # Se connecter à Azure +az account show # Vérifier la connexion +``` + +### 5.2 Azure PowerShell (module Az) + +Ouvrir PowerShell 7 en tant qu'Administrateur : + +```powershell +Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force +Connect-AzAccount # Se connecter +Get-AzSubscription # Vérifier les abonnements +``` + +### 5.3 Azure Storage Explorer + +| Paramètre | Valeur | +|----------------|---------------------------------------------------------------------| +| Téléchargement | https://azure.microsoft.com/fr-fr/features/storage-explorer/ | + +1. Télécharger et installer Azure Storage Explorer +2. Se connecter avec le compte Azure de la formation + +### 5.4 Azure Data Studio *(optionnel)* + +Outil de gestion de bases de données Azure SQL et SQL Server. + +| Paramètre | Valeur | +|----------------|-----------------------------------------------------------------------------------------------| +| Téléchargement | https://learn.microsoft.com/fr-fr/azure-data-studio/download-azure-data-studio | + +--- + +## 6. Outils de conteneurisation + +### 6.1 Docker Desktop + +| Paramètre | Valeur | +|----------------|-----------------------------------------------------------------| +| Téléchargement | https://www.docker.com/products/docker-desktop/ | +| Prérequis | WSL2 activé, Virtualisation BIOS activée | + +1. Télécharger Docker Desktop pour Windows +2. Lancer l'installeur (droits Administrateur requis) +3. Sélectionner **WSL2** comme backend *(recommandé)* +4. Redémarrer l'ordinateur +5. Lancer Docker Desktop et attendre le démarrage du démon +6. Vérifier : + ```powershell + docker --version + docker run hello-world + ``` + +> **ℹ️ Note :** Docker Desktop nécessite une licence pour un usage professionnel commercial (entreprise > 250 personnes). Dans le cadre de la formation, l'usage est gratuit. + +### 6.2 kubectl (Kubernetes CLI) + +```powershell +# Inclus avec Docker Desktop (activer Kubernetes dans les paramètres) +# Ou installer séparément : +winget install --id Kubernetes.kubectl + +# Vérification +kubectl version --client +``` + +### 6.3 Helm + +Helm est le gestionnaire de packages pour Kubernetes. + +```powershell +winget install --id Helm.Helm # Installation +helm version # Vérification +``` + +--- + +## 7. Infrastructure as Code (IaC) + +### 7.1 Terraform + +| Paramètre | Valeur | +|----------------|-----------------------------------------------------------------| +| Téléchargement | https://developer.hashicorp.com/terraform/downloads | +| Via winget | `winget install --id Hashicorp.Terraform` | + +```powershell +terraform --version # Vérification +terraform init # Initialiser un projet +``` + +> **ℹ️ Note :** L'extension VS Code **HashiCorp Terraform** apporte la coloration syntaxique, l'autocomplétion et la validation des fichiers `.tf`. + +### 7.2 Ansible (via WSL2) + +Ansible s'installe dans l'environnement Linux WSL2 (Ubuntu) : + +```bash +sudo apt update && sudo apt upgrade -y +sudo apt install ansible -y +ansible --version # Vérification +``` + +### 7.3 Bicep (Azure Resource Manager) + +Bicep est le langage d'Infrastructure as Code natif d'Azure, alternative simplifiée aux ARM Templates. + +```powershell +az bicep install # Installation via Azure CLI +az bicep version # Vérification +``` + +> **ℹ️ Note :** Installer l'extension **Bicep** dans VS Code pour l'autocomplétion et la validation. + +--- + +## 8. Outils CI/CD et gestion de code + +### 8.1 GitHub Desktop *(optionnel)* + +| Paramètre | Valeur | +|----------------|------------------------------| +| Téléchargement | https://desktop.github.com/ | + +1. Télécharger et installer GitHub Desktop +2. Se connecter avec le compte GitHub de la formation + +### 8.2 Configuration SSH pour GitHub / Azure DevOps + +```powershell +# 1. Générer une clé SSH +ssh-keygen -t ed25519 -C "email@exemple.com" + +# 2. Démarrer l'agent SSH +Get-Service -Name ssh-agent | Set-Service -StartupType Manual +Start-Service ssh-agent + +# 3. Ajouter la clé +ssh-add ~/.ssh/id_ed25519 + +# 4. Afficher la clé publique (à copier dans GitHub / Azure DevOps) +cat ~/.ssh/id_ed25519.pub + +# 5. Tester la connexion +ssh -T git@github.com +``` + +### 8.3 Azure DevOps + +1. Se rendre sur : https://dev.azure.com/ +2. Créer ou rejoindre une organisation Azure DevOps +3. Créer un premier projet et un dépôt Git +4. Lier avec l'Azure CLI : + ```powershell + az devops configure --defaults organization=https://dev.azure.com/NomOrga + ``` + +--- + +## 9. Sécurité et bonnes pratiques + +### 9.1 Gestionnaire de mots de passe + +Utiliser un gestionnaire de mots de passe pour stocker les credentials Azure en toute sécurité. + +- **Bitwarden** *(gratuit, open source)* : https://bitwarden.com/ +- **1Password** : https://1password.com/ +- **KeePass** *(local)* : https://keepass.info/ + +### 9.2 Multi-Factor Authentication (MFA) + +1. Activer le MFA sur le **compte Azure** de formation +2. Installer **Microsoft Authenticator** sur votre mobile +3. Activer également le MFA sur **GitHub** et **Azure DevOps** + +### 9.3 Gestion des secrets + +> ⚠️ Ne jamais stocker de secrets (clés API, mots de passe, tokens) en clair dans le code. + +- Utiliser des variables d'environnement ou des fichiers `.env` non versionnés +- Ajouter `.env` au fichier `.gitignore` +- Utiliser **Azure Key Vault** pour les secrets de production +- Pour Terraform : utiliser des variables d'entrée ou le provider Azure Key Vault + +### 9.4 Windows Defender + +Windows Defender peut parfois bloquer certains outils DevOps. Si nécessaire : + +- Ajouter des exclusions pour le dossier de développement (ex : `C:\Users\[user]\dev`) +- Ajouter des exclusions pour Docker Desktop et WSL +- ⚠️ Ne jamais désactiver complètement Windows Defender + +--- + +## 10. Vérification de l'installation + +Une fois toutes les installations terminées, vérifier chaque outil dans PowerShell ou Windows Terminal : + +| Outil | Commande de vérification | Résultat attendu | +|----------------|------------------------------------|--------------------------------------------| +| Git | `git --version` | git version 2.x.x | +| Node.js | `node --version` | v20.x.x ou supérieur | +| Python | `python --version` | Python 3.11.x ou supérieur | +| DBeaver | Lancer l'application | Fenêtre principale visible | +| Azure CLI | `az --version` | azure-cli 2.x.x | +| Terraform | `terraform --version` | Terraform v1.x.x | +| Docker | `docker --version` | Docker version 26.x.x | +| kubectl | `kubectl version --client` | Client Version: v1.x.x | +| Helm | `helm version` | version.BuildInfo{Version:"v3.x.x"} | +| PowerShell 7 | `pwsh --version` | PowerShell 7.x.x | +| WSL2 | `wsl --list --verbose` | Ubuntu Running (WSL 2) | +| Ansible (WSL) | `ansible --version` | ansible [core 2.x.x] | +| Bicep | `az bicep version` | Bicep CLI version x.x.x | + +--- + +## 11. Ressources et liens utiles + +### 11.1 Documentation officielle + +- **Microsoft Learn (Azure)** : https://learn.microsoft.com/fr-fr/azure/ +- **Azure CLI** : https://learn.microsoft.com/fr-fr/cli/azure/ +- **Docker** : https://docs.docker.com/ +- **Terraform sur Azure** : https://developer.hashicorp.com/terraform/tutorials/azure-get-started +- **Kubernetes** : https://kubernetes.io/fr/docs/home/ +- **Ansible** : https://docs.ansible.com/ +- **Bicep** : https://learn.microsoft.com/fr-fr/azure/azure-resource-manager/bicep/ + +### 11.2 Comptes à créer + +- **Compte Microsoft Azure** *(essai gratuit – 200 $ de crédit)* : https://azure.microsoft.com/fr-fr/free/ +- **Compte GitHub** : https://github.com/ +- **Compte Docker Hub** : https://hub.docker.com/ +- **Azure DevOps** *(gratuit pour 5 utilisateurs)* : https://dev.azure.com/ + +### 11.3 Parcours de formation recommandés (Microsoft Learn) + +- **AZ-900** : Fondamentaux Azure +- **AZ-104** : Administration Azure +- **AZ-400** : DevOps Engineer Expert +- **Parcours DevOps** : https://learn.microsoft.com/fr-fr/training/paths/devops-dojo-white-belt-foundation/ + +--- + +*Formation DevOps Azure | Simplon | 2025-2026*