Szybki start: tworzenie wystąpienia zarządzanego Azure SQL przy użyciu Bicep
Ten Szybki start koncentruje się na procesie wdrażania pliku Bicep w celu utworzenia Azure SQL Managed Instance i sieci wirtualnej vNet. usługi Azure SQL Managed Instance to inteligentna, w pełni zarządzana, skalowalna baza danych w chmurze z niemal 100% z aparatem bazy danych programu SQL Server.
Bicep jest językiem specyficznym dla domeny (DSL), który używa składni deklaratywnej do wdrażania zasobów platformy Azure. Zapewnia zwięzłą składnię, bezpieczeństwo typów i obsługę wielokrotnego użycia kodu. Bicep oferuje najlepsze środowisko tworzenia rozwiązań infrastruktury jako kodu na platformie Azure.
Warunki wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji Azure, utwórz bezpłatne konto
- W ogólnym przypadku użytkownik musi mieć rolę współautora usługi SQL Managed Instance przypisaną w zakresie subskrypcji.
- Jeśli dokonujesz aprowizacji w podsieci, która jest już delegowana do usługi Azure SQL Managed Instance, użytkownik potrzebuje tylko uprawnień "Microsoft.Sql/managedInstances/write", przypisanych w zakresie subskrypcji.
Przejrzyj plik Bicep
Plik Bicep używany w tym przewodniku szybkiego startu pochodzi z szablonów szybkiego startu 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
}
}
Te zasoby są zdefiniowane w pliku Bicep:
- Microsoft.Network/networkSecurityGroups
- Microsoft.Network/routeTables
- Microsoft.Network/virtualNetworks
- Microsoft.Sql/managedinstances
Wdróż plik Bicep
Zapisz plik Bicep jako main.bicep na komputerze lokalnym.
Wdróż plik Bicep przy użyciu interfejsu wiersza polecenia platformy Azure lub programu 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>
Notatka
Zastąp <nazwa-wystąpienia> nazwą zarządzanej instancji. Zastąp <> admin-login nazwą użytkownika administratora. Zostaniesz poproszony o wprowadzenie administratorLoginPassword.
Po zakończeniu wdrażania powinien zostać wyświetlony komunikat informujący o pomyślnym wdrożeniu.
Przeglądanie wdrożonych zasobów
Użyj witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby wyświetlić listę wdrożonych zasobów w grupie zasobów.
az resource list --resource-group exampleRG
Czyszczenie zasobów
Gdy grupa zasobów i jej zasoby nie będą już potrzebne, użyj witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
az group delete --name exampleRG