Module 0 – Préparer l’environnement DevOps

Installez la toolchain DevOps complète (Git, Docker, Terraform, Ansible, CLIs) et préparez votre dépôt de formation avec scripts de vérification.

Ce module prépare votre poste pour l’ensemble du parcours : Git, conteneurs, IaC, configuration et outils cloud. L’objectif est d’obtenir un environnement reproductible (Linux, macOS ou Windows via WSL2) et un dépôt de formation partagé.

Objectifs

  • Installer et configurer la toolchain DevOps (Git, Docker, Terraform, Ansible, kubectl, Helm, Packer, CLIs cloud).
  • Créer un dépôt Git privé contenant scripts, manifestes et notes de formation.
  • Mettre en place des scripts de provisionning et de reset pour travailler en environnement propre.

1. Préparer l’OS et les dépendances système

Sur Linux/Debian :

sudo apt update
sudo apt install -y build-essential curl unzip jq python3 python3-pip python3-venv

Sur macOS, exécutez xcode-select --install puis brew bundle (voir fichier ci-dessous).

2. Installer la toolchain DevOps

Fichier d’installation (Linux)

cat <<'SCRIPT' > bootstrap-devops.sh
#!/usr/bin/env bash
set -euo pipefail
apt_packages=(git docker.io docker-compose-plugin gnupg lsb-release software-properties-common)
sudo apt install -y "${apt_packages[@]}"
# Terraform
if ! command -v terraform >/dev/null; then
  curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
  echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
  sudo apt update && sudo apt install -y terraform
fi
# Terragrunt
TG_VERSION="v0.56.7"
if ! command -v terragrunt >/dev/null; then
  curl -Lo terragrunt https://github.com/gruntwork-io/terragrunt/releases/download/${TG_VERSION}/terragrunt_linux_amd64
  chmod +x terragrunt && sudo mv terragrunt /usr/local/bin/
fi
# Ansible
pip install --upgrade ansible ansible-lint
# kubectl & helm
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
# Packer
if ! command -v packer >/dev/null; then
  sudo apt install -y packer
fi
# AWS & Azure CLI
curl -sSL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip && unzip -q awscliv2.zip
sudo ./aws/install --update
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
SCRIPT
chmod +x bootstrap-devops.sh
./bootstrap-devops.sh

Fichier Brewfile (macOS)

cat <<'BREW' > Brewfile
tap "hashicorp/tap"
brew "git"
brew "hashicorp/tap/terraform"
brew "terragrunt"
brew "ansible"
brew "kubectl"
brew "helm"
brew "packer"
brew "awscli"
brew "azure-cli"
brew "snyk"
cask "docker"
BREW
brew bundle

3. Configurer Docker et les permissions

sudo usermod -aG docker "$USER"
newgrp docker
docker run --rm hello-world

Installez aussi docker buildx (docker buildx install) pour les modules containers.

4. Créer le dépôt de formation

mkdir -p ~/devops-training/{docs,infra,playbooks,apps}
cd ~/devops-training
git init
cat <<'EOF' > README.md
# DevOps Training Repo
- `infra/` : Terraform/Terragrunt
- `playbooks/` : Ansible + Packer
- `apps/` : applications de démonstration
- `docs/` : journal de bord et procédures
EOF
cat <<'EOF' > .gitignore
# Terraform
*.tfstate
*.tfstate.*
.terraform/
# Ansible
*.retry
# Docker
**/dist/**
EOF
git add .
git commit -m "chore: bootstrap devops training repo"

Publiez le dépôt sur GitHub/GitLab (privé). Activez les règles : protected branches, approvals, secret scanning.

5. Scripts utilitaires

  • scripts/reset-dev.sh : supprime containers, kube clusters, fichiers temporaires.
  • scripts/check-tooling.sh : vérifie versions.
cat <<'EOF' > scripts/check-tooling.sh
#!/usr/bin/env bash
set -euo pipefail
commands=(git docker terraform terragrunt ansible kubectl helm packer aws az)
for cmd in "${commands[@]}"; do
  printf "%-12s => %s
" "$cmd" "$(command -v $cmd >/dev/null && $cmd --version 2>&1 | head -n1 || echo 'MANQUANT')"
done
EOF
chmod +x scripts/check-tooling.sh
./scripts/check-tooling.sh

6. Lab guidé

  1. Exécuter bootstrap-devops.sh ou brew bundle selon l’OS.
  2. Créer le dépôt Git, pousser la première version (main branch).
  3. Configurer les CLI cloud :
    aws configure --profile training
    az login --use-device-code
    

    Stockez les profils dans ~/.aws/config et ~/.azure.

  4. Lancer scripts/check-tooling.sh et ajouter la sortie dans docs/journal.md.
  5. Configurer un runner local (GitHub Actions ./config.sh ou GitLab Runner) pour la suite des labs.

Challenge optionnel

  • Créer un container Docker personnalisé (ghcr.io/<org>/devops-toolbox) contenant tous les outils.
  • Mettre en place un Makefile (make install, make check, make reset).
  • Automatiser l’installation via Ansible local (ansible-playbook bootstrap.yml -K).

Solution détaillée

  1. Vérifications versions : scripts/check-tooling.sh doit afficher chaque binaire avec sa version. Les commandes manquantes doivent être traitées avant la suite.
  2. Docker : docker run hello-world imprime le message “Hello from Docker!”. Si permission denied, relancez la session après ajout au groupe.
  3. Terraform/Terragrunt : terraform -version ≥ 1.6.x, terragrunt -version ≥ 0.56.
  4. kubectl/helm : kubectl version --client --short et helm version doivent répondre. Exécutez kubectl completion bash puis source ~/.bashrc pour valider l’autocomplétion.
  5. Dépôt Git : git remote -v affiche l’URL du repository privé. Vérifiez que la première pipeline CI passe (lint basique).
  6. Journal : docs/journal.md contient la date, les commandes exécutées et les éventuels problèmes rencontrés.

Une fois ces points validés, vous pouvez attaquer le module 1 sans risque de manquer un outil critique.

Pièges fréquents

  • Oublier d’exécuter newgrp docker après ajout au groupe : les commandes Docker échouent avec 13 permission denied7.
  • Utiliser sudo dans tout le dépôt : préférez exécuter les scripts en tant qu’utilisateur (sauf installation initiale).
  • Installer HashiCorp via snap : versions obsolètes. Utilisez les repo officiels.

Ressources complémentaires

Checklist

  • ✅ Toolchain installée et vérifiée (scripts/check-tooling.sh).
  • ✅ Dépôt Git privé initialisé et synchronisé.
  • ✅ Scripts bootstrap et reset opérationnels.
  • ✅ Journal de bord commencé dans docs/journal.md.