03-comment-je-travaille/tools/bash/modules.md

Modules - tlr-cli

Définition d'un module

Un module est un bloc fonctionnel autonome qui :

  • expose une interface CLI stable (<module> <action>) ;
  • encapsule la logique d'administration d'un domaine (ex. : vhosts) ;
  • fournit ses tests et ses templates ;
  • produit un rendu lisible et un code de retour strict.

Liste initiale (proposée)

  • system : updates, packages, base OS.
  • tests : exécute le runner global (tlr tests run).
  • ssh : durcissement, ports, keys, agent.
  • ufw : firewall et règles.
  • fail2ban : protection bruteforce.
  • vhosts : Apache vhosts, activation, logs.
  • letsencrypt : certificats wildcard (OVH DNS-01).
  • php : PHP-FPM, extensions.
  • mariadb : install, sécurisation, checks.
  • logs : rotation, permissions, sanity checks.
  • backup : dumps, rétention, vérification.

Structure d'un module

modules/<module>/
  module.sh
  tests/
  templates/
  data/

Conventions module

  • module.sh expose info|status|check|apply|test.
  • tests/ contient des scripts idempotents.
  • templates/ pour confs et vhosts.
  • data/ pour fixtures de test.
  • Les modules peuvent définir des actions supplémentaires (ex. : run, switch).

Versioning

  • Modules versionnés avec le repo.
  • Changelog par module si besoin.

Reste à faire

  • Documenter et développer le module vhosts (voir tools/bash/vhosts.md).
  • Définir les modules ssh, ufw, fail2ban avec tests idempotents.
  • Normaliser les templates par module (noms, variables, conventions).

Assistant documentaire

Posez une question sur la documentation. Les réponses citent leurs sources — un clic ouvre le document à gauche.

Loading…
Loading the web debug toolbar…
Attempt #