brain/04 Ressourcen/IT/Koogle-Deployment auf Azure.md

12 KiB

tags
upnote-import

Koogle-Deployment auf Azure

https://KoogleWeb20251231130827.azurewebsites.net

Diagnose: https://koogleweb20251231130827-hdf7bmewhka0hsdd.scm.westeurope-01.azurewebsites.net/detectors

Web-Tools: Azure App Service

Subscription-ID:


f1332eb1-392f-4b16-9ede-7905848ef248

admin-d-chrka als Contributor eingerichtet


az ad signed-in-user show 

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
  "businessPhones": [],
  "displayName": "Admin D-Chrka",
  "givenName": "Admin",
  "id": "70f83097-e12a-48a6-96b4-15760268c994",
  "jobTitle": null,
  "mail": null,
  "mobilePhone": null,
  "officeLocation": null,
  "preferredLanguage": null,
  "surname": "D-Chrka",
  "userPrincipalName": "Admin-D-Chrka@krah-gruppe.de"
}

Azure CLI installieren, Installieren der Azure CLI unter Windows | Microsoft Learn

Resource group:

{
  "id": "/subscriptions/f1332eb1-392f-4b16-9ede-7905848ef248/resourceGroups/rg-koogle-prod",
  "location": "westeurope",
  "managedBy": null,
  "name": "rg-koogle-prod",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

App Service Plan (Linux, B1 reicht meist für wenige User)

{
  "asyncScalingEnabled": false,
  "elasticScaleEnabled": false,
  "freeOfferExpirationTime": "2026-01-30T11:45:50.8",
  "geoRegion": "West Europe",
  "hyperV": false,
  "id": "/subscriptions/f1332eb1-392f-4b16-9ede-7905848ef248/resourceGroups/rg-koogle-prod/providers/Microsoft.Web/serverfarms/asp-koogle-prod",
  "isCustomMode": false,
  "isSpot": false,
  "isXenon": false,
  "kind": "linux",
  "location": "westeurope",
  "maximumElasticWorkerCount": 1,
  "maximumNumberOfWorkers": 0,
  "name": "asp-koogle-prod",
  "numberOfSites": 0,
  "numberOfWorkers": 1,
  "perSiteScaling": false,
  "provisioningState": "Succeeded",
  "reserved": true,
  "resourceGroup": "rg-koogle-prod",
  "sku": {
    "capacity": 1,
    "family": "B",
    "name": "B1",
    "size": "B1",
    "tier": "Basic"
  },
  "status": "Ready",
  "subscription": "f1332eb1-392f-4b16-9ede-7905848ef248",
  "targetWorkerCount": 0,
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "zoneRedundant": false
}

az webapp identity assign -g $RgName -n $WebAppName

$principalId = az webapp show -g $RgName -n $WebAppName --query identity.principalId -o tsv

{

  "principalId": "bebabb0b-1f5e-4917-bdde-7bbb70139248",
  "tenantId": "94cf90d7-e9ff-49a1-bc3b-a5b94d3cc8ca",
  "type": "SystemAssigned",
  "userAssignedIdentities": null
}

SQL-Server

az sql server create -g $RgName -n $SqlServerName -l $Location -u "sqladmin" -p (New-Guid).Guid

{
  "administratorLogin": "sqladmin",
  "administratorLoginPassword": null,
  "administrators": null,
  "createMode": null,
  "externalGovernanceStatus": "Disabled",
  "federatedClientId": null,
  "fullyQualifiedDomainName": "sql-koogle-prod.database.windows.net",
  "id": "/subscriptions/f1332eb1-392f-4b16-9ede-7905848ef248/resourceGroups/rg-koogle-prod/providers/Microsoft.Sql/servers/sql-koogle-prod", 
  "identity": null,
  "isIPv6Enabled": null,
  "keyId": null,
  "kind": "v12.0",
  "location": "westeurope",
  "minimalTlsVersion": "1.2",
  "name": "sql-koogle-prod",
  "primaryUserAssignedIdentityId": null,
  "privateEndpointConnections": [],
  "publicNetworkAccess": "Enabled",
  "resourceGroup": "rg-koogle-prod",
  "restrictOutboundNetworkAccess": "Disabled",
  "retentionDays": -1,
  "state": "Ready",
  "tags": null,
  "type": "Microsoft.Sql/servers",
  "version": "12.0",
  "workspaceFeature": null
}

az sql server update `
  -g $RgName `
  -n $SqlServerName `
  --admin-password "Magister7000#"

Anmeldung im Azure-Portal muss als admin-d-chrka erfolgen

dann User per SQL anlegen:

CREATE USER [KoogleWeb20251231130827] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [KoogleWeb20251231130827];
ALTER ROLE db_datawriter ADD MEMBER [KoogleWeb20251231130827];

SQL-DB

az sql db create -g $RgName -s $SqlServerName -n $SqlDbName --service-objective S0

{
  "autoPauseDelay": null,
  "availabilityZone": "NoPreference",
  "catalogCollation": "SQL_Latin1_General_CP1_CI_AS",
  "collation": "SQL_Latin1_General_CP1_CI_AS",
  "createMode": null,
  "creationDate": "2025-12-31T12:42:38+00:00",
  "currentBackupStorageRedundancy": "Geo",
  "currentServiceObjectiveName": "S0",
  "currentSku": {
    "capacity": 10,
    "family": null,
    "name": "Standard",
    "size": null,
    "tier": "Standard"
  },
  "databaseId": "f3dcbbb9-8a40-4e02-b40c-a8fc4991c04b",
  "defaultSecondaryLocation": "northeurope",
  "earliestRestoreDate": null,
  "edition": "Standard",
  "elasticPoolId": null,
  "elasticPoolName": null,
  "encryptionProtector": null,
  "encryptionProtectorAutoRotation": null,
  "failoverGroupId": null,
  "federatedClientId": null,
  "freeLimitExhaustionBehavior": null,
  "highAvailabilityReplicaCount": null,
  "id": "/subscriptions/f1332eb1-392f-4b16-9ede-7905848ef248/resourceGroups/rg-koogle-prod/providers/Microsoft.Sql/servers/sql-koogle-prod/databases/db-koogle",
  "identity": null,
  "isInfraEncryptionEnabled": false,
  "keys": null,
  "kind": "v12.0,user",
  "ledgerOn": false,
  "licenseType": null,
  "location": "westeurope",
  "longTermRetentionBackupResourceId": null,
  "maintenanceConfigurationId": "/subscriptions/f1332eb1-392f-4b16-9ede-7905848ef248/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_Default",
  "managedBy": null,
  "manualCutover": null,
  "maxLogSizeBytes": null,
  "maxSizeBytes": 268435456000,
  "minCapacity": null,
  "name": "db-koogle",
  "pausedDate": null,
  "performCutover": null,
  "preferredEnclaveType": null,
  "readScale": "Disabled",
  "recoverableDatabaseId": null,
  "recoveryServicesRecoveryPointId": null,
  "requestedBackupStorageRedundancy": "Geo",
  "requestedServiceObjectiveName": "S0",
  "resourceGroup": "rg-koogle-prod",
  "restorableDroppedDatabaseId": null,
  "restorePointInTime": null,
  "resumedDate": null,
  "sampleName": null,
  "secondaryType": null,
  "sku": {
    "capacity": 10,
    "family": null,
    "name": "Standard",
    "size": null,
    "tier": "Standard"
  },
  "sourceDatabaseDeletionDate": null,
  "sourceDatabaseId": null,
  "sourceResourceId": null,
  "status": "Online",
  "tags": null,
  "type": "Microsoft.Sql/servers/databases",
  "useFreeLimit": null,
  "zoneRedundant": false
}

SQL-Admin

az sql server ad-admin create `

  -g $RgName -s $SqlServerName `

  --display-name $AadAdminDisplay `

  --object-id $AadAdminObjectId

{
  "administratorType": "ActiveDirectory",
  "azureAdOnlyAuthentication": null,
  "id": "/subscriptions/f1332eb1-392f-4b16-9ede-7905848ef248/resourceGroups/rg-koogle-prod/providers/Microsoft.Sql/servers/sql-koogle-prod/administrators/ActiveDirectory",
  "login": "Admin D-Chrka",
  "name": "ActiveDirectory",
  "resourceGroup": "rg-koogle-prod",
  "sid": "70f83097-e12a-48a6-96b4-15760268c994",
  "tenantId": "94cf90d7-e9ff-49a1-bc3b-a5b94d3cc8ca",
  "type": "Microsoft.Sql/servers"
}

Zugriff auf SQL vom NB erlauben

# Firewall-Regel für dein Notebook (lokaler Zugriff/Tools wie DataGrip)
$myIp = (Invoke-RestMethod -Uri "https://api.ipify.org")
az sql server firewall-rule create -g $RgName -s $SqlServerName -n "allow-notebook" --start-ip-address $myIp --end-ip-address $myIp

{
  "endIpAddress": "91.63.233.49",
  "id": "/subscriptions/f1332eb1-392f-4b16-9ede-7905848ef248/resourceGroups/rg-koogle-prod/providers/Microsoft.Sql/servers/sql-koogle-prod/firewallRules/allow-notebook",
  "name": "allow-notebook",
  "resourceGroup": "rg-koogle-prod",
  "startIpAddress": "91.63.233.49",
  "type": "Microsoft.Sql/servers/firewallRules"
}

https://portal.azure.com/#@krahgruppe.onmicrosoft.com/resource/subscriptions/f1332eb1-392f-4b16-9ede-7905848ef248/resourcegroups/rg-koogle-prod/providers/microsoft.sql/servers/sql-koogle-prod/networking


App Insights

az monitor app-insights component create -g $RgName -l $Location -a $AppInsightsName

{- Installing ..
  "appId": "0490e6aa-f192-4fe9-aefb-0ad9ff66d08c",
  "applicationId": "ai-koogle-prod",
  "applicationType": "web",
  "connectionString": "InstrumentationKey=b3f53de2-82d7-4149-a468-dbdc486b919c;IngestionEndpoint=https://westeurope-5.in.applicationinsights.azure.com/;LiveEndpoint=https://westeurope.livediagnostics.monitor.azure.com/;ApplicationId=0490e6aa-f192-4fe9-aefb-0ad9ff66d08c",
  "creationDate": "2025-12-31T12:47:36.840819+00:00",
  "disableIpMasking": null,
  "etag": "\"a402a9ef-0000-0200-0000-69551b6e0000\"",
  "flowType": "Bluefield",
  "hockeyAppId": null,
  "hockeyAppToken": null,
  "id": "/subscriptions/f1332eb1-392f-4b16-9ede-7905848ef248/resourceGroups/rg-koogle-prod/providers/microsoft.insights/components/ai-koogle-prod",
  "immediatePurgeDataOn30Days": null,
  "ingestionMode": "LogAnalytics",
  "instrumentationKey": "b3f53de2-82d7-4149-a468-dbdc486b919c",
  "kind": "web",
  "location": "westeurope",
  "name": "ai-koogle-prod",
  "privateLinkScopedResources": null,
  "provisioningState": "Succeeded",
  "publicNetworkAccessForIngestion": "Enabled",
  "publicNetworkAccessForQuery": "Enabled",
  "requestSource": "rest",
  "resourceGroup": "rg-koogle-prod",
  "retentionInDays": 90,
  "samplingPercentage": null,
  "tags": {},
  "tenantId": "f1332eb1-392f-4b16-9ede-7905848ef248",
  "type": "microsoft.insights/components"
}

$ikey = az monitor app-insights component show -g $RgName -a $AppInsightsName --query instrumentationKey -o tsv

KEY: b3f53de2-82d7-4149-a468-dbdc486b919c

Settings Web-App

az webapp config appsettings set -g $RgName -n $WebAppName --settings `
  ASPNETCORE_ENVIRONMENT=Production `
  APPINSIGHTS_INSTRUMENTATIONKEY=$ikey `
  WEBSITE_RUN_FROM_PACKAGE=1