- Introduction du système de templates avec séparation templates/storage - Scripts de génération automatisée pour toutes les configurations - Résolution multi-passes des variables imbriquées - API simplifiée qui lit uniquement storage/ (plus de traitement de variables) - Documentation complète du nouveau système - Support des services externes (BOOTSTRAP, LECOFFRE_BACK_MINI) - Protection des templates sources et isolation des environnements
6.4 KiB
Système de Templates 4NK Vault
🎯 Vue d'ensemble
Le répertoire templates/ contient tous les fichiers sources avec variables d'environnement qui sont utilisés pour générer automatiquement les configurations finales dans storage/.
📁 Structure
templates/
├── dev/ # Templates pour l'environnement de développement
│ ├── generate.sh # Script principal d'orchestration
│ ├── generate_variables.sh # Génération des variables d'environnement
│ ├── generate_grafana_dashboards.sh # Génération des dashboards Grafana
│ ├── generate_promtail_config.sh # Génération de la config Promtail
│ ├── generate_logrotate_configs.sh # Génération des configs logrotate
│ ├── generate_nginx_configs.sh # Génération des configs nginx
│ ├── replace_variables_and_copy.sh # Résolution des variables + copie
│ ├── .env.secrets # Variables sensibles
│ ├── .env # Variables principales
│ ├── .env.post # Variables finales/composites
│ ├── _4NK_modules/ # Modules avec configurations
│ ├── 4NK_modules/ # Modules générés (Grafana, Promtail)
│ ├── logrotade/ # Configurations logrotate
│ └── nginx/ # Configurations nginx
└── prod/ # Templates pour l'environnement de production
🚀 Utilisation Rapide
Génération Complète
# Générer toutes les configurations
cd templates/dev
./generate.sh
Génération Étape par Étape
# 1. Générer les variables d'environnement
./generate_variables.sh
# 2. Générer les dashboards Grafana
./generate_grafana_dashboards.sh
# 3. Générer la configuration Promtail
./generate_promtail_config.sh
# 4. Générer les configurations logrotate
./generate_logrotate_configs.sh
# 5. Générer les configurations nginx
./generate_nginx_configs.sh
# 6. Résoudre les variables et copier vers storage/
./replace_variables_and_copy.sh
🔧 Configuration
Variables d'Environnement
.env.secrets
Variables sensibles (ne sont jamais copiées dans storage/)
# Variables sensibles
API_SECRET_KEY=secret_value
DATABASE_PASSWORD=password
.env
Variables principales du système
# Configuration de base
ROOT_DIR=/home/debian/_4NK_env
DOMAIN=_4NKweb.com
HOST=dev4.$DOMAIN
# Services
export SERVICES=(
"REDIS"
"POSTGRESQL"
"BITCOIN"
# ...
)
# Services externes
export SERVICES_EXTERNAL=(
"BOOTSTRAP"
"LECOFFRE_BACK_MINI"
)
.env.post
Variables composites et finales
# URLs composites
SDK_RELAY_BOOSTRAP_URL=$BOOTSTRAP_URL_WS_EXTERNAL
RELAY_URLS=$SDK_RELAY_URL,$SDK_RELAY_BOOSTRAP_URL
BITCOIN_RPC_URL=http://$BITCOIN_DOCKER_NAME:$BITCOIN_SIGNET_RPC_PORT
Templates de Fichiers
Les fichiers dans les sous-répertoires utilisent la syntaxe de variables :
$VARIABLE- Variable simple${VARIABLE}- Variable avec accolades$VARIABLE_SUFFIX- Variable avec suffixe
Exemple :
# Dans bitcoin.conf
datadir=$BITCOIN_DATAS_DIR
rpcuser=$BITCOIN_RPC_USER
rpcpassword=$BITCOIN_RPC_PASSWORD
📋 Scripts Disponibles
generate.sh
Script principal qui orchestre tous les autres scripts.
Fonctionnalités :
- Exécution séquentielle de tous les scripts de génération
- Gestion des erreurs et rollback
- Logs détaillés du processus
- Validation des prérequis
generate_variables.sh
Génère les variables d'environnement et le fichier Docker Compose.
Génère :
.env.auto- Variables générées avec référencesdocker-compose.yml.auto- Docker Compose avec variables
generate_grafana_dashboards.sh
Génère automatiquement les dashboards Grafana.
Types de dashboards :
- Services Overview
- Bitcoin Services
- Frontend Services
- SDK Services
generate_promtail_config.sh
Génère la configuration Promtail pour la collecte de logs.
generate_logrotate_configs.sh
Génère les configurations logrotate pour tous les services.
generate_nginx_configs.sh
Génère les configurations nginx (upstreams, HTTPS, etc.).
replace_variables_and_copy.sh
Résout toutes les variables et copie les fichiers vers storage/.
Fonctionnalités :
- Chargement séquentiel des fichiers
.env - Résolution multi-passes (jusqu'à 5 passes)
- Copie sélective (exclusion des fichiers sensibles)
- Validation des variables résolues
🔒 Sécurité
Protection des Templates
- Les fichiers dans
templates/ne sont jamais modifiés par l'API - Seuls les fichiers dans
storage/sont accessibles via l'API - Les fichiers
.env.secretsne sont jamais copiés
Isolation des Environnements
- Chaque environnement (
dev,prod) a ses propres templates - Variables d'environnement isolées par environnement
- Pas de fuite de données entre environnements
🛠️ Maintenance
Ajout d'un Nouveau Service
- Ajouter le service dans
.env:
export SERVICES=(
"REDIS"
"POSTGRESQL"
"NOUVEAU_SERVICE" # Ajouter ici
# ...
)
- Définir les variables du service :
NOUVEAU_SERVICE=nouveau_service
NOUVEAU_SERVICE_IMAGE=image:tag
NOUVEAU_SERVICE_PORT=8080:8080
- Régénérer les configurations :
cd templates/dev
./generate.sh
Modification des Variables
- Modifier les fichiers appropriés dans
templates/dev/ - Régénérer les configurations :
cd templates/dev
./generate.sh
- Vérifier les résultats dans
storage/dev/
📊 Monitoring
Logs de Génération
Les scripts fournissent des logs détaillés :
- Nombre de variables chargées
- Fichiers traités et copiés
- Erreurs de résolution des variables
Validation
- Vérification automatique des variables non résolues
- Protection contre les dépendances circulaires
- Validation des chemins et permissions
🔄 Intégration
Avec l'API
L'API 4NK Vault lit uniquement les fichiers dans storage/<env>/ après génération.
Avec CI/CD
Les scripts de génération peuvent être intégrés dans des pipelines CI/CD pour automatiser le déploiement.
📚 Documentation
docs/templates-system.md- Documentation complète du système../README.md- Documentation principale du projet../CHANGELOG.md- Historique des modifications