简体   繁体   中英

How to add the existing virtual network into Azure SQL database using Azure ARM Template?

Currently I am working on to deploy the Azure SQL Database into exisiting virtual network using Azure ARM templates.

azuredeploy.json

    {
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "sqlServerName": {
      "type": "string",
      "metadata": {
        "description": "The SQL Servername."
      }
    },
    "databaseName": {
      "type": "string",
      "metadata": {
        "description": "The SQL Database."
      }
    },
    "collation": {
      "type": "string",
      "metadata": {
        "description": "The Collation of SQL Database and SQL Server."
      }
    },
    "edition": {
      "type": "string",
      "metadata": {
        "description": "The edition of SQL Database."
      }
    },
    "maxSizeBytes": {
      "type": "string",
      "metadata": {
        "description": "The maxsize of SQL Database."
      }
    },
    "sqlAdministratorLogin": {
      "type": "string",
      "metadata": {
        "description": "The administrator username of the SQL Server."
      }
    },
    "sqlAdministratorLoginPassword": {
      "type": "securestring",
      "metadata": {
        "description": "The administrator password of the SQL Server."
      }
    },
    "transparentDataEncryption": {
      "type": "string",
      "allowedValues": [
        "Enabled",
        "Disabled"
      ],
      "defaultValue": "Enabled",
      "metadata": {
        "description": "Enable or disable Transparent Data Encryption (TDE) for the database."
      }
    },
    "zoneRedundant": {
      "type": "bool",
      "defaultValue": false
    },
    "startIpAddress": {
      "type": "string",
      "metadata": {
        "description": "The start IpAddress"
      }
    },
    "endIpAddress": {
      "type": "string",
      "metadata": {
        "description": "The end IpAddress."
      }
    },
    "sampleName": {
      "type": "string",
      "metadata": {
        "description": "The sampleName."
      }
    },
    "existingVnetName": {
      "type": "string",
      "metadata": {
        "description": "The name of the existing virtual netwok."
      }
    },
    "vnetRuleName": {
      "type": "string",
      "metadata": {
        "description": "The name of the virtual netwrok rule."
      }
    },
    "existingVirtualNetworkResourceGroup": {
      "type": "string",
      "metadata": {
        "description": "The name of the exisitng VNET resource group."
      }
    },
    "subscriptionID": {
      "type": "string",
      "metadata": {
        "description": "The ID of the exisitng azure subscription."
      }
    }
  },
  "variables": {
    "sqlServerName": "[parameters('sqlServerName')]",
    "databaseName": "[parameters('databaseName')]",
    "databaseEdition": "[parameters('edition')]",
    "databaseCollation": "[parameters('collation')]",
    "databaseServiceObjectiveName": "Basic",
    "vnetID": "[concat('/subscriptions/', parameters('subscriptionID'), '/resourceGroups/',parameters('existingVirtualNetworkResourceGroup'),'/','Microsoft.Network/virtualNetworks', parameters('existingVnetName'))]",
    //"vnetID": "[resourceId(parameters('resourceGroupName'), 'Microsoft.Network/virtualNetworks', parameters('existingVnetName'))]"
  },
  "resources": [
    {
      "name": "[variables('sqlServerName')]",
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2014-04-01-preview",
      "location": "[resourceGroup().location]",
      "tags": {
        "displayName": "SqlServer"
      },
      "properties": {
        "administratorLogin": "[parameters('sqlAdministratorLogin')]",
        "administratorLoginPassword": "[parameters('sqlAdministratorLoginPassword')]",
        "version": "12.0"
      },
      "resources": [
        {
          "name": "[variables('databaseName')]",
          "type": "databases",
          "apiVersion": "2015-01-01",
          "location": "[resourceGroup().location]",
          "tags": {
            "displayName": "Database"
          },
          "properties": {
            "edition": "[variables('databaseEdition')]",
            "collation": "[variables('databaseCollation')]",
            "requestedServiceObjectiveName": "[variables('databaseServiceObjectiveName')]",
            "maxSizeBytes": "[parameters('maxSizeBytes')]",
            "sampleName": "[parameters('sampleName')]",
            "zoneRedundant": "[parameters('zoneRedundant')]"
          },
          "dependsOn": [
            "[variables('sqlServerName')]"
          ],
          "resources": [
            {
              "comments": "Transparent Data Encryption",
              "name": "current",
              "type": "transparentDataEncryption",
              "apiVersion": "2014-04-01-preview",
              "properties": {
                "status": "[parameters('transparentDataEncryption')]"
              },
              "dependsOn": [
                "[variables('databaseName')]"
              ]
            }
          ]
        },
        {
          "name": "AllowAllMicrosoftAzureIps",
          "type": "firewallrules",
          "apiVersion": "2014-04-01",
          "location": "[resourceGroup().location]",
          "properties": {
            "startIpAddress": "[parameters('startIpAddress')]",
            "endIpAddress": "[parameters('endIpAddress')]"
          },
          "dependsOn": [
            "[variables('sqlServerName')]"
          ]
        },
        {
          "comments": "Adding existing VNET to the SQL Server",
          "type": "Microsoft.Sql/servers/virtualNetworkRules",
          "name": "[concat(parameters('sqlServerName'), '/', parameters('vnetRuleName'))]",
          "apiVersion": "2015-05-01-preview",
          "scale": null,
          "properties": {
            "virtualNetworkSubnetId": "[variables('vnetID')]"
          },
          "dependsOn": [
            "[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]"
          ]
        }
      ]
    }
  ],
  "outputs": {
    "sqlServerFqdn": {
      "type": "string",
      "value": "[reference(concat('Microsoft.Sql/servers/', variables('sqlServerName'))).fullyQualifiedDomainName]"
    },
    "databaseName": {
      "type": "string",
      "value": "[variables('databaseName')]"
    }
  }
}

Before I added this Microsoft.Sql/servers/virtualNetworkRules section into azuredeploy.json file at that time I am able to create the new SQL database into azure.

  { "comments": "Adding existing VNET to the SQL Server", "type": "Microsoft.Sql/servers/virtualNetworkRules", "name": "[concat(parameters('sqlServerName'), '/', parameters('vnetRuleName'))]", "apiVersion": "2015-05-01-preview", "scale": null, "properties": { "virtualNetworkSubnetId": "[variables('vnetID')]" }, "dependsOn": [ "[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]" ] } 

But whenever I added this Microsoft.Sql/servers/virtualNetworkRules section into azuredeploy.json file at that time I am not able to create database into existing virtual network and also it doesn't give any response.

Can anyone please tell me where I did the mistake in the above azuredeploy.json file?

Finally I resolved the above issue by replacing this section of code with Microsoft.Sql/servers/virtualNetworkRules the below lines of code:

 {
      "comments": "Adding existing VNET to the SQL Server",
      "type": "Microsoft.Sql/servers/virtualNetworkRules",
      "name": "[concat(parameters('sqlServerName'), '/', parameters('vnetRuleName'))]",
      "apiVersion": "2015-05-01-preview",
      "scale": null,
      "properties": {
        "virtualNetworkSubnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('existingVnetName'), parameters('subnets_default_name'))]",
        "ignoreMissingVnetServiceEndpoint": "[parameters('ignoreMissingVnetServiceEndpoint')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]"           
      ]
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM