Inhaltsverzeichnis
Runbook: DSN-Export
Trajanje: ~5 minut
Vloga: Sistemski administrator, DBA
Uporaba: Migracija, dokumentacija, obnova ob nesreči
Izvoz in uvoz DSN definicij (Data Source Names).
Potek dela
flowchart TD
A[Začetek] --> B{Cilj?}
B -->|Izvoz| C[Izvleci DSN iz konfiguracije]
B -->|Uvoz| D[Vstavi DSN v konfiguracijo]
C --> E[Shrani JSON]
D --> F[Ponovno zaženi Gateway]
E --> G[Končano]
F --> H[Testiraj DSN]
H --> G
style G fill:#e8f5e9
1. Struktura DSN
DSN so definirani v appsettings.json:
{
"Gateway": {
"Databases": {
"demo": {
"Provider": "sqlite",
"ConnectionString": "Data Source=data/demo.db"
},
"produkcija": {
"Provider": "sqlserver",
"ConnectionString": "Server=sql01;Database=ProdDB;User Id=app;Password=***"
},
"porocanje": {
"Provider": "postgresql",
"ConnectionString": "Host=pg01;Database=reports;Username=reader;Password=***"
}
}
}
}
2. Izvoz DSN
Z jq (Linux/macOS):
# Izvozi vse DSN kot JSON jq '.Gateway.Databases' appsettings.json > dsn-export.json # Izvozi posamezni DSN jq '.Gateway.Databases.produkcija' appsettings.json > produkcija-dsn.json # Navedi imena DSN jq -r '.Gateway.Databases | keys[]' appsettings.json
S PowerShell (Windows):
# Naloži JSON $config = Get-Content "appsettings.json" | ConvertFrom-Json # Izvozi vse DSN $config.Gateway.Databases | ConvertTo-Json -Depth 10 | Out-File "dsn-export.json" # Navedi imena DSN $config.Gateway.Databases.PSObject.Properties.Name
3. Uvoz DSN
Z jq (Linux):
# Vstavi DSN iz izvozne datoteke v konfiguracijo jq --slurpfile dsn dsn-export.json '.Gateway.Databases = $dsn[0]' appsettings.json > appsettings.new.json # Varnostna kopija in zamenjava cp appsettings.json appsettings.json.bak mv appsettings.new.json appsettings.json
S PowerShell (Windows):
# Naloži obstoječo konfiguracijo $config = Get-Content "appsettings.json" | ConvertFrom-Json # Naloži izvoz $dsnExport = Get-Content "dsn-export.json" | ConvertFrom-Json # Zamenjaj DSN $config.Gateway.Databases = $dsnExport # Shrani $config | ConvertTo-Json -Depth 10 | Out-File "appsettings.json" -Encoding UTF8
4. Dodajanje posameznega DSN
Z jq:
# Dodaj nov DSN jq '.Gateway.Databases.novabaza = { "Provider": "mysql", "ConnectionString": "Server=mysql01;Database=newdb;User=app;Password=secret" }' appsettings.json > appsettings.new.json mv appsettings.new.json appsettings.json
S PowerShell:
$config = Get-Content "appsettings.json" | ConvertFrom-Json # Nov DSN kot PSObject $newDsn = [PSCustomObject]@{ Provider = "mysql" ConnectionString = "Server=mysql01;Database=newdb;User=app;Password=secret" } # Dodaj $config.Gateway.Databases | Add-Member -Name "novabaza" -Value $newDsn -MemberType NoteProperty $config | ConvertTo-Json -Depth 10 | Out-File "appsettings.json" -Encoding UTF8
5. Migracija DSN med okolji
Izvoz iz produkcije:
# Na produkcijskem strežniku ssh prod-gateway "jq '.Gateway.Databases' /opt/data-gateway/appsettings.json" > prod-dsn.json
Uvoz v testno okolje (s prilagoditvijo gesel):
# Zamenjaj gesla s testnimi gesli jq '.produkcija.ConnectionString = "Server=sql-staging;Database=ProdDB;User Id=app;Password=staging-pwd"' \ prod-dsn.json > staging-dsn.json # Uvozi v testno okolje 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. Ponovni zagon Gateway
Po spremembah DSN:
# Linux sudo systemctl restart data-gateway # Windows Restart-Service -Name "DataGateway" # Docker docker restart gateway
7. Testiranje DSN
# Testiraj vse DSN for dsn in $(jq -r '.Gateway.Databases | keys[]' appsettings.json); do echo -n "Testiram $dsn: " curl -s -o /dev/null -w "%{http_code}\n" "http://localhost:5000/api/v1/dsn/$dsn/tables" done
Pričakovani izpis:
Testiram demo: 200 Testiram produkcija: 200 Testiram porocanje: 200
8. Kontrolni seznam
| # | Točka preverjanja | V |
| — | ———– | — |
| 1 | DSN izvoženi | |
| 2 | Izvozna datoteka shranjena | |
| 3 | Gesla niso v čistopisu v izvozu | |
| 4 | Uvoz izveden | |
| 5 | Gateway ponovno zagnan | |
| 6 | Vsi DSN testirani |
Odpravljanje težav
| Težava | Vzrok | Rešitev |
| ——— | ——— | ——– |
jq: parse error | Neveljaven JSON | Validiraj JSON |
| DSN ni najden | Gateway ni ponovno zagnan | Ponovni zagon |
Connection failed | Napačen Connection String | Preveri poverilnice |
| Težave s kodiranjem | Napačno kodiranje | Uporabi UTF-8 |
Varnostni nasveti
Gesla v izvozih:
- Nikoli ne commitaj gesel v Git
- Šifriraj ali izbriši izvozne datoteke
- Uporabi okoljske spremenljivke za poverilnice:
"ConnectionString": "Server=sql01;Database=ProdDB;User Id=${DB_USER};Password=${DB_PASS}"
Povezani Runbooks
- Config-Backup - Popolna varnostna kopija
- Upravljanje DSN - Administracija DSN
- Zagon strežnika - Po uvozu
« <- Config-Backup | -> Pregled operaterja »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional
Zuletzt geändert: dne 29.01.2026 ob 23:35