Terminal Pro sur macOS
iTerm2 + Zsh + Powerlevel10k pour DevOps et SRE
Transformez votre terminal en station de contrôle d’infrastructure avec des outils, des alias et une esthétique qui vous fait aimer la ligne de commande.
Si vous êtes ingénieur DevOps ou SRE sur macOS, votre terminal est votre espace de travail principal. Vous y déployez les conteneurs, orchestrez Kubernetes, lancez Terraform et lancez des alertes production. Avec la bonne configuration, il peut devenir une interface puissante qui vous prévient automatiquement si vous êtes connecté au bon cluster, affiche votre contexte AWS en temps réel, et vous fait gagner des heures chaque année sur les tâches répétitives.
Voici comment configurer iTerm2 + Zsh + Powerlevel10k pour un environnement SRE professionnel et fiable. Pas de cosmétique vide : chaque élément sert un but.
Prérequis et fondations
Avant toute chose, vous avez besoin de Homebrew et des bonnes polices. Ce sont les briques de base.
Étape 1 : Installer Homebrew
Si ce n’est pas encore fait, installez Homebrew. C’est votre gestionnaire de paquets sur macOS.
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
Étape 2 : La police MesloLGS NF
Powerlevel10k affiche des icônes sophistiquées pour Git, Docker, Kubernetes, AWS. Sans la bonne police, vous verrez des caractères cassés. Vous devez installer MesloLGS NF (Nerd Font).
Configuration rapide de la police
Exécutez cette commande dans votre terminal actuel (avant d’installer iTerm2) :
curl -L “https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf” -o ~/Downloads/MesloLGS_NF_Regular.ttf
curl -L “https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf” -o ~/Downloads/MesloLGS_NF_Bold.ttf
curl -L “https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf” -o ~/Downloads/MesloLGS_NF_Italic.ttf
curl -L “https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf” -o ~/Downloads/MesloLGS_NF_Bold_Italic.ttf
Puis, ouvrez votre dossier Téléchargements et double-cliquez sur chaque fichier `.ttf`. Cliquez sur Installer à chaque fois.
Installation d’iTerm2
iTerm2 est plus que Terminal.app. Il offre des multi-panneaux, des profils colorés par environnement, et des intégrations qui sauvent des vies en production.
brew install –cask iterm2
Lancez iTerm2. Allez dans Préférences (Cmd + ,) puis Profiles / Text. Cherchez Change Font en bas à droite et sélectionnez MesloLGS NF Regular.
Oh My Zsh et Powerlevel10k
Zsh est le shell par défaut de macOS depuis Catalina. Oh My Zsh vous en donne un écosystème complet. Powerlevel10k vous donne un prompt qui change de couleur selon votre contexte.
Installer Oh My Zsh
sh -c “$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)”
Installer Powerlevel10k et les plugins
brew install powerlevel10k zsh-autosuggestions zsh-syntax-highlighting
Votre fichier .zshrc optimisé pour SRE
C’est ici qu’on fabrique la magie. Voici la configuration complète pour un ingénieur SRE/DevOps en 2026.
Collez ce script dans votre terminal. Il écrase votre `~/.zshrc` avec une configuration prête pour la prod :
# Mode Prompt Instantané – Vitesse de chargement accrue
if [[ -r “${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh” ]]; then
source “${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh”
fi
# Chemin d’installation Oh My Zsh
export ZSH=”$HOME/.oh-my-zsh”
# Configuration du thème
ZSH_THEME=“powerlevel10k/powerlevel10k”
# Plugins SRE/DevOps complets avec auto-suggestion et correction
plugins=(git z sudo docker docker-compose kubectl helm command-not-found history-substring-search thefuck colored-man-pages macos copypath extract safe-paste gitignore aws brew)
source $ZSH/oh-my-zsh.sh
# Auto-complétion Kubernetes, Helm et AWS CLI
[[ -r “/opt/homebrew/bin/kubectl” ]] && source <(kubectl completion zsh)
[[ -r “/opt/homebrew/bin/helm” ]] && source <(helm completion zsh)
[[ -r “/opt/homebrew/bin/aws” ]] && complete -C ‘/opt/homebrew/bin/aws_completer’ aws
# Alias DevOps pour économiser vos doigts
alias k=”kubectl”
alias kgp=”kubectl get pods”
alias kgs=”kubectl get svc”
alias kgd=”kubectl get deployments”
alias kctx=”kubectx”
alias kns=”kubens”
alias k9s-prod=”kubectx prod-eu1 && k9s”
alias k9s-staging=”kubectx staging && k9s”
alias tf=”terraform”
alias tfa=”terraform apply”
alias tfp=”terraform plan”
alias tfd=”terraform destroy”
alias tfv=”terraform validate”
alias dps=”docker ps –format ‘table {{.Names}}\t{{.Status}}\t{{.Ports}}'”
alias ld=”lazydocker”
# Chargement des plugins externes Homebrew
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# Configuration thefuck pour la correction de commandes
eval $(thefuck –alias)
# Charge votre profil Powerlevel10k
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
EOF
Exécutez immédiatement les changements :
ln -s /opt/homebrew/share/powerlevel10k ~/.oh-my-zsh/custom/themes/powerlevel10k 2>/dev/null
exec zsh
Installez thefuck avant d’utiliser le fichier .zshrc :
brew install thefuck
Le guide complet des plugins Oh My Zsh
Votre configuration active 16 plugins Oh My Zsh. Chacun remplit une fonction précise pour vous économiser du temps et prévenir les erreurs. Voici comment les utiliser.
Les incontournables : Git, Navigation & Sudo
git – Raccourcis Git essentiels
Au lieu de taper les commandes complètes :
gst
# Affiche git status
ga .
# Ajoute tous les fichiers (git add .)
gcmsg “fix: kubectl timeout issue”
# Commit avec message (git commit -m)
gp
# Git push
Liste complète : tapez alias | grep git pour voir les 100+ raccourcis disponibles.
z – Téléportation entre répertoires
Normalement :
cd ../../../../projects/terraform/prod-eu1/modules/networking
Avec z :
z prod-eu1
z mémorise vos répertoires les plus visités et vous y téléporte en une commande. Magique pour les SRE qui naviguent 50 dossiers par jour.
sudo – Ajouter sudo en deux Espace
Vous avez oublié sudo :
systemctl restart docker
# Appuyez sur Espace deux fois
sudo systemctl restart docker
Prédiction & Correction intelligente
zsh-autosuggestions – Prédiction intelligente en gris
Vous commencez à taper une commande :
kubectl get pods -n production-app
Le texte en gris est une suggestion basée sur votre historique. Appuyez sur Tab ou Flèche droite pour l’accepter. Vous économisez des centaines de frappes par mois.
history-substring-search – Chercher dans l’historique
Vous tapez le début d’une commande et appuyez sur Flèche Haut :
kubectl logs
# Appuyez sur Flèche Haut
kubectl logs -f deployment/api –tail=100
Zsh cherche dans tout votre historique les commandes commençant par kubectl logs. C’est bien plus utile que Ctrl+R.
thefuck – Corriger vos typos instantanément
Vous faites une typo :
kubectl gett pods
error: unknown command “gett”
fuck
kubectl get pods [Enter]
Oui, le plugin s’appelle vraiment fuck. C’est corrigé et exécuté. Économise une heure par semaine en production.
Docker & Kubernetes : Auto-complétion Pro
docker, docker-compose & kubectl – Auto-complétion avancée
Ces plugins activent l’auto-complétion intelligent :
docker ps –format [TAB] # Affiche tous les formats disponibles
kubectl get [TAB] # Affiche toutes les ressources (pods, svc, deployments…)
helm install [TAB] # Affiche tous les charts disponibles
Utilitaires et Productivité
command-not-found – Suggestions intelligentes
Vous tapez une commande qui n’existe pas :
kubectly
command not found: kubectly
Did you mean: kubectl
colored-man-pages – Man pages lisibles
man kubectl s’affiche maintenant en couleur avec une meilleure hiérarchie. Après 8h sur un écran blanc, vos yeux vous remercient.
extract – Décompresser sans penser
Au lieu de mémoriser les bonnes flags :
extract backup.tar.gz
extract config.zip
extract archive.7z
Ça détecte le format automatiquement et décompresse. Un gain léger mais consistent.
safe-paste – Prévention des accidents
Vous collez 50 lignes de code en masse. safe-paste pause et demande confirmation avant d’exécuter. Sauve votre prod une fois tous les deux ans.
copypath – Copier le chemin courant
Vous êtes dans un répertoire complexe :
pwd
/Users/seif/projects/terraform/prod-eu1/modules/networking
copypath
# Le chemin est copié en clipboard
Utile pour les scripts et la documentation.
gitignore – Générer .gitignore automatiquement
Vous créez un nouveau projet Terraform/Python/Node :
gi terraform python macos
# Génère un .gitignore avec les bonnes règles
Cloud & Infrastructures
aws – Auto-complétion AWS CLI
Naviguez vos ressources AWS avec l’auto-complétion :
aws s3 ls [TAB] # Affiche tous vos buckets
aws ec2 describe-instances –[TAB] # Affiche tous les flags disponibles
brew – Auto-complétion Homebrew
brew install [TAB] affiche tous les paquets disponibles et vous aide à chercher rapidement.
macOS Spécifique
macos – Raccourcis natifs macOS
Des commandes pratiques spécifiques à macOS :
open .
# Ouvre le répertoire courant dans Finder
quick-look FILE.pdf
# Affiche un aperçu rapide
rm-ds_store
# Supprime tous les .DS_Store du répertoire
Résumé : Votre arsenal productivité
- Moins de 100 frappes clavier par jour pour les commandes récurrentes
- Zéro décision sur les flags (l’auto-complétion vous montre les options)
- Prévention des typos en production (thefuck + command-not-found)
- Navigation 10x plus rapide entre répertoires (z)
- Moins de risques de collage accidentel de commandes dangereux (safe-paste)
Configuration visuelle Powerlevel10k
Powerlevel10k vous demandera de configurer votre prompt visuellement. Voici les réglages recommandés pour un SRE.
Après exec zsh, le configurateur Powerlevel10k devrait se lancer. Sinon, tapez :
p10k configure
Réglages recommandés
- Style : Choisissez
ClassicouRainbowpour bien segmenter les informations visuelles. - Format d’heure :
24-hour. En production, l’heure doit être alignée avec vos logs et vos dashboards (UTC ou locale selon votre équipe). - Segments de droite : Laissez activés
AWS,Kubernetes context,Terraform workspace,Docker. Votre prompt changera de couleur ou affichera le cluster Kubernetes sur lequel vous êtes connecté, évitant ainsi les déploiements catastrophiques sur le mauvais environnement.
[prod-eu1] s’afficher en rouge vif dans votre prompt après chaque commande, vous saurez immédiatement que vous êtes en production. C’est utile une fois tous les deux ans, et ça vaut tout l’effort.
Astuces iTerm2 avancées pour production
iTerm2 offre des super-pouvoirs que Terminal.app n’a pas. En voici quelques-uns qui vous rendront plus rapide en incident.
Multi-panneaux : Surveiller plusieurs services à la fois
En SRE, vous devez souvent watchdog plusieurs services ou machines en même temps.
- Cmd + d : Divise l’écran verticalement
- Cmd + Shift + d : Divise l’écran horizontalement
- Cmd + Alt + Flèches : Navigate entre les volets
Exemple d’usage : Ouvrez un volet pour tails les logs d’une app, et un autre pour watch les metrics Prometheus en temps réel.
Profils par environnement
Créez un profil séparé pour production :
- Allez à Preferences / Profiles
- Cliquez le + pour créer un nouveau profil. Nommez-le Production
- Allez dans Colors et changez le Background pour un rouge très foncé ou une bande orange vif
- Connectez-vous à vos infras de production via ce profil uniquement
Résultat : Vous traversez l’écran rouge de votre terminal production, vous réfléchissez à deux fois avant de lancer rm -rf quoi que ce soit.
Search et Copy avec Context
Cmd + f ouvre la barre de recherche dans votre historique de terminal. Trouvez la commande Docker que vous avez lancée hier. Copiez la sortie exacte de votre déploiement Terraform pour l’audit.
Alias courants à ajouter
Voici une liste d’alias qui vous feront gagner du temps chaque semaine. Adaptez selon votre workflow.
alias kdesc=”kubectl describe”
alias klogs=”kubectl logs -f”
alias kexec=”kubectl exec -it”
alias kdel=”kubectl delete”
# Docker shortcuts
alias dls=”docker image ls”
alias dlogs=”docker logs -f”
# Terraform
alias tfv=”terraform validate”
alias tfd=”terraform destroy”
# AWS
alias awss=”aws s3 ls”
alias awsec2=”aws ec2 describe-instances”
Ajoutez ces alias dans votre section des alias du fichier `~/.zshrc` (avant le `EOF`).
Entretien et mise à jour
Votre setup doit rester à jour pour avoir les corrections de sécurité et les nouvelles fonctionnalités.
Chaque mois
brew upgrade met à jour tous vos outils installés via Homebrew (iTerm2, Powerlevel10k, etc.)
brew upgrade
Tous les 3 mois
Vérifiez que votre police MesloLGS NF est à jour. Les iconographies Powerlevel10k évoluent.
Une fois par an
Relancez p10k configure et vérifiez que vos segments sont à jour (les plugins Kubernetes et AWS changent souvent de noms).
Outils visuels pour Kubernetes : le niveau pro
Vous maîtrisez kubectl en ligne de commande. Maintenant, installez les outils qui transforment votre workflow Kubernetes. Trois outils essentiels : kubectx, kubens, et k9s. Optionnel mais recommandé : lazydocker.
kubectx et kubens : Basculer entre clusters sans typage
En production, vous gérez souvent 3 à 10 clusters Kubernetes (dev, staging, prod-eu, prod-us, etc.). Taper `kubectl config use-context prod-eu1` à chaque fois, c’est lent et source d’erreurs. kubectx et kubens le font en une ligne.
Installation
brew install kubectx
Cela installe à la fois kubectx et kubens. Vérifiez :
kubectx
kubens
Comment les utiliser
kubectx
CURRENT NAME
* prod-eu1
prod-us1
staging
dev
kubectx staging
Switched to context “staging”
kubens
CURRENT NAME
* default
kube-system
kube-public
production-app
monitoring
kubens production-app
Context “staging” modified.
Sans arguments, les deux outils affichent une liste interactive. Tapez pour chercher. C’est plus rapide que de mémoriser les noms exacts.
Intégration avec votre .zshrc
Ajoutez ces alias pour aller encore plus vite :
alias kctx=”kubectx”
alias kns=”kubens”
alias kctx-prod=”kubectx prod-eu1″
alias kctx-staging=”kubectx staging”
alias kns-prod=”kubens production-app”
[prod-eu1]) en rouge vif. Quand vous tapez kubectx staging, le prompt change immédiatement. Avant de lancer un rollout, vous verrez clairement dans quel cluster vous êtes.
k9s : Interface TUI pour Kubernetes
k9s est une interface textuelle (TUI) pour Kubernetes. Au lieu de taper 10 commandes kubectl à la fois, vous naviguez avec les flèches et voyez tout en temps réel. C’est indispensable en incident.
Installation
brew install k9s
Lancez-le :
k9s
Cas d’usage : Incident en production
Imaginez : Un pod crashe en production toutes les 30 secondes.
- Sans k9s :
kubectl get pods -n production-app, trouvez le pod,kubectl describe pod NOM -n production-app, lisez les logs,kubectl logs POD -n production-app --tail=50… - Avec k9s : Appuyez sur Enter sur le pod crashé. Voyez immédiatement les logs, les événements, la description, tout en temps réel dans un split screen.
- ? : Affiche tous les raccourcis disponibles
- p : Va aux pods (depuis n’importe quel écran)
- d : Va aux deployments
- s : Va aux services
- l : Affiche les logs du pod sélectionné
- e : Edit en direct un manifest YAML
- Enter : Détail complet de la ressource
- Ctrl + l : Tail les logs continu
k9s vous sauve aussi parce que vous voyez d’un coup d’œil :
- Quels pods sont en CrashLoop
- Quels pods utilisent trop de CPU ou de mémoire
- Quels pods ne sont pas Ready
- Les events les plus récents du cluster
delete des pods, restart des deployments, edit les manifests. C’est puissant. Toujours utiliser le profil “Production” d’iTerm2 en couleur rouge quand vous lancez k9s en prod.
Intégration avec votre .zshrc
alias k9s-prod=”kubectx prod-eu1 && k9s”
alias k9s-staging=”kubectx staging && k9s”
Maintenant, k9s-prod bascule au cluster prod ET ouvre k9s en une seule commande.
lazydocker : Interface visuelle pour Docker (Optionnel)
Si vous gérez beaucoup de conteneurs Docker en local ou sur des machines, lazydocker est une interface TUI complète. Moins critique que k9s (qui gère votre prod), mais très utile pour du local/dev.
Installation
brew install lazydocker
lazydocker
Vous voyez immédiatement :
- Tous les conteneurs qui tournent
- Leur CPU/mémoire en temps réel
- Les logs en direct
- Les images, volumes, et réseaux
lazydocker est moins critique que k9s pour un SRE, mais c’est un gain de temps si vous travaillez sur Docker Compose en local ou si vous debuggez des conteneurs sur des machines.
alias ld=”lazydocker”
alias dps=”docker ps –format ‘table {{.Names}}\t{{.Status}}\t{{.Ports}}'”
Résumé : Quel outil pour quel job ?
| Outil | Cas d’usage | Installation |
kubectx |
Basculer entre clusters Kubernetes rapidement | brew install kubectx |
kubens |
Basculer entre namespaces Kubernetes rapidement | brew install kubectx |
k9s |
Visualiser et gérer un cluster en temps réel (incidents, monitoring) | brew install k9s |
lazydocker |
Gérer les conteneurs Docker localement (optionnel) | brew install lazydocker |
Installation complète en une seule commande
Copiez-collez cette commande pour installer tous les outils avancés en même temps :
brew install kubectx k9s lazydocker
Installation correcte de Terraform (et autres tools HashiCorp)
Terraform n’est pas disponible dans le Homebrew principal. Vous devez ajouter le tap officiel HashiCorp :
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
Ou installez d’autres outils HashiCorp utiles :
brew install hashicorp/tap/terraform hashicorp/tap/vault hashicorp/tap/packer
Setup complet DevOps/SRE : Installation complète
Voici les commandes pour installer tous les outils DevOps/SRE essentiels :
brew tap hashicorp/tap
brew install git kubernetes-cli helm checkov docker awscli aws-vault hashicorp/tap/terraform kubectx k9s lazydocker jq yq
Installation optionnelle : TFLint (linter Terraform)
TFLint n’est pas dans Homebrew. Installez-le via Go (si vous avez Go installé) :
go install github.com/terraform-linters/tflint@latest
Ou téléchargez directement depuis GitHub releases.
Vérifiez que tout est installé :
terraform –version
Terraform v1.x.x
kubectl version –client
Client Version: v1.x.x
helm version
version.BuildInfo{Version:”v3.x.x”}
docker –version
Docker version 25.x.x
aws –version
aws-cli/2.x.x
Votre station de contrôle est complète
Vous avez maintenant un terminal professionnel, rapide, et qui prévient les erreurs coûteuses. Voici ce que vous avez :
- Powerlevel10k affiche votre contexte (cluster Kubernetes, AWS region, Terraform workspace) en temps réel
- iTerm2 avec multi-panneaux pour surveiller plusieurs systèmes à la fois
- Zsh et plugins automatisent les tâches répétitives (git, docker, kubectl)
- Les alias vous font taper 10 caractères au lieu de 50
- Les profils colorés vous sauvent d’une bêtise en production
- kubectx / kubens pour basculer entre clusters et namespaces en une commande
- k9s pour une visibilité complète sur votre cluster Kubernetes en incident
- lazydocker (optionnel) pour gérer les conteneurs en local
- Explorez les configuration avancées de k9s (themes, custom views) en tapant
?dedans - Créez des scripts shell pour automatiser vos déploiements les plus courants
- Intégrez vos cloud credentials (AWS, GCP) pour que Powerlevel10k affiche votre région en direct
- Paramétrez les alertes visuelles/sonores dans k9s pour les crashloop pods
Votre terminal est maintenant un outil professionnel au niveau des meilleures équipes SRE. Profitez de chaque minute économisée sur les tâches répétitives, et utilisez ce temps pour construire de meilleures infrastructures et meilleures systèmes.