Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 116 additions & 0 deletions 01-introduction-concepts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# 01 - Introduction à GitHub

[🏠 Retour à l'accueil](README.md) | [02 - Premiers pas →](02-premiers-pas-ssh.md)

---

## Objectifs de cette partie

- Comprendre ce qu'est GitHub et son rôle en DevOps Azure
- Distinguer Git et GitHub
- Découvrir les concepts clés de la plateforme
- Situer GitHub dans la chaîne DevOps Azure
- Comparer GitHub et Azure DevOps

---

## Qu'est-ce que GitHub ?

**GitHub** est une plateforme web d'hébergement et de gestion de code source basée sur Git. Lancée en 2008 et rachetée par Microsoft en 2018, c'est la plus grande plateforme de développement collaboratif au monde avec plus de 100 millions de développeurs.

Dans un contexte **DevOps Azure**, GitHub est bien plus qu'un simple hébergeur de code : c'est le **point de contrôle central** de toute modification d'infrastructure avant qu'elle n'atteigne Azure.

### GitHub vs Git

| Aspect | Git | GitHub |
|---|---|---|
| **Type** | Outil local de versionnage | Plateforme cloud collaborative |
| **Installation** | Sur votre machine | Hébergé par Microsoft |
| **Fonction principale** | Versionner du code / IaC | Héberger, collaborer, automatiser |
| **Interface** | Ligne de commande | Interface web + CLI + API |
| **Collaboration** | Possible mais limitée | Optimisée : PR, Reviews, Issues |

**Git** est le moteur local. **GitHub** est la plateforme qui orchestre la collaboration et les déploiements Azure autour de ce moteur.

---

## Pourquoi GitHub est central en DevOps Azure ?

### 🏗️ Source de vérité pour l'infrastructure

Tous vos fichiers Terraform, Bicep, manifests Kubernetes et scripts Azure CLI vivent dans GitHub. Personne ne modifie Azure directement via le portail — tout passe par un commit, une Pull Request et un pipeline automatisé. C'est le principe fondateur du **GitOps**.

### 🔄 CI/CD intégré nativement

**GitHub Actions** déclenche automatiquement `terraform plan` à chaque PR et `terraform apply` après merge sur `main`, sans outil externe. L'authentification avec Azure se fait via **OIDC** (sans stocker de credentials).

### 🔒 Contrôle d'accès et traçabilité

Les **Branch Rulesets** et **CODEOWNERS** garantissent qu'aucune modification d'infrastructure sensible n'est mergée sans la validation des bonnes personnes. Chaque action est auditée.

### 🛡️ Sécurité proactive

**Secret Scanning** bloque la publication accidentelle de credentials Azure. **Dependabot** maintient les versions des providers Terraform à jour. **CodeQL** détecte les failles dans les scripts.

### 📊 Gestion de projet intégrée

**Issues**, **Projects** et **Milestones** permettent de piloter les chantiers d'infrastructure (migration AKS, mise à jour providers, remédiation sécurité) sans quitter l'outil.

---

## Les concepts clés de GitHub

| Concept | Description en DevOps Azure |
|---|---|
| **Repository** | Dépôt contenant votre IaC, manifests K8s et pipelines CI/CD |
| **Fork** | Copie d'un module Terraform public pour le personnaliser |
| **Pull Request (PR)** | Validation obligatoire avant tout `terraform apply` en production |
| **Issue** | Ticket pour un incident infra, une évolution ou une faille de sécurité |
| **Actions** | Workflows CI/CD déclenchant les déploiements Azure |
| **Environments** | Représentation de dev/staging/prod avec leurs secrets et leurs gates |
| **CODEOWNERS** | Fichier définissant qui doit approuver chaque partie de l'infra |

---

## GitHub dans la chaîne DevOps Azure

```
Ingénieur DevOps
│ git push → Pull Request
┌──────────────────────────────────────┐
│ GitHub │
│ Branch Rulesets ── CODEOWNERS │
│ Secret Scanning ── Dependabot │
└────────────────┬─────────────────────┘
│ GitHub Actions (OIDC)
┌──────────────────────────────────────┐
│ Azure │
│ terraform plan / apply → Resources │
│ az acr build → ACR │
│ kubectl apply → AKS │
└──────────────────────────────────────┘
```

---

## GitHub vs Azure DevOps

Les deux plateformes appartiennent à Microsoft et s'intègrent avec Azure. Le choix dépend du contexte :

| Critère | GitHub | Azure DevOps |
|---|---|---|
| **CI/CD** | GitHub Actions | Azure Pipelines |
| **Gestion de projet** | Projects (Kanban/Table/Roadmap) | Boards (plus complet, intégration Jira) |
| **Dépôts** | GitHub Repos | Azure Repos |
| **Intégration Azure** | Via OIDC + `azure/login` | Native (Service Connection) |
| **Communauté** | La plus grande, open source | Principalement entreprises |
| **Cas d'usage** | Équipes modernes, cloud-native | Organisations avec historique Microsoft |

> 💡 **En pratique** : les deux coexistent souvent en entreprise. Le code et les pipelines sur GitHub, la gestion de backlog sur Azure DevOps Boards.

---

[🏠 Retour à l'accueil](README.md) | [02 - Premiers pas →](02-premiers-pas-ssh.md)
161 changes: 161 additions & 0 deletions 02-premiers-pas-ssh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
# 02 - Premiers pas sur GitHub

[← 01 - Introduction](01-introduction-concepts.md) | [🏠 Accueil](README.md) | [03 - Pull Requests →](03-pull-requests-code-review.md)

---

## Objectifs de cette partie

- Créer un compte GitHub professionnel
- Configurer votre profil DevOps
- Mettre en place l'authentification SSH
- Créer votre premier dépôt IaC
- Pousser un projet existant vers GitHub

---

## Créer un compte GitHub

1. Rendez-vous sur [github.com](https://github.com)
2. Cliquez sur **Sign up**
3. Choisissez un nom d'utilisateur professionnel (visible sur toutes vos contributions)
4. Vérifiez votre email
5. Le plan **Free** est suffisant — GitHub Teams/Enterprise est géré par votre organisation

### Configurer votre profil DevOps

Un profil complet renforce votre crédibilité auprès des recruteurs et collègues :

- **Photo de profil** : photo professionnelle
- **Nom complet** : votre vrai nom
- **Bio** : `Ingénieur DevOps Azure | Terraform · AKS · GitHub Actions · CI/CD`
- **Localisation** : ville, pays
- **Site web** : LinkedIn ou portfolio
- **Entreprise** : votre employeur actuel

---

## Authentification SSH

SSH est la méthode recommandée pour interagir avec GitHub depuis le terminal : plus sécurisée, pas de mot de passe à chaque push.

### Étape 1 : Générer une clé SSH

```bash
# Algorithme ED25519 — moderne et recommandé
ssh-keygen -t ed25519 -C "votre.email@example.com"

# Acceptez le chemin par défaut (~/.ssh/id_ed25519)
# Définissez une passphrase (recommandé)
```

### Étape 2 : Démarrer l'agent SSH

```bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
```

### Étape 3 : Copier la clé publique

```bash
cat ~/.ssh/id_ed25519.pub
# Sur macOS : pbcopy < ~/.ssh/id_ed25519.pub
```

### Étape 4 : Ajouter la clé sur GitHub

1. **Settings** → **SSH and GPG keys** → **New SSH key**
2. Titre : `Laptop DevOps` (identifiez la machine)
3. Collez la clé publique
4. **Add SSH key**

### Étape 5 : Tester la connexion

```bash
ssh -T git@github.com
# Réponse attendue :
# Hi username! You've successfully authenticated...
```

---

## Créer votre premier dépôt IaC

### Via l'interface web

1. Cliquez sur **+** → **New repository**
2. Configurez :
- **Repository name** : `infra-azure-devops`
- **Description** : `Infrastructure Azure - Terraform + AKS`
- **Private** (par défaut pour l'infra)
- ✅ Add a README file
- **.gitignore** : choisissez **Terraform**
3. **Create repository**

### Structure de dépôt recommandée

```
infra-azure-devops/
├── modules/
│ ├── aks/
│ └── network/
├── environments/
│ ├── dev/
│ └── prod/
├── kubernetes/
├── .github/
│ ├── workflows/
│ ├── CODEOWNERS
│ └── pull_request_template.md
├── .gitignore ← généré par GitHub (Terraform)
└── README.md
```

---

## Pousser un projet local existant vers GitHub

```bash
# 1. Créer un repo VIDE sur GitHub (sans README ni .gitignore)

# 2. Dans votre projet local
cd infra-azure-devops

# 3. Lier le remote
git remote add origin git@github.com:votre-username/infra-azure-devops.git

# 4. Vérifier
git remote -v

# 5. Pousser
git branch -M main
git push -u origin main
```

---

## ⚠️ Avant de pousser : vérifiez votre .gitignore

Un credential Azure commité sur GitHub est un credential compromis — même supprimé, il reste dans l'historique Git.

```gitignore
# Terraform — généré automatiquement par GitHub
*.tfstate
*.tfstate.*
.terraform/
.terraform.lock.hcl
*.tfplan

# Secrets Azure
.env
*.pem
service-principal.json
terraform.tfvars # contient souvent des valeurs sensibles
```

> 💡 **Conseil** : activez dès maintenant **Secret Scanning** sur votre organisation GitHub (Settings → Code security). Il bloquera tout push contenant un pattern de credential Azure reconnu.

---

[← 01 - Introduction](01-introduction-concepts.md) | [🏠 Accueil](README.md) | [03 - Pull Requests →](03-pull-requests-code-review.md)
Loading
Loading