Migration complète vers PrimeFaces Freya - Corrections des incompatibilités et intégration de primefaces-freya-extension
This commit is contained in:
214
scripts/setup-database-production.ps1
Normal file
214
scripts/setup-database-production.ps1
Normal file
@@ -0,0 +1,214 @@
|
||||
#!/usr/bin/env pwsh
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Script pour configurer la base de données PostgreSQL en production
|
||||
|
||||
.DESCRIPTION
|
||||
Ce script configure PostgreSQL pour Lions User Manager :
|
||||
- Création de la base de données lions_audit
|
||||
- Création de l'utilisateur lions_audit_user
|
||||
- Octroi des privilèges
|
||||
|
||||
.PARAMETER VpsHost
|
||||
Host SSH du VPS (ex: lions@176.57.150.2)
|
||||
|
||||
.PARAMETER Namespace
|
||||
Namespace Kubernetes pour PostgreSQL (défaut: postgresql)
|
||||
|
||||
.PARAMETER PostgresUser
|
||||
Utilisateur PostgreSQL (défaut: lionsuser)
|
||||
|
||||
.PARAMETER DatabaseName
|
||||
Nom de la base de données (défaut: lions_audit)
|
||||
|
||||
.PARAMETER DatabaseUser
|
||||
Nom de l'utilisateur de la base (défaut: lions_audit_user)
|
||||
|
||||
.PARAMETER DatabasePassword
|
||||
Mot de passe pour l'utilisateur de la base
|
||||
|
||||
.EXAMPLE
|
||||
.\setup-database-production.ps1 -VpsHost "lions@176.57.150.2" -DatabasePassword "strong-password-123"
|
||||
#>
|
||||
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$VpsHost,
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[string]$Namespace = "postgresql",
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[string]$PostgresUser = "lionsuser",
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[string]$DatabaseName = "lions_audit",
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[string]$DatabaseUser = "lions_audit_user",
|
||||
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$DatabasePassword
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Couleurs
|
||||
function Write-Success { Write-Host "✅ $args" -ForegroundColor Green }
|
||||
function Write-Info { Write-Host "ℹ️ $args" -ForegroundColor Cyan }
|
||||
function Write-Warning { Write-Host "⚠️ $args" -ForegroundColor Yellow }
|
||||
function Write-Error { Write-Host "❌ $args" -ForegroundColor Red }
|
||||
function Write-Step { Write-Host "`n🚀 $args" -ForegroundColor Magenta }
|
||||
|
||||
Write-Host @"
|
||||
|
||||
╔═══════════════════════════════════════════════════════════════════════════════╗
|
||||
║ ║
|
||||
║ 🗄️ CONFIGURATION BASE DE DONNÉES PRODUCTION 🗄️ ║
|
||||
║ ║
|
||||
╚═══════════════════════════════════════════════════════════════════════════════╝
|
||||
|
||||
"@ -ForegroundColor Cyan
|
||||
|
||||
Write-Info "VPS Host: $VpsHost"
|
||||
Write-Info "Namespace: $Namespace"
|
||||
Write-Info "Database: $DatabaseName"
|
||||
Write-Info "Database User: $DatabaseUser"
|
||||
Write-Info ""
|
||||
|
||||
# 1. Trouver le pod PostgreSQL
|
||||
Write-Step "1. Recherche du pod PostgreSQL..."
|
||||
|
||||
$getPodCmd = "kubectl get pods -n $Namespace -o jsonpath='{.items[0].metadata.name}'"
|
||||
try {
|
||||
$POSTGRES_POD = ssh.exe $VpsHost $getPodCmd
|
||||
if ([string]::IsNullOrEmpty($POSTGRES_POD)) {
|
||||
Write-Error "Aucun pod PostgreSQL trouvé dans le namespace $Namespace"
|
||||
exit 1
|
||||
}
|
||||
Write-Success "Pod PostgreSQL trouvé: $POSTGRES_POD"
|
||||
} catch {
|
||||
Write-Error "Erreur lors de la recherche du pod: $($_.Exception.Message)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 2. Lister les bases de données existantes
|
||||
Write-Step "2. Liste des bases de données existantes..."
|
||||
|
||||
$listDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c '\l'"
|
||||
try {
|
||||
ssh.exe $VpsHost $listDbCmd
|
||||
} catch {
|
||||
Write-Warning "Erreur lors de la liste des bases: $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
# 3. Vérifier si la base existe déjà
|
||||
Write-Step "3. Vérification de l'existence de la base de données..."
|
||||
|
||||
$checkDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -tAc \"SELECT 1 FROM pg_database WHERE datname='$DatabaseName'\""
|
||||
try {
|
||||
$dbExists = ssh.exe $VpsHost $checkDbCmd
|
||||
|
||||
if ($dbExists -eq "1") {
|
||||
Write-Warning "La base de données $DatabaseName existe déjà"
|
||||
$createDb = Read-Host "Voulez-vous la recréer ? (oui/non)"
|
||||
if ($createDb -eq "oui") {
|
||||
$dropDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c 'DROP DATABASE IF EXISTS $DatabaseName;'"
|
||||
ssh.exe $VpsHost $dropDbCmd
|
||||
Write-Success "Base de données supprimée"
|
||||
} else {
|
||||
Write-Info "Base de données conservée"
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
Write-Warning "Erreur lors de la vérification: $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
# 4. Créer la base de données
|
||||
Write-Step "4. Création de la base de données $DatabaseName..."
|
||||
|
||||
$createDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c 'CREATE DATABASE $DatabaseName OWNER $PostgresUser;'"
|
||||
try {
|
||||
ssh.exe $VpsHost $createDbCmd
|
||||
Write-Success "Base de données $DatabaseName créée"
|
||||
} catch {
|
||||
Write-Warning "Erreur lors de la création (peut-être qu'elle existe déjà): $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
# 5. Créer l'utilisateur
|
||||
Write-Step "5. Création de l'utilisateur $DatabaseUser..."
|
||||
|
||||
$createUserCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c \"CREATE USER $DatabaseUser WITH PASSWORD '$DatabasePassword';\""
|
||||
try {
|
||||
ssh.exe $VpsHost $createUserCmd
|
||||
Write-Success "Utilisateur $DatabaseUser créé"
|
||||
} catch {
|
||||
Write-Warning "Erreur lors de la création de l'utilisateur (peut-être qu'il existe déjà): $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
# 6. Octroyer les privilèges
|
||||
Write-Step "6. Octroi des privilèges..."
|
||||
|
||||
$grantDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c 'GRANT ALL PRIVILEGES ON DATABASE $DatabaseName TO $DatabaseUser;'"
|
||||
try {
|
||||
ssh.exe $VpsHost $grantDbCmd
|
||||
Write-Success "Privilèges accordés sur la base de données"
|
||||
} catch {
|
||||
Write-Warning "Erreur lors de l'octroi des privilèges: $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
# 7. Octroyer les privilèges sur le schéma public
|
||||
Write-Step "7. Octroi des privilèges sur le schéma public..."
|
||||
|
||||
$grantSchemaCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d $DatabaseName -c 'GRANT ALL ON SCHEMA public TO $DatabaseUser;'"
|
||||
try {
|
||||
ssh.exe $VpsHost $grantSchemaCmd
|
||||
Write-Success "Privilèges accordés sur le schéma public"
|
||||
} catch {
|
||||
Write-Warning "Erreur lors de l'octroi des privilèges sur le schéma: $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
# 8. Test de connexion
|
||||
Write-Step "8. Test de connexion à la base de données..."
|
||||
|
||||
$testConnCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $DatabaseUser -d $DatabaseName -c 'SELECT version();'"
|
||||
try {
|
||||
$version = ssh.exe $VpsHost $testConnCmd
|
||||
Write-Success "Connexion réussie !"
|
||||
Write-Info "Version PostgreSQL: $version"
|
||||
} catch {
|
||||
Write-Error "Échec de la connexion: $($_.Exception.Message)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 9. Résumé
|
||||
Write-Step "9. Résumé de la configuration..."
|
||||
|
||||
Write-Host @"
|
||||
|
||||
╔═══════════════════════════════════════════════════════════════════════════════╗
|
||||
║ ║
|
||||
║ ✅ CONFIGURATION BASE DE DONNÉES TERMINÉE ✅ ║
|
||||
║ ║
|
||||
╚═══════════════════════════════════════════════════════════════════════════════╝
|
||||
|
||||
"@ -ForegroundColor Green
|
||||
|
||||
Write-Host "📋 INFORMATIONS IMPORTANTES:" -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
Write-Host "🗄️ BASE DE DONNÉES:" -ForegroundColor Cyan
|
||||
Write-Host " Nom: $DatabaseName"
|
||||
Write-Host " Utilisateur: $DatabaseUser"
|
||||
Write-Host " Mot de passe: $DatabasePassword"
|
||||
Write-Host ""
|
||||
Write-Host "🔗 CONNEXION:" -ForegroundColor Cyan
|
||||
Write-Host " Host: lions-db.lions.svc.cluster.local (Service Kubernetes)"
|
||||
Write-Host " Port: 5432"
|
||||
Write-Host " Database: $DatabaseName"
|
||||
Write-Host ""
|
||||
Write-Host "⚠️ ACTIONS REQUISES:" -ForegroundColor Yellow
|
||||
Write-Host " 1. Sauvegardez le mot de passe de la base de données"
|
||||
Write-Host " 2. Créez le secret Kubernetes avec ces informations"
|
||||
Write-Host " 3. Vérifiez que Flyway peut exécuter les migrations"
|
||||
Write-Host ""
|
||||
|
||||
Reference in New Issue
Block a user