Mes Outils DevOps Indispensables
Mise à jour :
Je vous propose une sélection d’outils DevOps que je considère indispensables dans le domaine de l’administration système et de la gestion de projet informatique DevOps.
Cette sélection vous aidera à améliorer votre productivité et à simplifier la gestion de vos projets DevOps. Vous y trouverez des outils pour de l’administration systèmes à la gestion de version avec Git, en passant par la conteneurisation, à l’automatisation des déploiements avec Gitlab CI/CD ou Github Actions, la gestion de configuration avec Ansible, du Provisionnement avec Terraform et la sécurité avec OpenScap, Trivy … Chaque outil sera ensuite détaillé dans un guide dédié.
L’aide en ligne et l’apprentissage
Arsenal
Arsenal est un outil proposant pas mal de cheats et permettant d’en créer. En
effet, Arsenal est livré avec un ensemble de cheats prédéfinies, principalement
axées sur les tests d’intrusion. La fonction de recherche est puissante et
flexible. Vous pouvez rechercher des commandes par mots-clés, catégories ou même
par des fragments de commandes. Par exemple, réseau
ou
nmap
vous montrera toutes les
commandes liées au réseau ou à cette commande. En sélectionnant une commande
spécifique dans les résultats de la recherche, Arsenal vous permet de la copier
directement dans votre presse-papiers ou de l’exécuter immédiatement dans le
terminal.
Après avoir exploré les commandes fournies avec Arsenal, vous souhaiterez probablement y ajouter vos propres commandes favorites. Cette personnalisation rend Arsenal encore plus puissant, en l’adaptant à vos besoins et préférences spécifiques.
Plus d’infos
TlDR
TlDR, pour Trop Long Pas Lu, est une commande permettant d’afficher des aides sur les principales commandes en ligne des OS Linux, Windows et macOS. Bien plus simple à lire que les man pages.
Comme vous pouvez le voir si l’aide sur la commande existe en français, elle sera affichée. Cool pour ceux qui ne pratiquent pas la langue de Sheakspire.
Installation
Il existe deux versions du client tldr. Un en python, mon préféré et un en JavaScript :
Plus d’infos
- Source du projet : https://github.com/tldr-pages/tldr ↗
Cheat.sh
Vous utilisez un grand nombre de technos et d’outils et vous en mélangez la syntaxe. De même, vous venez de découvrir un outil, mais comment trouver rapidement les meilleures pratiques ? Voilà à quoi va répondre cheatsh. Cheatsh est un outil permettant d’accéder à plusieurs projets hébergeant des cheats pages (feuilles de triches) d’un très grand nombre d’outils.
Il existe plusieurs moyens pour y accéder, un site internet ↗, mais aussi depuis la ligne de commande. Je vais expliquer brièvement son fonctionnement sur la ligne de commande.
Utilisation de curl
Pour ne pas installer localement un outil, cheatsh propose grâce à son site web d’y accéder avec la commande curl. On utilise donc la version du site en ligne.
Installation locale de cht.sh
Pour installer cht.sh localement :
On reprend les mêmes commandes précédentes, mais en enlevant curl :
Mais on peut écrire simplement une phrase :
Plus d’infos
- Source du projet : https://github.com/chubin/cheat.sh ↗
L’administration système
zellij
Voici est un multiplexeur de terminal qui se présente comme une alternative à tmux ou screen. Un multiplexeur de terminal est un outil qui permet de faire tourner plusieurs terminaux dans un seul. Pourquoi Zellij plutôt que tmux ou screen ? Tout simplement parce qu’il intègre une barre d’état affichant les principaux raccourcis. Je switche d’outils sans-cesse et passez de l’un à l’autre me demande toujours un temps d’adaptation. Là, je ne me pose pas de question tout est écrit à l’écran.
Parmi les autres fonctionnalités :
- Zellij se charge de déterminer le meilleur découpage : horizontale ou verticale
- Sauvegarde de la mise en page dans un fichier yaml
- Les raccourcis peuvent être reconfigurés
- Intègre des thèmes
- Système de plugins écrit en WebAssembly ↗ pour étendre ses fonctionnalités. On peut donc les écrire dans le langage de votre choix : rust, c#, ou python
Plus d’infos
asdf-vm
L’intégration d’asdf dans votre environnement de développement peut considérablement réduire les problèmes liés à la gestion des versions d’outils, vous permettant de vous concentrer davantage sur la création et le déploiement de solutions efficaces.
Plus d’infos
bat
Pour afficher le contenu, on utilise tous les commandes less
, more
ou cat
.
bat
est une commande alternative avec quelques fonctionnalités intéressantes
comme :
- La coloration syntaxique.
- L’intégration de git
-d
. - Affichage des caractères invisibles
-A
. - Numérotation des lignes.
- Paging automatique que l’on peut désactiver avec l’option
-pp
.
Qu’est-ce-qui rend cette commande indispensable ? Le simple fait d’avoir une
coloration syntaxique permet une lecture rapide de tout code source ou de
fichier de config le rend indispensable. Une alternative : vim
qui propose les
mêmes choses avec view
.
Plus d’infos
DirEnv
Imaginez un scénario où chaque projet sur lequel vous travaillez nécessite un ensemble distinct de variables d’environnement. Sans un système de gestion adéquat, vous pourriez vous retrouver à ajuster manuellement ces variables à chaque changement de projet, augmentant ainsi les risques d’erreur et réduisant votre efficacité. Direnv résout ce problème en associant des configurations d’environnement spécifiques à des répertoires, les chargeant automatiquement lorsque vous y entrez et les déchargeant à leur sortie. Cette capacité fait de Direnv un outil indispensable pour les environnements de développement modernes, où la flexibilité et l’automatisation sont clés.
Plus d’infos
ripgrep
Cet outil est une alternative aux commandes *grep
. ripgrep
est donc un outil
de recherche qui fonctionne directement en mode récursif dans le répertoire
courant. Autres points positifs :
- S’il détecte la présence des fichiers
.gitignore
et.ignore
il ignorera les fichiers cachés. - Il est possible d’utiliser des [expressions régulières](/docs/developper/expressions-regulieres/
- Recherche par langage de programmation
- Support Unicode par défaut.
- Il est très rapide. (les benchs sont disponibles sur le repo du projet)
Plus d’infos
Infra As Code
Steampunk Spotter
Steampunk Spotter est plus qu’un outil qui analyse le code Ansible, c’est une plateforme plus une extension Visual Studio Code. Spotter vous aide améliorer la qualité, la fiabilité et la sécurité de vos codes Ansible.
Spotter permet de vous aider à :
- Structurer vos playbooks pour qu’ils soient lisibles ;
- Éviter les anti-patterns les plus courants dans les playbooks ;
- Identifier des erreurs difficiles à corriger ;
- Identifier les changements de nom de modules et de collections ;
- Identifier les paramètres manquants ou obsolètes ;
- Identifier les modules obsolètes ;
- Identifier les collections non mises à jour ;
- Corriger automatiquement les FQCN incomplet ;
- Migrer votre code vers de nouvelles versions d’Ansible ;
Plus d’infos
Conteneurs et Orchestrateurs
Hadolint
Hadolint est l’outil qui va vous aider à progresser dans l’écriture de vos Dockerfile. Cet outil de lint va vous donner plein de conseils qui vont vous permettre de respecter un très grand nombre de bonnes pratiques.
Plus d’infos
Crane
Crane est un outil de ligne de commande conçu pour simplifier la gestion et la manipulation des images de conteneurs. Il offre une flexibilité notable dans les environnements DevOps, facilitant notamment le transfert, l’inspection et la gestion des images entre différents registres.
Fonctionnalités clés de Crane :
- Transfert d’images entre différents registres de conteneurs
- Inspection détaillée des images de conteneurs
- Gestion et modification des tags d’images
- Intégration dans des scripts pour automatiser les tâches DevOps
- Support pour les pipelines CI/CD
- Capacité à extraire des informations et métadonnées des images
- Fonctionnalités de sécurité pour la gestion des accès aux images.
Plus d’infos
Dive
Dive est un outil permettant d’explorer le contenu des images Docker/OCI et de découvrir des moyens pour réduire la taille de ces images. Il offre des fonctionnalités telles que l’affichage des couches de l’image, l’analyse des fichiers présents, la visualisation des différences entre les couches et la recommandation de suppressions de fichiers inutiles pour optimiser la taille de l’image.
Plus d’infos
LazyDocker
LazyDocker est un outil en ligne de commande pour Docker écrit en Go. Gros avantage, la souris est supportée. Il évite de recourir à la ligne de commande classique de Docker. Il affiche plein d’informations dont :
- affichage de l’état de tous les conteneurs
docker
oudocker-compose
. - affichage des logs pour un conteneur ou un service.
- affichage sous forme de graphiques ascii des métriques des conteneurs.
- Accès au shell d’un conteneur/service
- redémarrage/destruction de conteneurs ou services
- affichage des layers d’une image
- faire le ménage dans les conteneurs, images ou volumes (commande prune)
- …
Plus d’infos
k9s
k9s
est un outil en ligne de commande facilitant l’administration de clusters
kubernetes.k9s
permet de rapidement un état des ressources des clusters et
regorge de fonctionnalités :
- Gestion les ressources standards et personnalisées de Kubernetes.
- Récupère les métriques en temps réel des ressources telles que les pods, les conteneurs et les nœuds.
- Fournit des commandes de gestion comme les logs, le scaling, les ports forwarding, les restarts …
- Outils de filtrage
- Prise en charge de plugins.
- Fournit une vue d’ensemble des ressources de votre cluster via les vues Pulses et XRay.
- Prise en charge de l’affichage des règles RBAC.
Plus d’infos
Kube-score
Créé sous une licence MIT, cet outil open-source analyse vos définitions d’objets Kubernetes et génère une liste de conseils pour optimiser votre application. Il s’agit d’une étape fondamentale pour éviter les temps d’arrêt et les bugs, en assurant que vos configurations Kubernetes soient non seulement performantes, mais aussi sécurisées.
Plus d’infos
Développement
Renovate
La gestion des dépendances dans le développement logiciel est une tâche complexe et chronophage, souvent source de frustrations et de défis. Avec l’évolution constante des technologies et des bibliothèques, maintenir à jour un projet peut rapidement devenir un véritable casse-tête. C’est dans ce contexte que Renovate se révèle être un outil inestimable.
Fonctionnalités Clés de Renovate
- Mises à jour Automatiques : Renovate vérifie régulièrement les nouvelles versions des dépendances et crée des pull requests pour les intégrer dans votre projet.
- Prise en Charge de Multiples Langages : Il gère les dépendances dans divers écosystèmes, tels que JavaScript (npm, Yarn), Python (Pip), Java (Maven), collections ansible, …
- Personnalisation : Vous pouvez configurer Renovate pour exclure certaines mises à jour, définir des plannings spécifiques, étendre son champ d’application et bien plus encore.
- Intégration Continue : Renovate s’intègre facilement avec les outils de CI pour tester automatiquement les mises à jour avant leur intégration dans les branches principales.
Plus d’infos
Sécurité
Lynis
Lynis est un outil de sécurité open-source conçu pour l’audit de systèmes Unix et similaires, tels que Linux, macOS et BSD. Il est particulièrement utile pour le durcissement de la sécurité des systèmes et les tests de conformité. Voici quelques-unes de ses fonctionnalités principales :
- Audit de Systèmes : Lynis effectue des audits de divers systèmes et configurations.
- Suggestions et Avertissements : Après l’audit, Lynis affiche des suggestions et des avertissements pour chaque test effectué, fournissant un aperçu détaillé des améliorations potentielles et des problèmes critiques.
- Plugins : Lynis propose des extensions qui collectent et traitent des informations, augmentant ainsi l’efficacité et la puissance de l’outil.
- Rapports et Journaux : Il prend en charge un format de rapport pour afficher les résultats des scans et permet également une journalisation détaillée pour les tests avancés.
Ces fonctionnalités font de Lynis un outil robuste pour l’audit de sécurité et le durcissement des systèmes Unix et semblables.
Plus d’infos
OpenScap
OpenSCAP est un projet open-source dédié à la sécurité informatique, qui permet de vérifier la Conformité des systèmes informatiques des politiques de sécurité légales (PCI-DSS par ex.) ou spécifiques.
Plus d’infos
Trivy
Trivy est un outil de sécurité polyvalent et complet, offrant une gamme étendue de fonctionnalités au-delà de la simple détection de vulnérabilités. Voici un résumé de ses capacités principales :
- Scanning de Conteneurs et Images Virtuelles : Trivy analyse les images de conteneurs et les images de machines virtuelles pour détecter les vulnérabilités et les problèmes de configuration.
- Analyse de Systèmes de Fichiers : Il peut scanner les systèmes de fichiers locaux pour identifier les vulnérabilités et les informations sensibles.
- Examen de Dépôts Git : Trivy permet l’analyse de dépôts Git distants, offrant une vision de la sécurité à un niveau de code source.
- Détection de Vulnérabilités : Il identifie les vulnérabilités connues dans les packages OS et les dépendances logicielles.
- Identification des Problèmes dans le code d’infra : Trivy aide à détecter les problèmes et les configurations incorrectes dans l’infrastructure en tant que code (IaC).
- Recherche d’Informations Sensibles et Secrets : L’outil peut découvrir des informations sensibles ou des secrets au sein des codes et configurations.
- Gestion des Licences Logicielles : Trivy aide également à identifier les licences logicielles utilisées dans les projets.
- Création des SBOM : Trivy créé des SBOM des images de conteneurs.
Plus d’infos
Grype
Grype offre une approche simplifiée, mais, puissante pour identifier et gérer les vulnérabilités au sein des conteneurs. Avec l’augmentation des menaces de sécurité et la complexité croissante des architectures de microservices, l’utilisation d’un outil comme Grype n’est plus une option, mais une nécessité pour assurer la sécurité des déploiements conteneurisés.
Grype peut scanner le contenu d’une image de conteneur ou d’un répertoire à la recherche de vulnérabilités.
Il prend en charge les gestionnaires de package et les langages de développement suivant :
Alpine (apk) C (conan) C++ (conan) Dart (pubs) Debian (dpkg) Dotnet (deps.json) Objective-C (cocoapods) Go (go.mod, Go binaries) Haskell (cabal, stack) Java (jar, ear, war, par, sar) JavaScript (npm, yarn) Jenkins Plugins (jpi, hpi) PHP (composer) Python (wheel, egg, poetry, requirements.txt) Red Hat (rpm) Ruby (gem) Rust (cargo.lock) Swift (cocoapods)
Plus d’infos
- Site Officiel : https://anchore.com/grype/ ↗
- Projet Grype : https://github.com/anchore/grype ↗