Le DevOps au quotidien, c’est du diagnostic, de la comparaison, du monitoring et de la validation. Des tâches répétitives qui méritent des outils dédiés plutôt que des one-liners bash fragiles.

Angle choisi : Productivité. 11 outils CLI qui remplacent les scripts bricolés par des binaires fiables et testés.

Diagnostic & Réseau

portmap — Mapping des Ports

Qui écoute sur quel port ? Quel processus utilise le port 8080 ? portmap répond en une commande avec une sortie colorée.

# Mapper tous les ports en écoute
portmap

# Filtrer un port spécifique
portmap | grep 8080

# PORT   │ PROTO │ PID   │ PROCESS   │ COMMAND
# 22     │ TCP   │ 1234  │ sshd      │ /usr/sbin/sshd -D       (rouge)
# 443    │ TCP   │ 5678  │ nginx     │ nginx: master process   (rouge)
# 3000   │ TCP   │ 9012  │ node      │ node server.js          (jaune)
# 8080   │ TCP   │ 7890  │ java      │ java -jar api.jar       (vert)

Code couleur :

  • Rouge : ports well-known (< 1024)
  • Jaune : ports registered (1024-7999)
  • Vert : ports dynamiques (8000+)

Utilise ss (iproute2), lsof et ps en interne. Plus lisible que ss -tlnp | grep ... et aucune dépendance à installer.

GitHub : hallucinaut/portmap


apiconnector — Test de Connectivité API

Vérifier la connectivité vers toutes les APIs dont dépend un service, en une commande.

# Tester un endpoint HTTP
apiconnector api=http://localhost:8080/health

# Tester plusieurs services
apiconnector api=http://localhost:8080/health db=postgres://localhost:5432

# Tester avec méthode HTTP spécifique
apiconnector api=http://localhost:8080/health web=http://localhost:3000[GET]

Format d’entrée : nom=url — chaque service est identifié par un nom et son URL. Support HTTP/HTTPS et connectivité TCP (PostgreSQL, Redis, etc.).

GitHub : hallucinaut/apiconnector


healthcheckd — Agrégateur de Health Checks

Un point unique pour connaître l’état de santé de tous les services. Avec génération automatique de dashboard Grafana.

# Vérifier un service
healthcheckd api=http://localhost:8080/health

# Vérifier plusieurs services
healthcheckd api=http://localhost:8080/health web=http://localhost:3000

# Avec méthode HTTP spécifique
healthcheckd service=http://localhost:9000/status[GET]

Même syntaxe que apiconnector (nom=url), mais orienté monitoring continu plutôt que test ponctuel. La génération de dashboard Grafana permet une intégration directe dans un stack d’observabilité existant.

GitHub : hallucinaut/healthcheckd


Configuration & Environnement

envdiff — Diff de Variables d’Environnement

Pourquoi ça marche en dev mais pas en prod ? Souvent, une variable d’environnement manquante.

# Comparer dev et prod
./envdiff .env.dev .env.prod

# Sortie JSON pour automatisation
./envdiff config/dev.json config/prod.json --json

Catégories de résultat :

  • Common : présentes dans les deux fichiers, valeurs identiques
  • Only in left : présentes uniquement dans le premier fichier
  • Only in right : présentes uniquement dans le second
  • Modified : présentes dans les deux, valeurs différentes

La sortie identifie immédiatement les variables manquantes ou modifiées. L’option --json permet d’intégrer le diff dans un pipeline CI et de générer des scripts de synchronisation.

GitHub : hallucinaut/envdiff


configdiff — Diff Sémantique de Configurations

Au-delà du diff textuel : comprendre les différences sémantiques entre deux fichiers de configuration.

# Comparer deux configs YAML
configdiff config.dev.yaml config.prod.yaml

# Comparer du JSON
configdiff settings.json settings.backup.json

Formats supportés : YAML, JSON, TOML.

L’outil parse les fichiers et compare les clés/valeurs sémantiquement, pas ligne par ligne. Un changement d’indentation ou de formatage ne sera pas signalé comme une différence. Seuls les ajouts, suppressions et modifications de valeurs sont rapportés. Génération de scripts de migration incluse.

GitHub : hallucinaut/configdiff


servicewait — Attente de Services

Dans les environnements conteneurisés, les services démarrent dans un ordre imprévisible. Il faut attendre que les dépendances soient prêtes.

# Attendre un service
servicewait db:localhost:5432:tcp

# Attendre un service HTTP avec health check
servicewait api:localhost:8080:http:/health

# Attendre plusieurs services
servicewait db:localhost:5432:tcp redis:localhost:6379:tcp api:localhost:8080:http:/ready

Format : nom:host:port:protocole — chaque service est décrit en une seule chaîne.

Protocoles : TCP, HTTP/HTTPS, Unix socket.

Comportement : timeout de 5s par check, 30 retries maximum. Exit 0 si tous les services sont prêts, exit 1 en cas d’échec.

Remplace les scripts while ! nc -z ... par quelque chose de fiable et lisible.

GitHub : hallucinaut/servicewait


Monitoring & Rapports

secmetrics — Métriques de Sécurité

Mesurer la sécurité avec des KPIs concrets. Génère des rapports adaptés à l’audience : executive, technique ou markdown.

# Collecter les métriques
secmetrics collect

# Afficher les KPIs
secmetrics kpis

# Rapport executive (pour la direction)
secmetrics report executive

# Rapport technique (pour l'équipe sécurité)
secmetrics report technical

# Rapport markdown (pour la documentation)
secmetrics report markdown

# Résumé rapide
secmetrics summary

# Santé globale
secmetrics health

KPIs suivis :

  • MTTR : Mean Time To Remediate
  • MTTD : Mean Time To Detect
  • MTTC : Mean Time To Contain
  • Security coverage : couverture des contrôles
  • Patching compliance : conformité des patchs
  • Remediation rate : taux de remédiation

Niveaux de santé :

StatutCritère
HEALTHY>= 90% compliance, <= 30% risque
GOODEn dessous de HEALTHY mais acceptable
FAIRAméliorations nécessaires
POORAction urgente requise

GitHub : hallucinaut/secmetrics


resourcereport — Rapports d’Utilisation des Ressources

Comprendre la consommation de ressources des conteneurs Docker avec plusieurs formats de sortie.

# Rapport texte (défaut)
resourcereport

# Rapport JSON pour automatisation
resourcereport --json

# Rapport HTML
resourcereport --html > report.html

# Filtrer par conteneur
resourcereport api worker

Métriques collectées : CPU, mémoire, réseau — directement depuis les conteneurs Docker.

Niveaux de statut :

StatutCPU
LOW< 50%
NORMAL50-80%
HIGH> 80%

3 formats de sortie (texte, JSON, HTML) pour s’adapter à tous les contextes : monitoring humain, pipeline CI ou dashboard web.

GitHub : hallucinaut/resourcereport


logpattern — Détection de Patterns dans les Logs

Trouver les patterns récurrents dans des millions de lignes de logs. logpattern normalise automatiquement les contenus variables pour regrouper les messages similaires.

# Analyser un fichier de logs
logpattern /var/log/app.log

# Lire depuis stdin
cat app.log | logpattern -

Normalisation automatique :

  • Nombres → <NUM>
  • UUIDs → <UUID>
  • Adresses IP → <IP>
  • Timestamps → <TIMESTAMP>

L’outil transforme "Connection refused to 10.0.3.45:5432" et "Connection refused to 10.0.3.46:5432" en un seul pattern : "Connection refused to <IP>:<NUM>". Les patterns récurrents sont comptés et triés par fréquence.

GitHub : hallucinaut/logpattern


Backup & Migration

backuptest — Validation de Sauvegardes

Un backup qui n’a jamais été testé n’est pas un backup.

# Valider un fichier de backup
backuptest /backup/daily/database.sql

# Valider tous les backups d'un répertoire
backuptest /backup/daily

Validation par checksum MD5. Statuts :

StatutCondition
OKChecksum valide, fichier lisible
WARNINGFichier vide
ERRORFichier illisible ou corrompu

Simple : un chemin en argument (fichier ou répertoire), un statut en sortie.

GitHub : hallucinaut/backuptest


profilesync — Migration de Profils Cross-Platform

Migrer un poste de travail entre Linux, macOS et Windows sans perdre sa configuration.

# Preview de la migration
./profilesync --source=linux --dest=macos --dry-run

# Migration effective
./profilesync --source=linux --dest=macos --dry-run=false

# Migration forcée (écraser les fichiers existants)
./profilesync --source=linux --dest=macos --force=true

20+ outils supportés :

  • Éditeurs : VS Code, IntelliJ, Vim, Emacs
  • Shell : Bash, Zsh, Fish, Tmux
  • VCS : Git (config + gitignore global)
  • SSH : clés et config
  • Navigateurs : Chrome, Firefox
  • Package managers : NPM, Yarn, Pip
  • DevOps : Docker, kubectl, Helm, Terraform, AWS CLI

Le mode --dry-run (par défaut) montre les fichiers qui seront migrés sans rien modifier. Essentiel pour vérifier avant d’écraser une configuration existante.

GitHub : hallucinaut/profilesync


Le Quotidien Automatisé

Ces 11 outils couvrent le cycle DevOps complet :

Diagnostic      → portmap, apiconnector
Monitoring      → healthcheckd, secmetrics, logpattern
Configuration   → envdiff, configdiff
Orchestration   → servicewait
Rapports        → resourcereport
Backup          → backuptest
Migration       → profilesync

Chaque outil remplace un script bash fragile par un binaire Go testé. Chaque outil produit du JSON pour s’intégrer dans les pipelines existants. Chaque outil est un MVP prêt à évoluer.

Contribuer

Les outils DevOps sont ceux qui bénéficient le plus des contributions terrain :

  • Formats de logs pour logpattern
  • Providers de backup pour backuptest
  • Plateformes et outils pour profilesync
  • Protocoles pour apiconnector et servicewait
git clone https://github.com/hallucinaut/<outil>.git
go test ./...
# PR bienvenue

Tous les outils : Arsenal Open Source Complet

FIN_DE_TRANSMISSION