Démarrage rapide : Créer une instance managée Azure SQL à l’aide de Bicep
Ce guide de démarrage rapide se concentre sur le processus de déploiement d’un fichier Bicep pour créer une instance managée Azure SQL et un réseau virtuel. Azure SQL Managed Instance est une base de données en nuage intelligente, entièrement gérée et évolutive, dont les fonctionnalités sont presque identiques à celles du moteur de base de données SQL Server.
Bicep est un langage spécifique au domaine (DSL) qui utilise la syntaxe déclarative pour déployer des ressources Azure. Il fournit une syntaxe concise, une sécurité de type fiable et une prise en charge de la réutilisation du code. Bicep offre la meilleure expérience de création pour vos solutions d’infrastructure en tant que code dans Azure.
Conditions préalables
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créer un compte gratuit
- Dans le cas général, votre utilisateur doit avoir le rôle contributeur SQL Managed Instance affecté à l’étendue de l’abonnement.
- Si l’approvisionnement dans un sous-réseau déjà délégué à Azure SQL Managed Instance, votre utilisateur a uniquement besoin de l’autorisation Microsoft.Sql/managedInstances/write attribuée au niveau de l’étendue de l’abonnement.
Examiner le fichier Bicep
Le fichier Bicep utilisé dans ce guide de démarrage rapide provient de modèles de démarrage rapide Azure.
@description('Enter managed instance name.')
param managedInstanceName string
@description('Enter user name.')
param administratorLogin string
@description('Enter password.')
@secure()
param administratorLoginPassword string
@description('Enter location. If you leave this field blank resource group location would be used.')
param location string = resourceGroup().location
@description('Enter virtual network name. If you leave this field blank name will be created by the template.')
param virtualNetworkName string = 'SQLMI-VNET'
@description('Enter virtual network address prefix.')
param addressPrefix string = '10.0.0.0/16'
@description('Enter subnet name.')
param subnetName string = 'ManagedInstance'
@description('Enter subnet address prefix.')
param subnetPrefix string = '10.0.0.0/24'
@description('Enter sku name.')
@allowed([
'GP_Gen5'
'BC_Gen5'
])
param skuName string = 'GP_Gen5'
@description('Enter number of vCores.')
@allowed([
4
8
16
24
32
40
64
80
])
param vCores int = 16
@description('Enter storage size.')
@minValue(32)
@maxValue(8192)
param storageSizeInGB int = 256
@description('Enter license type.')
@allowed([
'BasePrice'
'LicenseIncluded'
])
param licenseType string = 'LicenseIncluded'
var networkSecurityGroupName = 'SQLMI-${managedInstanceName}-NSG'
var routeTableName = 'SQLMI-${managedInstanceName}-Route-Table'
resource networkSecurityGroup 'Microsoft.Network/networkSecurityGroups@2021-08-01' = {
name: networkSecurityGroupName
location: location
properties: {
securityRules: [
{
name: 'allow_tds_inbound'
properties: {
description: 'Allow access to data'
protocol: 'Tcp'
sourcePortRange: '*'
destinationPortRange: '1433'
sourceAddressPrefix: 'VirtualNetwork'
destinationAddressPrefix: '*'
access: 'Allow'
priority: 1000
direction: 'Inbound'
}
}
{
name: 'allow_redirect_inbound'
properties: {
description: 'Allow inbound redirect traffic to Managed Instance inside the virtual network'
protocol: 'Tcp'
sourcePortRange: '*'
destinationPortRange: '11000-11999'
sourceAddressPrefix: 'VirtualNetwork'
destinationAddressPrefix: '*'
access: 'Allow'
priority: 1100
direction: 'Inbound'
}
}
{
name: 'deny_all_inbound'
properties: {
description: 'Deny all other inbound traffic'
protocol: '*'
sourcePortRange: '*'
destinationPortRange: '*'
sourceAddressPrefix: '*'
destinationAddressPrefix: '*'
access: 'Deny'
priority: 4096
direction: 'Inbound'
}
}
{
name: 'deny_all_outbound'
properties: {
description: 'Deny all other outbound traffic'
protocol: '*'
sourcePortRange: '*'
destinationPortRange: '*'
sourceAddressPrefix: '*'
destinationAddressPrefix: '*'
access: 'Deny'
priority: 4096
direction: 'Outbound'
}
}
]
}
}
resource routeTable 'Microsoft.Network/routeTables@2021-08-01' = {
name: routeTableName
location: location
properties: {
disableBgpRoutePropagation: false
}
}
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2021-08-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
addressPrefix
]
}
subnets: [
{
name: subnetName
properties: {
addressPrefix: subnetPrefix
routeTable: {
id: routeTable.id
}
networkSecurityGroup: {
id: networkSecurityGroup.id
}
delegations: [
{
name: 'managedInstanceDelegation'
properties: {
serviceName: 'Microsoft.Sql/managedInstances'
}
}
]
}
}
]
}
}
resource managedInstance 'Microsoft.Sql/managedInstances@2021-11-01-preview' = {
name: managedInstanceName
location: location
sku: {
name: skuName
}
identity: {
type: 'SystemAssigned'
}
dependsOn: [
virtualNetwork
]
properties: {
administratorLogin: administratorLogin
administratorLoginPassword: administratorLoginPassword
subnetId: resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetworkName, subnetName)
storageSizeInGB: storageSizeInGB
vCores: vCores
licenseType: licenseType
}
}
Ces ressources sont définies dans le fichier Bicep :
- Microsoft.Network/networkSecurityGroups
- Microsoft.Network/routeTables
- Microsoft.Network/virtualNetworks
- Microsoft.Sql/managedinstances
Déployer le fichier Bicep
Enregistrez le fichier Bicep en tant que main.bicep sur votre ordinateur local.
Déployez le fichier Bicep à l’aide d’Azure CLI ou d’Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters managedInstanceName=<instance-name> administratorLogin=<admin-login>
Remarque
Remplacez <nom d’instance> par le nom de l’instance managée. Remplacez <connexion administrateur> par le nom d’utilisateur administrateur. Vous serez invité à saisir le mot de passe de connexion administrateur .
Une fois le déploiement terminé, vous devez voir un message indiquant que le déploiement a réussi.
Passer en revue les ressources déployées
Utilisez le portail Azure, Azure CLI ou Azure PowerShell pour répertorier les ressources déployées dans le groupe de ressources.
az resource list --resource-group exampleRG
Nettoyer les ressources
Quand vous n’en avez plus besoin, utilisez le portail Azure, Azure CLI ou Azure PowerShell pour supprimer le groupe de ressources et ses ressources.
az group delete --name exampleRG