4NK Dev 3f84bd4820 ci: docker_tag=dev-test
Séparation de la génération du docker-compose et empêcher la copie dans storage/

- Créé generate_docker_compose.sh pour générer uniquement docker-compose.yml.auto
- Refactorisé generate_variables.sh pour générer uniquement .env.auto
- Mis à jour replace_variables_and_copy.sh pour ne pas copier docker-compose.yml.auto dans storage/
- Mis à jour generate.sh pour orchestrer 7 étapes au lieu de 6
- Mis à jour la documentation README.md pour refléter les changements
- docker-compose.yml.auto et .env.auto restent dans templates/dev/ pour le traitement mais ne sont plus déployés dans storage/
2025-10-06 11:38:07 +00:00
..
2025-10-06 11:38:07 +00:00

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é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 :
export SERVICES=(
    "REDIS"
    "POSTGRESQL"
    "NOUVEAU_SERVICE"  # Ajouter ici
    # ...
)
  1. Définir les variables du service :
NOUVEAU_SERVICE=nouveau_service
NOUVEAU_SERVICE_IMAGE=image:tag
NOUVEAU_SERVICE_PORT=8080:8080
  1. Régénérer les configurations :
cd templates/dev
./generate.sh

Modification des Variables

  1. Modifier les fichiers appropriés dans templates/dev/
  2. Régénérer les configurations :
cd templates/dev
./generate.sh
  1. 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