Cheat Sheet DevOps
Référence ultra-compacte des commandes essentielles pour tous les outils DevOps.
Linux
Fichiers & Navigation
ls -laLister avec détailscd /cheminChanger de dossierpwdDossier courantcp -r src dstCopier (récursif)mv src dstDéplacer / renommerrm -rf dirSupprimer (récursif)find . -name "*.log"Chercher des fichiersPermissions
chmod 755 fichierDroits rwxr-xr-xchown user:group fChanger propriétairesudo commandeExécuter en rootProcessus & Réseau
ps aux | grep procChercher un processuskill -9 PIDForcer l'arrêttop / htopMoniteur systèmess -tlnpPorts en écoutecurl -I URLEn-têtes HTTPTexte & Logs
grep -r "mot" .Recherche récursivetail -f fichier.logSuivre un log en directcat f | sort | uniq -cTrier et dédupliquerawk '{print $1}'Extraire une colonneGit
Bases
git initCréer un dépôtgit clone URLCloner un dépôtgit statusÉtat des fichiersgit add .Stager toutgit commit -m "msg"Committergit push origin mainPoussergit pullRécupérer et fusionnerBranches
git branch featureCréer une branchegit checkout -b featCréer + basculergit merge featureFusionnergit rebase mainRebasergit branch -d featSupprimer la brancheHistorique & Correction
git log --onelineHistorique compactgit diff HEAD~1Diff avec le commit précédentgit stashMettre de côtégit stash popRestaurer le stashgit reset --hard HEADAnnuler toutgit revert SHAAnnuler un commit (safe)Docker
Images
docker build -t nom:tag .Construire une imagedocker imagesLister les imagesdocker pull nginxTélécharger une imagedocker rmi IMAGESupprimer une imagedocker push nom:tagPousser sur un registryConteneurs
docker run -d -p 80:80 nginxLancer en arrière-plandocker run -it ubuntu bashShell interactifdocker ps -aLister tous les conteneursdocker stop NOMArrêter un conteneurdocker rm NOMSupprimer un conteneurdocker exec -it NOM bashEntrer dans le conteneurdocker logs -f NOMSuivre les logsCompose
docker compose up -dDémarrer les servicesdocker compose downArrêter et supprimerdocker compose logs -fLogs en directdocker compose buildReconstruire les imagesdocker compose psÉtat des servicesKubernetes
Ressources
kubectl get pods -ATous les podskubectl get svc,deployServices et déploiementskubectl describe pod NOMDétails d'un podkubectl apply -f fichier.yamlAppliquer une configkubectl delete -f fichier.yamlSupprimer des ressourcesDebug
kubectl logs -f NOMLogs d'un podkubectl exec -it NOM -- bashShell dans un podkubectl port-forward pod/NOM 8080:80Tunnel localkubectl top podsConsommation des ressourceskubectl events --sort-by=.metadata.creationTimestampÉvénements récentsGestion
kubectl scale deploy/NOM --replicas=3Changer le nombre de réplicaskubectl rollout restart deploy/NOMRedémarrer un déploiementkubectl rollout undo deploy/NOMRollbackkubectl config use-context NOMChanger de clusterkubectl create ns mon-nsCréer un namespaceTerraform
Workflow
terraform initInitialiser le projetterraform planPrévisualiser les changementsterraform applyAppliquer les changementsterraform apply -auto-approveAppliquer sans confirmationterraform destroyDétruire les ressourcesÉtat & Debug
terraform showAfficher l'état actuelterraform state listLister les ressourcesterraform outputAfficher les outputsterraform validateValider la syntaxeterraform fmtFormatter les fichiersTF_LOG=DEBUG terraform applyMode debugAnsible
Commandes
ansible all -m pingTester la connectivitéansible-playbook play.ymlLancer un playbookansible-playbook play.yml -CDry-run (check mode)ansible-playbook play.yml -vMode verbeuxansible-vault encrypt secrets.ymlChiffrer des secretsansible-galaxy install roleInstaller un rôleModules courants
ansible.builtin.copyCopier des fichiersansible.builtin.templateDéployer un template Jinja2ansible.builtin.serviceGérer un service systemdansible.builtin.packageInstaller des paquetsansible.builtin.userGérer les utilisateursGitHub Actions
Structure YAML
on: [push, pull_request]Déclencheurson: workflow_dispatchDéclenchement manueljobs.build.runs-on: ubuntu-latestRunnersteps: - uses: actions/checkout@v4Checkout du codesteps: - run: npm testExécuter une commandeActions utiles
actions/setup-node@v4Installer Node.jsactions/cache@v4Mettre en cache les dépendancesdocker/build-push-action@v6Builder et pousser une imageactions/upload-artifact@v4Publier un artifact${{ secrets.MON_SECRET }}Utiliser un secretif: github.ref == 'refs/heads/main'Condition de brancheGitLab CI
Structure .gitlab-ci.yml
stages: [build, test, deploy]Définir les stagesimage: node:20Image Docker du jobscript: - npm installCommandes du jobonly: [main]Filtrer la brancherules: - if: $CI_COMMIT_BRANCHConditions avancéesFonctionnalités
cache: paths: [node_modules/]Cache entre jobsartifacts: paths: [dist/]Partager des fichiersneeds: [build]Dépendance entre jobs$CI_REGISTRY_IMAGERegistry GitLab intégré$VARIABLEVariable CI/CDenvironment: productionDéploiement avec environnementMonitoring
Prometheus
rate(http_requests_total[5m])Taux de requêtes/sup == 0Cibles downsum by (job) (metric)Agréger par labelhistogram_quantile(0.99, ...)Percentile 99absent(metric)Alerte si métrique absenteCommandes système
curl localhost:9090/metricsScraper les métriquesjournalctl -u service -fLogs systemd en directdf -h / du -sh *Espace disquefree -hMémoire disponiblevmstat 1CPU / mémoire / I/O