❌

Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierLinuxFr.org : les dépêches
  • ✇LinuxFr.org : les dépêches
  • Scrippy : en finir avec script_final_old_v3_OK_last.py
    Tout administrateur système a croisé un jour, au détour d'un serveur, un script_final_old_v3_OK_last.py sans logs, sans historique, avec un mot de passe en clair à la ligne 42 et un commentaire # TODO: gérer les erreurs daté de 2014. Après cinq ans de développement en parallèle de mes activités professionnelles, je publie Scrippy, un framework Python sous licence MIT pour écrire des scripts d'exploitation standardisés, robustes et prêts pour la production. lien nᵒ 1 : Le site officiellien nᵒ 2

Scrippy : en finir avec script_final_old_v3_OK_last.py

Tout administrateur système a croisé un jour, au détour d'un serveur, un script_final_old_v3_OK_last.py sans logs, sans historique, avec un mot de passe en clair à la ligne 42 et un commentaire # TODO: gérer les erreurs daté de 2014.

Après cinq ans de développement en parallèle de mes activités professionnelles, je publie Scrippy, un framework Python sous licence MIT pour écrire des scripts d'exploitation standardisés, robustes et prêts pour la production.

Sommaire

Le constat : le script d'exploitation, ce grand oublié

Dans beaucoup d'équipes, les scripts d'exploitation sont écrits vite, chacun à sa manière, puis maintenus dans la douleur. Le cycle de vie typique est bien connu :

  1. « C'est juste un petit script, je l'écris vite fait. »
  2. Le petit script part en production.
  3. L'auteur part en vacances (ou change d'entreprise).
  4. Le script plante un dimanche à 3 h du matin.
  5. L'astreinte découvre qu'il n'y a ni logs, ni historique, ni documentation, et que la configuration est codée en dur entre deux print("ici").

Le tout agrémenté d'un mot de passe qui s'affiche fièrement dans la sortie standard. Oui, hunter2, on te voit.

Le principe : un en-tête déclaratif

Avec Scrippy, un script décrit son comportement dans un en-tête déclaratif : auteur, version, description, configuration attendue, options acceptées, utilisateurs autorisés, nombre d'exécutions simultanées. Une seule instruction with dans le code suffit ensuite pour bénéficier de l'ensemble des fonctionnalités, sans écrire une seule ligne de plomberie :

  • un fichier de log par exécution, avec sortie colorée sur le terminal ;
  • un historique complet des exécutions (paramètres, durée, code retour) ;
  • un fichier de configuration par script, chargé et validé au démarrage ;
  • des options de ligne de commande analysées et validées depuis l'en-tête, avec un --help généré automatiquement (personne n'aura plus d'excuse pour ne pas RTFM) ;
  • le masquage automatique des secrets dans les logs et l'historique ;
  • la restriction des utilisateurs et groupes autorisés à lancer le script ;
  • une limite d'exécutions simultanées, avec file d'attente ;
  • un répertoire de travail temporaire par exécution, supprimé automatiquement ;
  • une gestion d'erreurs propre et des codes retour exploitables par votre ordonnanceur préféré.

Un exemple vaut mieux qu'un long discours

Voici un script de surveillance de l'occupation d'un système de fichiers. Toute ressemblance de l'auteur avec un personnage des Monty Python n'est évidemment pas fortuite : on fait du Python, on a des traditions.

#!/usr/bin/env python3
"""
--------------------------------------------------------------------------------
  @author         : Luiggi Vercotti
  @date           : 2026-10-08
  @version        : 1.0.0
  @description    : Monitor filesystem usage
--------------------------------------------------------------------------------
  Configuration:
    @conf:thresholds|warning|int|false
--------------------------------------------------------------------------------
  Options:
    @args:mount-point|str|Mount point to check|1|/|||false|false
--------------------------------------------------------------------------------
"""
import shutil
import scrippy_core
from scrippy_core import logger

def main():
  with scrippy_core.ScriptContext() as _context:
    usage = shutil.disk_usage(_context.args.mount_point)
    percent = round(usage.used * 100 / usage.total, 1)
    if percent >= _context.config.get("thresholds", "warning", "int"):
      logger.warning(f"[+] {_context.args.mount_point}: {percent}% used")

if __name__ == '__main__':
  main()

Ce court script dispose déjà de --help, --version, d'un fichier de configuration validé, d'une option --mount-point validée, d'un log par exécution (--log), d'un historique (--hist), d'un mode debug (--debug) et d'un espace de travail temporaire. Le tout sans avoir vendu son âme à un fichier YAML de 800 lignes, ni avoir à relire une n-ième fois la doc de argparse, ni sans incantation mystique pour la configuration de log, ni pentacle renversé. Ni !

Le double bénéfice

D'une part, tous les scripts d'exploitation suivent le même standard : ils se lisent, s'exploitent et se maintiennent de la même façon, quel que soit leur auteur. Le script du collègue parti n'est plus une boîte noire.

D'autre part, ils s'écrivent beaucoup plus vite : inutile de recoder ces contrôles dans chaque script, on se concentre sur ce qu'il doit réellement faire. Le temps gagné peut être réinvesti dans des activités à haute valeur ajoutée, comme le troll sur systemd.

Les modules

Le cœur (scrippy-core) est complété par des modules optionnels :

  • scrippy-remote : exécution distante et transferts de fichiers (SSH/SFTP, FTP/FTPS, CIFS) ;
  • scrippy-api : client d'API REST, avec prise en charge d'OpenAPI ;
  • scrippy-db : requêtes PostgreSQL, MySQL et SQLite ;
  • scrippy-mail : envoi et lecture de courriels (SMTP, IMAP, POP3) ;
  • scrippy-snmp : opérations SNMP get, walk et set ;
  • scrippy-git : gestion de dépôts Git ;
  • scrippy-template : génération de documents à partir de modèles Jinja2.

Pas un prototype

Scrippy n'est pas né d'un week-end pluvieux. Il tourne depuis plusieurs années en production, sur des usages bien réels. Il a donc survécu à des mises à jour, des migrations et des vendredis après-midi, ce qui constitue une forme de certification assez exigeante.

Pourquoi seulement maintenant ?

Parce que je n'étais pas satisfait de la documentation. Un outil mal documenté ou dont la documentation n'est pas à jour est un outil qu'on n'adopte pas, et, même si jusque là celà a été le cas pour Scrippy, « Use The Source, Luke » n'est pas une stratégie d'adoption. Je ne voulais pas publier un projet que d'autres ne pourraient pas s'approprier.

Dans les faits le code a toujours été publié mais n'ayant jamais fait aucune annonce l'adoption de Scrippy est relativement comparable à celle de GNU Hurd !

La question qui fâche : et l'IA dans tout ça ?

Avant que le Jihad butlérien ne se lève dans les commentaires, par souci de transparence : le code de Scrippy a été écrit par un humain, sur cinq ans.

Claude m'a aidé à remettre à plat la documentation, à l'enrichir d'un tutoriel progressif (voir la documentation pas à pas) et à maintenir à jour les README.md des dépôts. Il m'a également permis de détecter et corriger quelques bogues passés sous les radars malgré des années d'exploitation, ce qui est à la fois utile et clairement vexant.

L'IA reste un outil. Le meilleur des outils, entre les mains de quelqu'un qui ne sait pas ce qu'il fait, ne le rendra pas meilleur : un rm -rf reste un rm -rf, quelle que soit la qualité du clavier. C'est l'expérience, la compréhension du besoin et l'exigence qui font la qualité d'un projet. L'outil permet d'aller plus loin et plus vite.

Licence

Scrippy est un logiciel libre distribué sous licence MIT : vous pouvez l'utiliser, le modifier, le redistribuer et l'intégrer à vos projets, y compris commerciaux, à la seule condition de conserver la mention de copyright et le texte de la licence.

Vos retours sont les bienvenus

Si vous écrivez des scripts d'exploitation en Python, je serais ravi d'avoir vos retours, critiques comprises : la syntaxe de l'en-tête, les fonctionnalités manquantes, ou la comparaison avec ce que vous utilisez aujourd'hui.

Les rapports de bogues sont acceptés. Les trolls aussi, tant qu'ils sont de qualité (et vous pouvez y aller car mon Prumpleffer a été calibré par tTh).

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Maintenant : monitorer toute sa stack Docker depuis un seul conteneur
    Maintenant est un logiciel libre de monitoring d'infrastructure, conçu pour les administrateurs et développeurs qui font tourner des conteneurs Docker ou Kubernetes. Il se déploie sous la forme d'un unique conteneur qui auto-découvre et surveille l'ensemble d'une stack sans configuration préalable. Le projet est publié sous licence AGPL-3.0. Le code source complet est disponible sur GitHub, y compris les fonctionnalités de l'édition Pro. Le problème Quand on auto-héberge une vingtaine (ou une

Maintenant : monitorer toute sa stack Docker depuis un seul conteneur

Maintenant est un logiciel libre de monitoring d'infrastructure, conçu pour les administrateurs et développeurs qui font tourner des conteneurs Docker ou Kubernetes. Il se déploie sous la forme d'un unique conteneur qui auto-découvre et surveille l'ensemble d'une stack sans configuration préalable.

Le projet est publié sous licence AGPL-3.0. Le code source complet est disponible sur GitHub, y compris les fonctionnalités de l'édition Pro.

Le problème

Quand on auto-héberge une vingtaine (ou une quarantaine) de conteneurs sur un VPS, le monitoring finit souvent en une collection d'outils déconnectés : Uptime Kuma pour les checks HTTP, Healthchecks.io pour les tâches cron, un script bash pour les certificats SSL, Portainer ouvert dans un onglet pour voir si les conteneurs tournent, et un docker pull manuel de temps en temps pour vérifier les mises à jour. Cinq outils, zéro communication entre eux, aucune vue d'ensemble.

Maintenant regroupe tout ça dans un seul processus.

Sommaire

Ce que ça fait

Le conteneur se branche sur le socket Docker en lecture seule (il ne crée, ne démarre et n'arrête jamais de conteneurs) et découvre automatiquement tout ce qui tourne. À partir de là :

  • Suivi des conteneurs : états (running, stopped, restarting), health checks Docker natifs, détection de boucles de redémarrage, groupement automatique par projet Compose
  • Métriques de ressources : CPU, mémoire, réseau et I/O disque par conteneur, avec une vue "top consumers" pour identifier rapidement les gourmands
  • Monitoring d'endpoints : sondage actif HTTP/TCP avec suivi des temps de réponse, codes de statut, correspondance de mots-clés, seuils configurables
  • Monitoring de cron jobs : URLs de heartbeat uniques — votre tâche planifiée envoie un ping, Maintenant vous alerte si le ping n'arrive pas
  • Certificats SSL/TLS : détection automatique depuis les endpoints HTTPS, vérification de chaîne complète, alertes avant expiration (30j, 14j, 7j, 3j, 1j)
  • Détection des mises à jour : scan des registres OCI (Docker Hub, GHCR, etc.), comparaison de digests et de tags semver, signalement des sauts de version critiques, commandes de mise à jour et rollback intégrées (Compose-aware)
  • Analyse de sécurité réseau : détection automatique des configurations dangereuses — ports de bases de données exposés sur 0.0.0.0, conteneurs en mode privileged ou host-network, et pour Kubernetes, NodePort/LoadBalancer sans NetworkPolicy
  • Page de statut publique : intégrée, personnalisable, reflète automatiquement l'état des monitors
  • Serveur MCP : serveur Model Context Protocol intégré avec authentification OAuth2, pour requêter l'état de l'infrastructure depuis un assistant IA compatible

Stack technique

Le choix technique central est la simplicité de déploiement :

  • Binaire unique Go compilé statiquement, avec le frontend Vue 3 + TypeScript + Tailwind embarqué via embed.FS
  • SQLite en mode WAL pour le stockage — pas de base de données externe, pas de Redis, pas de file de messages
  • SSE (Server-Sent Events) pour les mises à jour temps réel dans le navigateur — plus simple que les WebSockets, fonctionne à travers n'importe quel reverse proxy sans configuration particulière
  • Moins de 20 Mo de RAM au repos
  • Image multi-architecture : amd64 et arm64
  • PWA : installable sur mobile

L'authentification n'est volontairement pas intégrée — Maintenant est conçu pour fonctionner derrière un reverse proxy avec middleware d'authentification (Authelia, Authentik, OAuth2 Proxy…), exactement comme Dozzle ou Prometheus. Les endpoints de heartbeat (/ping/{uuid}) et la page de statut publique sont prévus pour être accessibles sans authentification.

La configuration est possible soit par labels Docker sur les conteneurs, soit par l'interface web :

labels:
  maintenant.endpoint.http: "https://api:3000/health"
  maintenant.endpoint.interval: "15s"
  maintenant.alert.severity: "critical"
  maintenant.group: "production"

Support Kubernetes

Maintenant détecte automatiquement s'il tourne dans un cluster Kubernetes (via le compte de service) ou sur Docker (via le socket). Un ClusterRole read-only (maintenant-reader) suffit. Le monitoring se fait au niveau des workloads (Deployments, DaemonSets, StatefulSets) avec filtrage par namespace.

Modèle économique

Le projet suit un modèle open-core :

L'édition Community est complète et utilisable sans restriction pour un usage solo : monitoring conteneurs, endpoints, heartbeats, certificats, mises à jour, sécurité réseau, page de statut, support Kubernetes, alertes par webhooks et Discord, API REST + SSE.

L'édition Pro (9 €/mois ou 90 €/an) ajoute des canaux d'alerte supplémentaires (Slack, Microsoft Teams, Email/SMTP), la détection de CVE via OSV.dev, un tableau de bord de posture sécurité, la gestion d'incidents, les fenêtres de maintenance et les notifications aux abonnés de la page de statut.

L'intégralité du code source, y compris les fonctionnalités Pro, est visible sur GitHub sous AGPL-3.0. Le tier Pro est déverrouillé au runtime par une clé de licence — même binaire, même image Docker.

Déploiement rapide

services:
  maintenant:
    image: ghcr.io/kolapsis/maintenant:latest
    ports:
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /proc:/host/proc:ro
      - maintenant-data:/data
    environment:
      MAINTENANT_ADDR: "0.0.0.0:8080"
      MAINTENANT_DB: "/data/maintenant.db"
    restart: unless-stopped

volumes:
  maintenant-data:

Trente secondes plus tard, l'interface affiche tous vos conteneurs. Aucune configuration nécessaire.

Comparaison avec les outils existants

Maintenant Uptime Kuma Portainer Dozzle Prometheus+Grafana
Auto-découverte conteneurs Oui Non Oui Oui Via cAdvisor
Monitoring endpoints HTTP/TCP Oui Oui Non Non Via Blackbox
Monitoring cron/heartbeat Oui Oui Non Non Non
Certificats SSL Oui Oui Non Non Via exporter
Métriques CPU/RAM/réseau Oui Non Limité Non Oui
Détection mises à jour images Oui Non Oui Non Non
Sécurité réseau Oui Non Non Non Non
Page de statut Oui Oui Non Non Non
Dépendances externes Aucune Node.js Docker API Docker API 3+ conteneurs

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • DevOps Live Paris 2025 : conférences, solutions et retours d’expérience
    Les 5 et 6 novembre 2025, Paris Expo Porte de Versailles accueillera DevOps Live Paris, l’un des cinq salons intégrés du Tech Show Paris, un événement européen dédié aux architectures cloud, à la cybersécurité, à la data et aux infrastructures critiques. L’événement offre : un programme centré sur la pratique et le partage (320 conférences techniques et 275 exposants) un salon tourné vers les solutions lien nᵒ 1 : InscriptionUn programme centré sur la pratique et le partage L’édition 2025

DevOps Live Paris 2025 : conférences, solutions et retours d’expérience

17 octobre 2025 à 10:32

Les 5 et 6 novembre 2025, Paris Expo Porte de Versailles accueillera DevOps Live Paris, l’un des cinq salons intégrés du Tech Show Paris, un événement européen dédié aux architectures cloud, à la cybersécurité, à la data et aux infrastructures critiques.

DevOps Live Tech Show Paris les 5 et 6 novembre 2025

L’événement offre :

  • un programme centré sur la pratique et le partage (320 conférences techniques et 275 exposants)
  • un salon tourné vers les solutions

Un programme centré sur la pratique et le partage

L’édition 2025 mettra en avant les approches concrètes du DevOps moderne : automatisation, IA, sécurité intégrée, observabilité et culture d’équipe.
Plus de 320 conférences techniques et 275 exposants permettront d’explorer les solutions et retours d’expérience des équipes qui opèrent à l’échelle.

Parmi les conférences phares :
• FinOps et DevOps : développement piloté par les coûts dans un monde cloud-économique — Émilie-Brenda Naoussi (Air France)
• DevSecOps sans le buzz : comment industrialiser la sécurité sans ralentir la livraison — Ayoub Houkmi (Vestiaire Collective)
• Culture DevOps : au-delà de l’architecture, la clé de systèmes innovants et durables — Joël Guimfack (Laboratoire Native SAS)

D’autres sessions aborderont :
• le DevOps augmenté par l’IA et les agents intelligents,
• la sécurité des containers (0 CVE dans vos containers : et si c’était possible ?),
• ou encore la mise en place de plateformes LLMOps pour le développement d’agents conversationnels.

Un salon tourné vers les solutions

Au-delà des conférences, DevOps Live Paris est aussi un espace de démonstration et d’expérimentation.

Les visiteurs pourront rencontrer des acteurs clés de l’écosystème tels que : Scafe, CBTW, Chainguard, Mindflow, Scalingo ou encore Spectrum Group / Atlassian…

C’est l’occasion d’échanger directement avec les équipes techniques derrière les outils et plateformes qui façonnent la chaîne CI/CD, la sécurité applicative et l’automatisation cloud.

Avec un seul badge, l’accès est ouvert à l’ensemble du Tech Show Paris : Cloud & AI Infrastructure, Cloud & Cyber Security Expo, Data & AI Leaders Summit et Data Centre World.

👉 Inscrivez-vous ici : https://www.techshowparis.fr/linuxfr

Pour les entreprises et projets issus de la communauté souhaitant rejoindre l’événement, une opportunité de stand à tarif préférentiel est proposée, incluant également une visibilité renforcée sur nos réseaux et supports de communication. Il suffit de contacter l’équipe organisatrice pour en bénéficier. Contactez-nous.

NdM: LinuxFr est partenaire média de l’événement. Benoît Sibaud modérera la table ronde du jeudi 6 novembre 10h00 – 10h45 « FinOps et DevOps : Développement piloté par les coûts dans un monde cloud-économique ».
Annonce de la table ronde

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Dévoilement de l'édition ConFoo 2025 !
    La conférence ConFoo est de retour pour sa 23e édition, du 26 au 28 février 2025 à l’Hôtel Bonaventure de Montréal ! Avec plus de 190 présentations offertes par une centaine d’experts de partout à travers le monde, venez découvrir pourquoi Confoo est devenu l’un des événements phares pour les développeurs en Amérique du Nord et de partout à travers le monde. lien nᵒ 1 : ConFoo 2025Notre programmation officielle est d’ailleurs disponible dès maintenant sur notre site web! Consultez nos toutes

Dévoilement de l'édition ConFoo 2025 !

La conférence ConFoo est de retour pour sa 23e édition, du 26 au 28 février 2025 à l’Hôtel Bonaventure de Montréal !

logo confoo.ca

Avec plus de 190 présentations offertes par une centaine d’experts de partout à travers le monde, venez découvrir pourquoi Confoo est devenu l’un des événements phares pour les développeurs en Amérique du Nord et de partout à travers le monde.

Notre programmation officielle est d’ailleurs disponible dès maintenant sur notre site web! Consultez nos toutes nouvelles présentations axées sur le développement FullStack OpenSource, l’intelligence artificielle, le devops et plus encore. Organisé au cœur d’un environnement spécialement conçu pour les développeurs, ConFoo est aussi l’endroit parfait pour rencontrer de potentiels employeurs et réseauter avec les meilleurs de l’industrie.

Réservez vos billets dès maintenant et profitez d’un rabais de 175$ sur votre inscription jusqu’au 13 décembre !

Faites partie de l’aventure et découvrez comment l’intelligence humaine façonne le milieu des hautes technologies!

Commentaires : voir le flux Atom ouvrir dans le navigateur

❌
❌