Inhaltsverzeichnis
Runbook: DSN-Export
Trajanje: ~5 minuta
Uloga: Sysadmin, DBA
Primjena: Migracija, Dokumentacija, Disaster Recovery
Export i Import DSN definicija (Data Source Names).
Tijek rada
flowchart TD
A[Start] --> B{Cilj?}
B -->|Export| C[DSN iz Configa ekstrahirati]
B -->|Import| D[DSN u Config umetnuti]
C --> E[JSON spremiti]
D --> F[Gateway ponovno pokrenuti]
E --> G[Gotovo]
F --> H[DSN testirati]
H --> G
style G fill:#e8f5e9
1. DSN struktura
DSN se definiraju u appsettings.json:
{
"Gateway": {
"Databases": {
"demo": {
"Provider": "sqlite",
"ConnectionString": "Data Source=data/demo.db"
},
"produktion": {
"Provider": "sqlserver",
"ConnectionString": "Server=sql01;Database=ProdDB;User Id=app;Password=***"
},
"reporting": {
"Provider": "postgresql",
"ConnectionString": "Host=pg01;Database=reports;Username=reader;Password=***"
}
}
}
}
2. DSN eksportirati
Sa jq (Linux/macOS):
# Sve DSN kao JSON eksportirati jq '.Gateway.Databases' appsettings.json > dsn-export.json # Pojedinu DSN eksportirati jq '.Gateway.Databases.produktion' appsettings.json > produktion-dsn.json # DSN imena ispisati jq -r '.Gateway.Databases | keys[]' appsettings.json
Sa PowerShell (Windows):
# JSON ucitati $config = Get-Content "appsettings.json" | ConvertFrom-Json # Sve DSN eksportirati $config.Gateway.Databases | ConvertTo-Json -Depth 10 | Out-File "dsn-export.json" # DSN imena ispisati $config.Gateway.Databases.PSObject.Properties.Name
3. DSN importirati
Sa jq (Linux):
# DSN iz Export-datoteke u Config umetnuti jq --slurpfile dsn dsn-export.json '.Gateway.Databases = $dsn[0]' appsettings.json > appsettings.new.json # Backup i zamijeniti cp appsettings.json appsettings.json.bak mv appsettings.new.json appsettings.json
Sa PowerShell (Windows):
# Postojecu Config ucitati $config = Get-Content "appsettings.json" | ConvertFrom-Json # Export ucitati $dsnExport = Get-Content "dsn-export.json" | ConvertFrom-Json # DSN zamijeniti $config.Gateway.Databases = $dsnExport # Spremiti $config | ConvertTo-Json -Depth 10 | Out-File "appsettings.json" -Encoding UTF8
4. Pojedinu DSN dodati
Sa jq:
# Novu DSN dodati jq '.Gateway.Databases.neuedb = { "Provider": "mysql", "ConnectionString": "Server=mysql01;Database=newdb;User=app;Password=secret" }' appsettings.json > appsettings.new.json mv appsettings.new.json appsettings.json
Sa PowerShell:
$config = Get-Content "appsettings.json" | ConvertFrom-Json # Nova DSN kao PSObject $newDsn = [PSCustomObject]@{ Provider = "mysql" ConnectionString = "Server=mysql01;Database=newdb;User=app;Password=secret" } # Dodati $config.Gateway.Databases | Add-Member -Name "neuedb" -Value $newDsn -MemberType NoteProperty $config | ConvertTo-Json -Depth 10 | Out-File "appsettings.json" -Encoding UTF8
5. DSN izmedu okruzenja migrirati
Export iz produkcije:
# Na Prod-serveru ssh prod-gateway "jq '.Gateway.Databases' /opt/data-gateway/appsettings.json" > prod-dsn.json
Import u Staging (s prilagodbom lozinke):
# Lozinke zamijeniti Staging lozinkama jq '.produktion.ConnectionString = "Server=sql-staging;Database=ProdDB;User Id=app;Password=staging-pwd"' \ prod-dsn.json > staging-dsn.json # U Staging importirati scp staging-dsn.json staging-gateway:/tmp/ ssh staging-gateway "jq --slurpfile dsn /tmp/staging-dsn.json \ '.Gateway.Databases = \$dsn[0]' /opt/data-gateway/appsettings.json > /tmp/new.json && \ mv /tmp/new.json /opt/data-gateway/appsettings.json && \ systemctl restart data-gateway"
6. Gateway ponovno pokrenuti
Nakon DSN promjena:
# Linux sudo systemctl restart data-gateway # Windows Restart-Service -Name "DataGateway" # Docker docker restart gateway
7. DSN testirati
# Sve DSN testirati for dsn in $(jq -r '.Gateway.Databases | keys[]' appsettings.json); do echo -n "Testing $dsn: " curl -s -o /dev/null -w "%{http_code}\n" "http://localhost:5000/api/v1/dsn/$dsn/tables" done
Ocekivani izlaz:
Testing demo: 200 Testing produktion: 200 Testing reporting: 200
8. Kontrolna lista
| # | Provjera | Da/Ne |
| — | ———– | — |
| 1 | DSN eksportiran | - |
| 2 | Export-datoteka sacuvana | - |
| 3 | Lozinke nisu u cistom tekstu u exportu | - |
| 4 | Import proveden | - |
| 5 | Gateway ponovno pokrenut | - |
| 6 | Sve DSN testirane | - |
Rjesavanje problema
| Problem | Uzrok | Rjesenje |
| ——— | ——— | ——– |
jq: parse error | Nevalidan JSON | JSON validirati |
| DSN nije pronadena | Gateway nije ponovno pokrenut | Restart |
Connection failed | Pogresan Connection String | Credentiale provjeriti |
| Encoding problemi | Pogresan Encoding | UTF-8 koristiti |
Sigurnosne napomene
Lozinke u Exportima:
- Nikad lozinke committati u Git
- Export-datoteke enkriptirati ili obrisati
- Varijable okruzenja za Credentiale koristiti:
"ConnectionString": "Server=sql01;Database=ProdDB;User Id=${DB_USER};Password=${DB_PASS}"
Povezani runbookovi
- Config-Backup - Potpuni backup
- DSN upravljanje - DSN administracija
- Server pokrenuti - Nakon Importa
« <- Config-Backup | -> Operator pregled »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional
Zuletzt geändert: 29.01.2026. u 23:38