diff --git a/samples/manage/synapse-analytics/azuredeploy.json b/samples/manage/synapse-analytics/azuredeploy.json new file mode 100644 index 0000000000..869ce60b07 --- /dev/null +++ b/samples/manage/synapse-analytics/azuredeploy.json @@ -0,0 +1,59 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "String" + }, + "sqlAdministratorLogin": { + "type": "String" + }, + "sqlAdministratorPassword": { + "type": "SecureString" + }, + "tagValues": { + "defaultValue": {"Created with":"Synapse Azure Resource Manager deploment template"}, + "type": "Object" + } + }, + "resources": [ + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-05-01", + "name": "storage", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '/microsoft/sql-server-samples/master/samples/manage/synapse-analytics/storage/azuredeploy.json')]", + "contentVersion": "1.0.0.0" + }, + "parameters":{ + "storageAccount":{"value": "[parameters('name')]"} + } + } + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2018-05-01", + "name": "workspace", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[uri(deployment().properties.templateLink.uri, '/microsoft/sql-server-samples/master/samples/manage/synapse-analytics/workspace/azuredeploy.json')]", + "contentVersion": "1.0.0.0" + }, + "parameters":{ + "name":{"value": "[parameters('name')]"}, + "sqlAdministratorLogin":{"value": "[parameters('sqlAdministratorLogin')]"}, + "sqlAdministratorPassword":{"value": "[parameters('sqlAdministratorPassword')]"}, + "defaultDataLakeStorageAccountName":{"value": "[parameters('name')]"}, + "tagValues":{"value": "[parameters('tagValues')]"} + } + }, + "dependsOn": [ + "storage" + ] + } + ], + "outputs": {} +} \ No newline at end of file diff --git a/samples/manage/synapse-analytics/readme.md b/samples/manage/synapse-analytics/readme.md new file mode 100644 index 0000000000..1be32bf732 --- /dev/null +++ b/samples/manage/synapse-analytics/readme.md @@ -0,0 +1,12 @@ +# Deploy Azure Synapse workspace + +This template deploys Azure Synapse workspace with underlying Data Lake Storage. + + + + + + + + +`Tags: Azure, Synapse, Analytics` \ No newline at end of file diff --git a/samples/manage/synapse-analytics/storage/azuredeploy.json b/samples/manage/synapse-analytics/storage/azuredeploy.json new file mode 100644 index 0000000000..e1a49f2adf --- /dev/null +++ b/samples/manage/synapse-analytics/storage/azuredeploy.json @@ -0,0 +1,77 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "storageAccount": { + "type": "string" + } + }, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2019-04-01", + "name": "[parameters('storageAccount')]", + "location": "[resourceGroup().location]", + "tags": { + "Type": "Synapse Data Lake Storage", + "Created with":"Synapse Azure Resource Manager deploment template" + }, + "sku": { + "name": "Standard_RAGRS", + "tier": "Standard" + }, + "kind": "StorageV2", + "properties": { + "isHnsEnabled": true, + "networkAcls": { + "bypass": "AzureServices", + "virtualNetworkRules": [], + "ipRules": [], + "defaultAction": "Allow" + }, + "supportsHttpsTrafficOnly": true, + "encryption": { + "services": { + "file": { + "enabled": true + }, + "blob": { + "enabled": true + } + }, + "keySource": "Microsoft.Storage" + }, + "accessTier": "Hot" + } + }, + { + "type": "Microsoft.Storage/storageAccounts/blobServices", + "apiVersion": "2019-04-01", + "name": "[concat(parameters('storageAccount'), '/default')]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccount'))]" + ], + "properties": { + "cors": { + "corsRules": [] + }, + "deleteRetentionPolicy": { + "enabled": false + } + } + }, + { + "type": "Microsoft.Storage/storageAccounts/blobServices/containers", + "apiVersion": "2019-04-01", + "name": "[concat(parameters('storageAccount'), '/default/workspace')]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccount'), 'default')]", + "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccount'))]" + ], + "properties": { + "publicAccess": "None" + } + } + ] +} \ No newline at end of file diff --git a/samples/manage/synapse-analytics/storage/azuredeploy.parameters.json b/samples/manage/synapse-analytics/storage/azuredeploy.parameters.json new file mode 100644 index 0000000000..b34f2f426b --- /dev/null +++ b/samples/manage/synapse-analytics/storage/azuredeploy.parameters.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "clusterStorageAccountName": { + "value": "GEN-UNIQUE" + } + } +} \ No newline at end of file diff --git a/samples/manage/synapse-analytics/storage/metadata.json b/samples/manage/synapse-analytics/storage/metadata.json new file mode 100644 index 0000000000..c90fdbbbde --- /dev/null +++ b/samples/manage/synapse-analytics/storage/metadata.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://aka.ms/azure-quickstart-templates-metadata-schema#", + "type": "QuickStart", + "itemDisplayName": "Deploy Azure Storage account for Synapse Workspace", + "description": "This template allows you to deploy Azure Storage account for Synapse Workspace.", + "summary": "Deploy Azure Storage account for Synapse Workspace.", + "githubUsername": "jocapc", + "dateUpdated": "2019-10-10" +} + diff --git a/samples/manage/synapse-analytics/storage/readme.md b/samples/manage/synapse-analytics/storage/readme.md new file mode 100644 index 0000000000..fe5cb1226d --- /dev/null +++ b/samples/manage/synapse-analytics/storage/readme.md @@ -0,0 +1,15 @@ +# Deploy Azure Storage account for Synapse workspace + +This template deploys configured Azure Storage account for Synapse workspace. + + + + + + + + +When you create storage, use [this link](https://portal.azure.com/?feature.customportal=false&feature.canmodifystamps=true&SqlAzureExtension=synapseµsoft_azure_synapse_assettypeoptions=%7B%22SynapseWorkspace%22%3A%7B%22options%22%3A%22%22%7D%2C%22SparkPool%22%3A%7B%22options%22%3A%22hideassettype%22%7D%7Dµsoft_azure_marketplace_ItemHideKey=SynapseExtensionPreview#blade/Microsoft_Azure_Marketplace/MarketplaceOffersBlade/selectedMenuItemId/home/searchQuery/Azure%2BSynapse%2BAnalytics%2B(preview) +) to create Azure Synapse Analytics workspace **(not former DataWarehouse)** and assign the Azure Storage account created with this template. + +`Tags: Azure, Synapse, Storage` \ No newline at end of file diff --git a/samples/manage/synapse-analytics/workspace/azuredeploy.json b/samples/manage/synapse-analytics/workspace/azuredeploy.json new file mode 100644 index 0000000000..5b8a80782e --- /dev/null +++ b/samples/manage/synapse-analytics/workspace/azuredeploy.json @@ -0,0 +1,128 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "type": "String" + }, + "defaultDataLakeStorageAccountName": { + "type": "String", + "metadata": { + "description": "Data Lake Storage account that you will use for Synapse Workspace." + } + }, + "defaultDataLakeStorageFilesystemName": { + "defaultValue": "workspace", + "type": "String", + "metadata": { + "description": "Container in Data Lake Storage account that you will use for Synapse Workspace." + } + }, + "sqlAdministratorLogin": { + "type": "String" + }, + "sqlAdministratorPassword": { + "type": "SecureString" + }, + "tagValues": { + "defaultValue": {"Created with":"Synapse Azure Resource Manager deploment template"}, + "type": "Object" + }, + "storageSubscriptionID": { + "defaultValue": "[subscription().subscriptionId]", + "type": "String", + "metadata": { + "description": "Do not change this value if Data Lake Storage is placed in the same subscription as Synapse Workspace(recommended)." + } + }, + "storageResourceGroupName": { + "defaultValue": "[resourceGroup().name]", + "type": "String", + "metadata": { + "description": "Do not change this value if Data Lake Storage is placed in the same resource group as Synapse Workspace." + } + }, + "storageLocation": { + "defaultValue": "[resourceGroup().location]", + "type": "String", + "metadata": { + "description": "Do not change this value if Data Lake Storage is placed in the same region as Synapse Workspace(recommended)." + } + } + }, + "variables": { + "storageBlobDataContributorRoleID": "ba92f5b4-2d11-453d-a403-e96b0029c9fe", + "defaultDataLakeStorageAccountUrl": "[concat('https://', parameters('defaultDataLakeStorageAccountName'), '.dfs.core.windows.net')]" + }, + "resources": [ + { + "type": "Microsoft.Synapse/workspaces", + "apiVersion": "2019-06-01-preview", + "name": "[parameters('name')]", + "location": "[resourceGroup().location]", + "tags": "[parameters('tagValues')]", + "identity": { + "type": "SystemAssigned" + }, + "properties": { + "defaultDataLakeStorage": { + "accountUrl": "[variables('defaultDataLakeStorageAccountUrl')]", + "filesystem": "[parameters('defaultDataLakeStorageFilesystemName')]" + }, + "virtualNetworkProfile": { + "computeSubnetId": "" + }, + "sqlAdministratorLogin": "[parameters('sqlAdministratorLogin')]", + "sqlAdministratorLoginPassword": "[parameters('sqlAdministratorPassword')]" + }, + "resources": [ + { + "type": "firewallrules", + "apiVersion": "2019-06-01-preview", + "name": "allowAll", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Synapse/workspaces/', parameters('name'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "255.255.255.255" + } + } + ] + }, + { + "type": "Microsoft.Resources/deployments", + "apiVersion": "2019-05-01", + "name": "storageRoleDeploymentResource", + "dependsOn": [ + "[concat('Microsoft.Synapse/workspaces/', parameters('name'))]" + ], + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": {}, + "variables": {}, + "resources": [ + { + "type": "Microsoft.Storage/storageAccounts/blobServices/containers/providers/roleAssignments", + "apiVersion": "2018-09-01-preview", + "name": "[concat(parameters('defaultDataLakeStorageAccountName'), '/default/', parameters('defaultDataLakeStorageFilesystemName'), '/Microsoft.Authorization/', guid(concat(resourceGroup().id, '/', variables('storageBlobDataContributorRoleID'), '/', parameters('name'))))]", + "location": "[parameters('storageLocation')]", + "properties": { + "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', variables('storageBlobDataContributorRoleID'))]", + "principalId": "[reference(concat('Microsoft.Synapse/workspaces/', parameters('name')), '2019-06-01-preview', 'Full').identity.principalId]", + "principalType": "ServicePrincipal" + } + } + ] + } + }, + "subscriptionId": "[parameters('storageSubscriptionID')]", + "resourceGroup": "[parameters('storageResourceGroupName')]" + } + ], + "outputs": {} +} \ No newline at end of file diff --git a/samples/manage/synapse-analytics/workspace/azuredeploy.parameters.json b/samples/manage/synapse-analytics/workspace/azuredeploy.parameters.json new file mode 100644 index 0000000000..f8629371f4 --- /dev/null +++ b/samples/manage/synapse-analytics/workspace/azuredeploy.parameters.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "name": { + "value": "" + }, + "location": { + "value": "" + }, + "defaultDataLakeStorageAccountName": { + "value": "" + }, + "defaultDataLakeStorageFilesystemName": { + "value": "" + }, + "sqlAdministratorLogin": { + "value": "" + }, + "setWorkspaceIdentityRbacOnFilesystem": { + "value": true + }, + "allowAllConnections": { + "value": true + }, + "poolSubnetId": { + "value": "" + }, + "tagValues": { + "value": {} + }, + "storageSubscriptionID": { + "value": "9932f414-50cd-474d-8a1a-bf0649225d73" + }, + "storageResourceGroupName": { + "value": "" + }, + "storageLocation": { + "value": "" + } + } +} \ No newline at end of file diff --git a/samples/manage/synapse-analytics/workspace/metadata.json b/samples/manage/synapse-analytics/workspace/metadata.json new file mode 100644 index 0000000000..28521f7e38 --- /dev/null +++ b/samples/manage/synapse-analytics/workspace/metadata.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://aka.ms/azure-quickstart-templates-metadata-schema#", + "type": "QuickStart", + "itemDisplayName": "Deploy Azure Synapse Workspace", + "description": "This template allows you to deploy Azure Synapse Workspace.", + "summary": "Deploy Azure Synapse Workspace.", + "githubUsername": "jocapc", + "dateUpdated": "2019-10-10" +} + diff --git a/samples/manage/synapse-analytics/workspace/readme.md b/samples/manage/synapse-analytics/workspace/readme.md new file mode 100644 index 0000000000..3e5780da25 --- /dev/null +++ b/samples/manage/synapse-analytics/workspace/readme.md @@ -0,0 +1,12 @@ +# Deploy Azure Synapse workspace + +This template deploys Azure Synapse workspace. + + + + + + + + +`Tags: Azure, Synapse, Analytics` \ No newline at end of file