# 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 ```bash # Générer toutes les configurations cd templates/dev ./generate.sh ``` ### Génération Étape par Étape ```bash # 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/) ```bash # Variables sensibles API_SECRET_KEY=secret_value DATABASE_PASSWORD=password ``` #### `.env` Variables principales du système ```bash # 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 ```bash # 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 :** ```bash # 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érences - `docker-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.secrets` ne 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 1. **Ajouter le service dans `.env` :** ```bash export SERVICES=( "REDIS" "POSTGRESQL" "NOUVEAU_SERVICE" # Ajouter ici # ... ) ``` 2. **Définir les variables du service :** ```bash NOUVEAU_SERVICE=nouveau_service NOUVEAU_SERVICE_IMAGE=image:tag NOUVEAU_SERVICE_PORT=8080:8080 ``` 3. **Régénérer les configurations :** ```bash cd templates/dev ./generate.sh ``` ### Modification des Variables 1. **Modifier les fichiers appropriés** dans `templates/dev/` 2. **Régénérer les configurations :** ```bash cd templates/dev ./generate.sh ``` 3. **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//` 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