diff --git a/infra/PowerBi/deploy.powerBi.json b/infra/PowerBi/deploy.powerBi.json deleted file mode 100644 index ef54fab..0000000 --- a/infra/PowerBi/deploy.powerBi.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]", - "metadata": { - "description": "Specifies the location for all resources." - } - }, - "powerBiName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the key vault." - } - }, - "tenantId": { - "type": "string", - "metadata": { - "description": "Specifies the location for all resources." - } - }, - "subnetId": { - "type": "string", - "metadata": { - "description": "Specifies the id of the subnet which the private endpoint uses." - } - }, - "privateDnsZoneIdAnalysis": { - "type": "string", - "metadata": { - "description": "Specifies the ID of the private dns zonee for Power BI analysis endpoint." - } - }, - "privateDnsZoneIdPbiDedicated": { - "type": "string", - "metadata": { - "description": "Specifies the ID of the private dns zonee for Power BI Dedicated endpoint." - } - }, - "privateDnsZoneIdPowerQuery": { - "type": "string", - "metadata": { - "description": "Specifies the ID of the private dns zonee for Power BI power query." - } - } - }, - "functions": [], - "variables": { - "location": "[parameters('location')]", - "powerBiName": "[parameters('powerBiName')]", - "tenantId": "[parameters('tenantId')]", - "subnetId": "[parameters('subnetId')]", - "privateDnsZoneIdAnalysis": "[parameters('privateDnsZoneIdAnalysis')]", - "privateDnsZoneIdPbiDedicated": "[parameters('privateDnsZoneIdPbiDedicated')]", - "privateDnsZoneIdPowerQuery": "[parameters('privateDnsZoneIdPowerQuery')]", - "privateEndpointName": "[concat(variables('powerBiName'), '-private-endpoint')]" - }, - "resources": [ - { - "type": "Microsoft.PowerBI/privateLinkServicesForPowerBI", - "apiVersion": "2020-06-01", - "name": "[variables('powerBiName')]", - "location": "global", - "properties": { - "tenantId": "[variables('tenantId')]" - } - }, - { - "type": "Microsoft.Network/privateEndpoints", - "apiVersion": "2020-05-01", - "name": "[variables('privateEndpointName')]", - "dependsOn": [ - "[resourceId('Microsoft.PowerBI/privateLinkServicesForPowerBI', variables('powerBiName'))]" - ], - "location": "[variables('location')]", - "properties": { - "privateLinkServiceConnections": [ - { - "name": "[variables('privateEndpointName')]", - "properties": { - "privateLinkServiceId": "[resourceId('Microsoft.PowerBI/privateLinkServicesForPowerBI', variables('powerBiName'))]", - "groupIds": [ - "Tenant" - ] - } - } - ], - "manualPrivateLinkServiceConnections": [ - ], - "subnet": { - "id": "[variables('subnetId')]" - } - } - }, - { - "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups", - "apiVersion": "2020-05-01", - "name": "[concat(variables('privateEndpointName'), '/aRecord')]", - "dependsOn": [ - "[resourceId('Microsoft.Network/privateEndpoints', variables('privateEndpointName'))]" - ], - "location": "[variables('location')]", - "properties": { - "privateDnsZoneConfigs": [ - { - "name": "[concat(variables('privateEndpointName'), '-aRecord-analysis')]", - "properties": { - "privateDnsZoneId": "[variables('privateDnsZoneIdAnalysis')]" - } - }, - { - "name": "[concat(variables('privateEndpointName'), '-aRecord-pbidedicated')]", - "properties": { - "privateDnsZoneId": "[variables('privateDnsZoneIdPbiDedicated')]" - } - }, - { - "name": "[concat(variables('privateEndpointName'), '-aRecord-powerquery')]", - "properties": { - "privateDnsZoneId": "[variables('privateDnsZoneIdPowerQuery')]" - } - } - ] - } - } - ], - "outputs": {} -} \ No newline at end of file diff --git a/infra/PowerBi/params.powerBi001.json b/infra/PowerBi/params.powerBi001.json deleted file mode 100644 index 0718108..0000000 --- a/infra/PowerBi/params.powerBi001.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "location": { - "value": "northeurope" - }, - "powerBiName": { - "value": "dh-powerbi001" - }, - "tenantId": { - "value": "52d40f65-ad6d-48c3-906f-1ccf598612d4" - }, - "subnetId": { - "value": "/subscriptions/4060c03e-0d2e-44b7-82a3-da9376fe50b2/resourceGroups/dh-network/providers/Microsoft.Network/virtualNetworks/dh-vnet/subnets/dh-privatelink-subnet" - }, - "privateDnsZoneIdAnalysis": { - "value": "/subscriptions/4060c03e-0d2e-44b7-82a3-da9376fe50b2/resourceGroups/dh-global-dns/providers/Microsoft.Network/privateDnsZones/privatelink.analysis.windows.net" - }, - "privateDnsZoneIdPbiDedicated": { - "value": "/subscriptions/4060c03e-0d2e-44b7-82a3-da9376fe50b2/resourceGroups/dh-global-dns/providers/Microsoft.Network/privateDnsZones/privatelink.pbidedicated.windows.net" - }, - "privateDnsZoneIdPowerQuery": { - "value": "/subscriptions/4060c03e-0d2e-44b7-82a3-da9376fe50b2/resourceGroups/dh-global-dns/providers/Microsoft.Network/privateDnsZones/privatelink.tip1.powerquery.microsoft.com" - } - } -} \ No newline at end of file diff --git a/infra/PowerBiGateway/deploy.powerBiGateway.json b/infra/PowerBiGateway/deploy.powerBiGateway.json deleted file mode 100644 index 5bed01e..0000000 --- a/infra/PowerBiGateway/deploy.powerBiGateway.json +++ /dev/null @@ -1,340 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]", - "metadata": { - "description": "Specifies the location for all resources." - } - }, - "vmssName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the virtual machine scale set." - } - }, - "vmssSkuTier": { - "type": "string", - "allowedValues": [ - "Standard", - "Basic" - ], - "defaultValue": "Standard", - "metadata": { - "description": "Specifies the SKU tier of the virtual machine scale set." - } - }, - "vmssSkuName": { - "type": "string", - "metadata": { - "description": "Specifies the SKU name of the virtual machine scale set." - } - }, - "vmssAdminUsername": { - "type": "string", - "metadata": { - "description": "Specifies the admin username of the virtual machine scale set." - } - }, - "vmssAdminPassword": { - "type": "securestring", - "metadata": { - "description": "Specifies the admin password of the virtual machine scale set." - } - }, - "storageAccountContainerId": { - "type": "string", - "metadata": { - "description": "Specifies the resource id of an existing storage account." - } - }, - "storageAccountKey": { - "type": "securestring", - "metadata": { - "description": "Specifies the ID of the existing storage account where the powershell script is stored." - } - }, - "subnetId": { - "type": "string", - "metadata": { - "description": "Specifies the resource Id of the subnet to which the virtual machine should connect." - } - }, - "powerBiTenantId": { - "type": "securestring", - "metadata": { - "description": "Specifies the tenant id of the Power BI Gateway." - } - }, - "powerBiGatewayClientId": { - "type": "string", - "metadata": { - "description": "Specifies the client Id of the service principal which will be used for installing the Power BI Gateway." - } - }, - "powerBiGatewayClientSecret": { - "type": "securestring", - "metadata": { - "description": "Specifies the client secret of the service principal which will be used for installing the Power BI Gateway." - } - }, - "powerBiGatewayRecoveryKey": { - "type": "securestring", - "metadata": { - "description": "Specifies the recovery Key of the Power BI Gateway." - } - }, - "powerBiGatewayAdminGroupObjectId": { - "type": "securestring", - "metadata": { - "description": "Specifies the admin object id that should have admin rights to the Power BI Gateway." - } - } - }, - "functions": [], - "variables": { - "location": "[parameters('location')]", - "vmssName": "[parameters('vmssName')]", - "vmssSkuTier": "[parameters('vmssSkuTier')]", - "vmssSkuName": "[parameters('vmssSkuName')]", - "vmssAdminUsername": "[parameters('vmssAdminUsername')]", - "vmssAdminPassword": "[parameters('vmssAdminPassword')]", - "storageAccountContainerId": "[parameters('storageAccountContainerId')]", - "storageAccountName": "[split(variables('storageAccountContainerId'), '/')[8]]", - "storageAccountContainerName": "[last(split(variables('storageAccountContainerId'), '/'))]", - "storageAccountKey": "[parameters('storageAccountKey')]", - "subnetId": "[parameters('subnetId')]", - "powerBiGatewayClientId": "[parameters('powerBiGatewayClientId')]", - "powerBiGatewayClientSecret": "[parameters('powerBiGatewayClientSecret')]", - "powerBiGatewayRecoveryKey": "[parameters('powerBiGatewayRecoveryKey')]", - "powerBiTenantId": "[parameters('powerBiTenantId')]", - "powerBiGatewayAdminGroupObjectId": "[parameters('powerBiGatewayAdminGroupObjectId')]" - }, - "resources": [ - { - "type": "Microsoft.Network/publicIPAddresses", - "apiVersion": "2020-05-01", - "name": "[concat(variables('vmssName'), '-publicip')]", - "location": "[variables('location')]", - "sku": { - "name": "Standard" - }, - "properties": { - "publicIPAllocationMethod": "Static", - "publicIPAddressVersion": "IPv4", - "dnsSettings": { - "domainNameLabel": "[toLower(variables('vmssName'))]" - }, - // "ddosSettings": { - // "protectionCoverage": "Standard", - // "protectedIP": true - // }, - "ipTags": [] - } - }, - { - "type": "Microsoft.Network/loadBalancers", - "apiVersion": "2020-05-01", - "name": "[concat(variables('vmssName'), '-lb')]", - "location": "[variables('location')]", - "dependsOn": [ - "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('vmssName'), '-publicip'))]" - ], - "sku": { - "name": "Standard" - }, - "properties": { - "frontendIPConfigurations": [ - { - "name": "loadBalancerFrontEnd", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('vmssName'), '-publicip'))]" - } - // "subnet": { - // "id": "[variables('subnetId')]" - // } - } - } - ], - "backendAddressPools": [ - { - "name": "[concat(variables('vmssName'), '-backendPool')]" - } - ], - "inboundNatPools": [ - { - "name": "[concat(variables('vmssName'), '-natPool')]", - "properties": { - "frontendIPConfiguration": { - "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', concat(variables('vmssName'), '-lb'), 'loadBalancerFrontEnd')]" - }, - "protocol": "Tcp", - "frontendPortRangeStart": 50000, - "frontendPortRangeEnd": 50099, - "backendPort": 3389, - "idleTimeoutInMinutes": 4 - } - } - ], - "loadBalancingRules": [ - { - "name": "ProbeRule", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', concat(variables('vmssName'), '-lb'), 'loadBalancerFrontEnd')]" - }, - "backendAddressPool": { - "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat(variables('vmssName'), '-lb'), concat(variables('vmssName'), '-backendPool'))]" - }, - "protocol": "Tcp", - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes/', concat(variables('vmssName'), '-lb'), concat(variables('vmssName'), '-probe'))]" - } - } - } - ], - "probes": [ - { - "name": "[concat(variables('vmssName'), '-probe')]", - "properties": { - "protocol": "Http", - "port": 80, - "requestPath": "/", - "intervalInSeconds": 5, - "numberOfProbes": 2 - } - } - ] - } - }, - { - "type": "Microsoft.Compute/virtualMachineScaleSets", - "apiVersion": "2019-07-01", - "name": "[variables('vmssName')]", - "location": "[variables('location')]", - "dependsOn": [ - "[resourceId('Microsoft.Network/loadBalancers', concat(variables('vmssName'), '-lb'))]" - ], - "identity": { - "type": "SystemAssigned" - }, - "sku": { - "name": "[variables('vmssSkuName')]", - "tier": "[variables('vmssSkuTier')]", - "capacity": 1 - }, - "zones": [ - "1", - "2" - ], - "properties": { - "additionalCapabilities": {}, - "automaticRepairsPolicy": {}, - "doNotRunExtensionsOnOverprovisionedVMs": true, - "overprovision": true, - "platformFaultDomainCount": 1, - "zoneBalance": true, - "scaleInPolicy": { - "rules": [ - "Default" - ] - }, - "singlePlacementGroup": false, - "upgradePolicy": { - "mode": "Automatic" - // "automaticOSUpgradePolicy": { - // "disableAutomaticRollback": false, - // "enableAutomaticOSUpgrade": true - // } - }, - "virtualMachineProfile": { - "priority": "Regular", - "osProfile": { - "adminUsername": "[variables('vmssAdminUsername')]", - "adminPassword": "[variables('vmssAdminPassword')]", - "computerNamePrefix": "[take(variables('vmssName'), 9)]" - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[concat(variables('vmssName'), '-nic')]", - "properties": { - "primary": true, - "enableAcceleratedNetworking": false, - "dnsSettings": {}, - "enableIPForwarding": false, - "ipConfigurations": [ - { - "name": "[concat(variables('vmssName'), '-ipConfig')]", - "properties": { - "primary": true, - "privateIPAddressVersion": "IPv4", - "subnet": { - "id": "[variables('subnetId')]" - }, - "loadBalancerBackendAddressPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat(variables('vmssName'), '-lb'), concat(variables('vmssName'), '-backendPool'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', concat(variables('vmssName'), '-lb'), concat(variables('vmssName'), '-natPool'))]" - } - ] - } - } - ] - } - } - ] - }, - "storageProfile": { - "osDisk": { - "createOption": "FromImage", - "caching": "ReadWrite" - }, - "imageReference": { - "publisher": "MicrosoftWindowsServer", - "offer": "WindowsServer", - "sku": "2019-Datacenter", - "version": "latest" - } - }, - "extensionProfile": { - "extensions": [ - { - "type": "Microsoft.Compute/virtualMachines/extensions", - "name": "[concat(parameters('vmssName'),'-installGateway')]", - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.10", - "autoUpgradeMinorVersion": true, - "settings": { - "fileUris": [ - "[concat('https://', variables('storageAccountName'), '.blob.core.windows.net/', variables('storageAccountContainerName'), '/installPowerBiGateway.ps1')]" - ] - }, - "protectedSettings": { - "storageAccountName": "[variables('storageAccountName')]", - "storageAccountKey": "[variables('storageAccountKey')]", - "commandToExecute": "[concat('powershell.exe -ExecutionPolicy Unrestricted -File installPowerBiGateway.ps1 -GatewayName \"', variables('vmssName'), '\" -ApplicationId \"', variables('powerBiGatewayClientId'), '\" -ClientSecret \"', variables('powerBiGatewayClientSecret'), '\" -RecoveryKey \"', variables('powerBiGatewayRecoveryKey'), '\" -RegionKey \"', variables('location'), '\" -TenantId \"', variables('powerBiTenantId'), '\" -AdditionalGatewayAdminGroupId \"', variables('powerBiGatewayAdminGroupObjectId'),'\"')]" - } - } - } - ] - } - } - } - } - ] -} \ No newline at end of file diff --git a/infra/PowerBiGateway/installPowerBiGateway.ps1 b/infra/PowerBiGateway/installPowerBiGateway.ps1 deleted file mode 100644 index ed868bb..0000000 --- a/infra/PowerBiGateway/installPowerBiGateway.ps1 +++ /dev/null @@ -1,89 +0,0 @@ -# This sample helps automate the installation and configuration of the On-premises data gateway using available PowerShell cmdlets. -# This script helps with silent install of new gateway cluster with one gateway member only. The script also allows addition gateway -# admins. For information on each PowerShell script visit the help page for individual PowerSHell cmdlets. Before begining to install -# and register a gateway, for connecting to the gateway service, you would need to use the # Connect-DataGatewayServiceAccount. More -# information documented in the help page of that cmdlet. - -Param( - # Name of the Power BI Gateway - [Parameter(Mandatory = $true)] - [String] - $GatewayName, - - # Application Id for login - [Parameter()] - [String] - $TenantId, - - # Application Id for login - [Parameter()] - [String] - $ApplicationId, - - # Application Id for login - [Parameter()] - [String] - $ClientSecret, - - # Recovery Key of the Power BI Gateway - [Parameter(Mandatory = $true)] - [String] - $RecoveryKey, - - # Region of the Power BI Gateway - [Parameter(Mandatory = $true)] - [String] - $RegionKey, - - [Parameter()] - [Guid] - $AdditionalGatewayAdminGroupId -) -$ErrorActionPreference = "stop" - -# Print pwsh version -$psVersion = (Get-Host).Version -Write-Host $psVersion - -# Convert input parameters -$clientSecretSecureString = $ClientSecret | ConvertTo-SecureString -AsPlainText -Force -$recoveryKeySecureString = $RecoveryKey | ConvertTo-SecureString -AsPlainText -Force - -# Install DataGateway module -Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted -Install-Module -Name DataGateway - -# Connect to the Data Gateway service -$connectDataGatewayServiceAccountArguments = @{ - ApplicationId = $ApplicationId; - ClientSecret = $clientSecretSecureString; - Environment = "Public"; - Tenant = $TenantId; -} -Connect-DataGatewayServiceAccount @connectDataGatewayServiceAccountArguments - -# Thrown an error if not logged in -Get-DataGatewayAccessToken | Out-Null - -# Run the gateway installer on the local computer -Install-DataGateway -AcceptConditions - -# Create a gateway cluster and save the cluster ID -$addDataGatewayClusterArguments = @{ - RecoveryKey = $recoveryKeySecureString; - GatewayName = $GatewayName; - RegionKey = "northeurope"; - OverwriteExistingGateway = $true; -} -$newGatewayClusterId = (Add-DataGatewayCluster @addDataGatewayClusterArguments).GatewayObjectId - -# Optionally add admin to new gateway -if ($null -ne $AdminPrincipalObjectIdForNewGateway) { - $addDataGatewayClusterUserArguments = @{ - GatewayClusterId = $newGatewayClusterId; - PrincipalObjectId = $AdditionalGatewayAdminGroupId; - Role = "Admin"; - AllowedDataSourceTypes = $null; - } - Add-DataGatewayClusterUser @addDataGatewayClusterUserArguments -} diff --git a/infra/PowerBiGateway/params.powerBiGateway.json b/infra/PowerBiGateway/params.powerBiGateway.json deleted file mode 100644 index 057391b..0000000 --- a/infra/PowerBiGateway/params.powerBiGateway.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "location": { - "value": "northeurope" - }, - "vmssName": { - "value": "dhPBIGatewaytest" - }, - "vmssSkuTier": { - "value": "Standard" - }, - "vmssSkuName": { - "value": "Standard_A1_v2" - }, - "vmssAdminUsername": { - "value": "vmssMainUser" - }, - "vmssAdminPassword": { - "value": "!" - }, - "storageAccountContainerId": { - "value": "/subscriptions/feab2d15-66b4-438b-accf-51f889b30ec3/resourceGroups/dh-mgmt/providers/Microsoft.Storage/storageAccounts/datahubstorage001/blobServices/default/containers/scripts" - }, - "storageAccountKey": { - "reference": { - "keyVault": { - "id": "/subscriptions/feab2d15-66b4-438b-accf-51f889b30ec3/resourceGroups/dh-mgmt/providers/Microsoft.KeyVault/vaults/dh-keyvault001" - }, - "secretName": "storageAccountKey" - } - }, - "subnetId": { - "value": "/subscriptions/feab2d15-66b4-438b-accf-51f889b30ec3/resourceGroups/dh-network/providers/Microsoft.Network/virtualNetworks/dh-vnet/subnets/dh-subnet" - }, - "powerBiTenantId": { - "value": "" - }, - "powerBiGatewayClientId": { - "value": "" - }, - "powerBiGatewayClientSecret": { - "value": "" - }, - "powerBiGatewayRecoveryKey": { - "value": "" - }, - "powerBiGatewayAdminGroupObjectId": { - "value": "" - } - } -} \ No newline at end of file