Aller au contenu principal

Mes Outils DevOps Indispensables

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.

tldr tar
  tar

  Utilitaire d'archivage.
  Souvent combiné avec une méthode de compression, telle que gzip ou bzip2.
  Plus d'informations : https://www.gnu.org/software/tar.

  - Crée une archive à partir de fichiers :
    tar cf cible.tar fichier1 fichier2 fichier3

  - Crée une archive gzip :
    tar czf cible.tar.gz fichier1 fichier2 fichier3

  - Extrait une archive (compressée) dans le dossier courant :
    tar xf source.tar[.gz|.bz2|.xz]

  - Extrait une archive dans un dossier cible :
    tar xf source.tar -C dossier

  - Crée une archive compressée, en utilisant le suffixe de l'archive pour déterminer le programme de compression :
    tar caf cible.tar.xz fichier1 fichier2 fichier3

  - Liste le contenu d'une archive tar :
    tar tvf source.tar

  - Extrait les fichiers correspondant au motif :
    tar xf source.tar --wildcards "*.html"

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 :

pip install tldr
pipx install tldr   # Je prefère l'installer de manière isolé avec pipx
npm install -g tldr

Plus d'infos

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.

curl cht.sh/:intro      # Affiche le README du projet donc complet.
curl cht.sh/:help       # Affiche l'aide sur l'outil lui meme.
curl cht.sh/:list       # Affiche la liste complète de toutes les commandes prises en charge.
curl cht.sh/ls          # Affiche une aide sur la commande ls.
curl cht.sh/python/for  # Affiche de l'aide sur les boucles for en python
curl cht.sh tar~list    # Permet de rechercher des commandes ou on parle de list sur la commande tar.
curl cht.sh go/zip+list # Affiche d'algo sur un langage, ici lister le contenu d'un fichier zip

Installation locale de cht.sh

Pour installer cht.sh localement :

curl -s https://cht.sh/:cht.sh | sudo tee /usr/local/bin/cht.sh && sudo chmod +x /usr/local/bin/cht.sh

On reprend les mêmes commandes précédentes, mais en enlevant curl :

cht.sh/:intro      # Affiche le README du projet donc complet.
cht.sh/:help       # Affiche l'aide sur l'outil lui meme.
cht.sh/:list       # Affiche la liste complète de toutes les commandes prises en charge.
cht.sh/ls          # Affiche une aide sur la commande ls.
cht.sh/python/for  # Affiche de l'aide sur les boucles for en python
cht.sh tar~list    # Permet de rechercher des commandes ou on parle de list sur la commande tar.
cht.sh go/zip+list # Affiche d'algo sur un langage, ici lister le contenu d'un fichier zip

Mais on peut écrire simplement une phrase :

cht.sh python random list elements # Comment afficher le contenu d'une liste de manière aléatoire

Plus d'infos

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.

cd mon_projet

direnv: loading ~/Projects/perso/my-blog/.envrc
Une tache
direnv: export +HTTPS +SSL_CRT_FILE +SSL_KEY_FILE +VIRTUAL_ENV ~PATH

cd ..

direnv: unloading

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
  • 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 ou docker-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 :

  1. Audit de Systèmes : Lynis effectue des audits de divers systèmes et configurations.
  2. 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.
  3. Plugins : Lynis propose des extensions qui collectent et traitent des informations, augmentant ainsi l'efficacité et la puissance de l'outil.
  4. 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 :

  1. 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.
  2. 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.
  3. 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.
  4. Détection de Vulnérabilités : Il identifie les vulnérabilités connues dans les packages OS et les dépendances logicielles.
  5. 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).
  6. Recherche d'Informations Sensibles et Secrets : L'outil peut découvrir des informations sensibles ou des secrets au sein des codes et configurations.
  7. Gestion des Licences Logicielles : Trivy aide également à identifier les licences logicielles utilisées dans les projets.
  8. 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