4.0 KiB
4.0 KiB
Plan de Migration vers $HOME/.config/citadel
Objectif
Migrer la configuration du projet vers $HOME/.config/citadel
pour respecter les standards de configuration système et séparer clairement le code de la configuration en production.
Architecture Cible
Structure de configuration
$HOME/.config/citadel/
├── backup.env # Configuration principale (était à la racine)
├── restic.conf # Configuration Restic générée (était dans config/)
└── services/ # Configurations spécifiques par service (futures extensions)
Fichiers sample conservés dans le projet
backup.env.sample # Guide d'installation (reste à la racine)
config/restic.conf # Devient un exemple/template
Plan d'action détaillé
Phase 1 : Modification du système de sourcing
1.1 Modifier manage
- Fichier :
manage
(lignes 12-18) - Action : Remplacer le sourcing conditionnel par un chemin fixe
- Nouveau code :
CONFIG_DIR="$HOME/.config/citadel" CONFIG_FILE="$CONFIG_DIR/backup.env" if [ -f "$CONFIG_FILE" ]; then source "$CONFIG_FILE" else echo "ERROR: Configuration not found at $CONFIG_FILE" echo "Please run './install setup' to initialize configuration" exit 1 fi
1.2 Modifier install
- Fichier :
install
(lignes 12-18) - Action : Même modification que
manage
+ création du répertoire config - Ajout : Fonction de création/migration de la configuration
- Nouveau comportement :
- Créer
$HOME/.config/citadel/
si inexistant - Copier
backup.env.sample
vers$HOME/.config/citadel/backup.env
si absent - Générer
restic.conf
dans le nouveau répertoire
- Créer
1.3 Modifier service-script-template.sh
- Fichier :
backup/service-script-template.sh
(lignes 8-26) - Action : Supprimer la détection automatique de PROJECT_ROOT
- Nouveau code :
CONFIG_DIR="$HOME/.config/citadel" CONFIG_FILE="$CONFIG_DIR/backup.env" if [ -f "$CONFIG_FILE" ]; then source "$CONFIG_FILE" else echo "ERROR: Configuration not found at $CONFIG_FILE" >&2 exit 1 fi
Phase 2 : Adaptation des variables de configuration
2.1 Modifier backup.env.sample
- Action : Mettre à jour les chemins par défaut
- Variables à modifier :
# Nouveau chemin de configuration RESTIC_CONFIG_FILE="${RESTIC_CONFIG_FILE:-$HOME/.config/citadel/restic.conf}" # PROJECT_ROOT devient optionnel (pour les templates systemd seulement) PROJECT_ROOT="${PROJECT_ROOT:-/home/nicolas/dev/citadel}"
2.2 Modifier la génération de restic.conf
- Fichier :
install
(fonctiongenerate_config
) - Action : Générer le fichier dans
$HOME/.config/citadel/restic.conf
- Chemin cible :
$CONFIG_DIR/restic.conf
Phase 3 : Tests et validation
3.1 Tests de non-régression
./manage list
fonctionne./manage install <service>
fonctionne- Scripts de backup sourcent correctement la configuration
- Installation initiale crée la structure correcte
Phase 4 : Documentation
4.1 Mettre à jour README.md
- Documenter le nouveau chemin de configuration
- Ajouter la procédure de setup initial
4.2 Messages d'erreur informatifs
- Guider l'utilisateur vers la bonne commande d'installation
- Indiquer clairement les chemins de configuration
Avantages de cette migration
- Standard système : Respect de la convention
$HOME/.config/
- Séparation claire : Code et configuration indépendants
- Sécurité : Configuration hors du répertoire de développement
- Simplicité : Plus de détection automatique hasardeuse
- Maintenance : Configuration centralisée et prévisible
Risques identifiés et mitigations
- Risque : Scripts cassés après migration
- Mitigation : Tests de non-régression complets
- Risque : Confusion utilisateur
- Mitigation : Messages d'erreur explicites et documentation claire