Azure SQL Server VNet Integrated using Bicep
Posted in Uncategorized
I have a terrible memory so this blog post is mainly to remind me how to VNet Integrate Azure SQL.
The code below is creating an Azure SQL Server and VNet integrating it – the VirtualNetworkRule is the key part and the following is how to go about it.
I use this existing Bicep repo for all of the Bicep that I write – https://github.com/Azure/ResourceModules/
@description('Deploy an Azure SQL Server')
module createAzureSQL 'modules/azuresql_modules/deploy.bicep' = if (deployAzureSQL) {
scope: resourceGroup(dataTierRg)
name: azureSQLServerName
params: {
name: azureSQLServerName
location: sqllocation
administratorLogin: azureSQLServerAdminLogin
administratorLoginPassword: azureSQLAdminPassword
tags: tags
virtualNetworkRules: [
{
name: 'vnet-rule-${azureSQLServerName}'
serverName: azureSQLServerName
ignoreMissingVnetServiceEndpoint: false
virtualNetworkSubnetId: '/subscriptions/${subscriptionID}/resourceGroups/${appTierRg}/providers/Microsoft.Network/virtualNetworks/${appVNetName}/subnets/dataSubNet'
}
]
}
dependsOn: [
newRG
createAppVNet
]
}
To get this to work you should also add a service endpoint into your subnet like the following:-
@description('An array of the subnets for the Application VNet.')
var appSubnets = {
shared: [
{
name: 'appSubnet'
addressPrefix: '172.16.0.0/24'
delegations: [
{
name: 'delegation'
properties: {
serviceName: 'Microsoft.Web/serverfarms'
}
}
]
}
{
name: 'dataSubNet'
addressPrefix: '172.16.1.0/24'
serviceEndpoints: [
{
service: 'Microsoft.Sql'
}
]
}
]
}
Let me know if you found this example useful.
[…] Azure SQL Server VNet Integrated using Bicep (Gregor Suttie) […]
You should never write a resourceID using this kind of string concatenation:
virtualNetworkSubnetId: ‘/subscriptions/${subscriptionID}/resourceGroups/${appTierRg}/providers/Microsoft.Network/virtualNetworks/${appVNetName}/subnets/dataSubNet’
Just use native Bicep resources for that (using existing resources or ARM function resourceID())
Yeah was being lazy there good point!