Rövid útmutató: Azure Database for MySQL-kiszolgáló létrehozása a Bicep használatával

Az Azure Database for MySQL egy felügyelt szolgáltatás, amellyel magas rendelkezésre állású MySQL-adatbázisokat futtathat, kezelhet és skálázhat a felhőben. Ebben a rövid útmutatóban a Bicep használatával hoz létre egy Azure Database for MySQL-kiszolgálót virtuális hálózati integrációval. A kiszolgálót az Azure Portalon, az Azure CLI-ben vagy az Azure PowerShellben hozhatja létre.

A Bicep tartományspecifikus nyelv (DSL), amely deklaratív szintaxist használ az Azure-erőforrások üzembe helyezéséhez. Tömör szintaxist és megbízható típusbiztonságot kínál, valamint biztosítja a kódok újrafelhasználhatóságát. A Bicep a legjobb szerzői élményt nyújtja az Azure-beli infrastruktúra-kódmegoldásokhoz.

Előfeltételek

Aktív előfizetéssel rendelkező Azure-fiókra van szüksége. Hozzon létre egyet ingyen.

A Bicep-fájl áttekintése

A MySQL-kiszolgálóhoz való Azure-adatbázist számítási és tárolási erőforrások egy meghatározott készletével együtt fogja létrehozni. További információ: Azure Database for MySQL tarifacsomagok. A kiszolgálót egy Azure-erőforráscsoporton belül hozza létre.

Az ebben a rövid útmutatóban használt Bicep-fájl az Azure Gyorsindítási sablonokból származik.

@description('Server Name for Azure database for MySQL')
param serverName string

@description('Database administrator login name')
@minLength(1)
param administratorLogin string

@description('Database administrator password')
@minLength(8)
@secure()
param administratorLoginPassword string

@description('Azure database for MySQL compute capacity in vCores (2,4,8,16,32)')
param skuCapacity int = 2

@description('Azure database for MySQL sku name ')
param skuName string = 'GP_Gen5_2'

@description('Azure database for MySQL Sku Size ')
param SkuSizeMB int = 5120

@description('Azure database for MySQL pricing tier')
@allowed([
  'Basic'
  'GeneralPurpose'
  'MemoryOptimized'
])
param SkuTier string = 'GeneralPurpose'

@description('Azure database for MySQL sku family')
param skuFamily string = 'Gen5'

@description('MySQL version')
@allowed([
  '5.6'
  '5.7'
  '8.0'
])
param mysqlVersion string = '8.0'

@description('Location for all resources.')
param location string = resourceGroup().location

@description('MySQL Server backup retention days')
param backupRetentionDays int = 7

@description('Geo-Redundant Backup setting')
param geoRedundantBackup string = 'Disabled'

@description('Virtual Network Name')
param virtualNetworkName string = 'azure_mysql_vnet'

@description('Subnet Name')
param subnetName string = 'azure_mysql_subnet'

@description('Virtual Network RuleName')
param virtualNetworkRuleName string = 'AllowSubnet'

@description('Virtual Network Address Prefix')
param vnetAddressPrefix string = '10.0.0.0/16'

@description('Subnet Address Prefix')
param subnetPrefix string = '10.0.0.0/16'

var firewallrules = [
  {
    Name: 'rule1'
    StartIpAddress: '0.0.0.0'
    EndIpAddress: '255.255.255.255'
  }
  {
    Name: 'rule2'
    StartIpAddress: '0.0.0.0'
    EndIpAddress: '255.255.255.255'
  }
]

resource vnet 'Microsoft.Network/virtualNetworks@2023-09-01' = {
  name: virtualNetworkName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        vnetAddressPrefix
      ]
    }
  }
}

resource subnet 'Microsoft.Network/virtualNetworks/subnets@2023-09-01' = {
  parent: vnet
  name: subnetName
  properties: {
    addressPrefix: subnetPrefix
  }
}

resource mysqlDbServer 'Microsoft.DBforMySQL/servers@2017-12-01' = {
  name: serverName
  location: location
  sku: {
    name: skuName
    tier: SkuTier
    capacity: skuCapacity
    size: '${SkuSizeMB}'  //a string is expected here but a int for the storageProfile...
    family: skuFamily
  }
  properties: {
    createMode: 'Default'
    version: mysqlVersion
    administratorLogin: administratorLogin
    administratorLoginPassword: administratorLoginPassword
    storageProfile: {
      storageMB: SkuSizeMB
      backupRetentionDays: backupRetentionDays
      geoRedundantBackup: geoRedundantBackup
    }
    minimalTlsVersion: 'TLS1_2'
    sslEnforcement: 'Enabled'
  }

  resource virtualNetworkRule 'virtualNetworkRules@2017-12-01' = {
    name: virtualNetworkRuleName
    properties: {
      virtualNetworkSubnetId: subnet.id
      ignoreMissingVnetServiceEndpoint: true
    }
  }
}

@batchSize(1)
resource firewallRules 'Microsoft.DBforMySQL/servers/firewallRules@2017-12-01' = [for rule in firewallrules: {
  parent: mysqlDbServer
  name: rule.Name
  properties: {
    startIpAddress: rule.StartIpAddress
    endIpAddress: rule.EndIpAddress
  }
}]

output location string = location
output name string = mysqlDbServer.name
output resourceGroupName string = resourceGroup().name
output resourceId string = mysqlDbServer.id

A Bicep-fájl öt Azure-erőforrást határoz meg:

A Bicep-fájl üzembe helyezése

  1. Mentse a Bicep-fájlt main.bicep néven a helyi számítógépre.

  2. Telepítse a Bicep-fájlt az Azure CLI vagy az Azure PowerShell használatával.

    New-AzResourceGroup -Name exampleRG -Location eastus
    New-AzResourceGroupDeployment -ResourceGroupName exampleRG -TemplateFile ./main.bicep -serverName "<server-name>" -administratorLogin "<admin-login>"
    

    Feljegyzés

    Cserélje le <a kiszolgálónevet> az Azure Database for MySQL kiszolgálónevére. Cserélje le <a rendszergazdai bejelentkezést> az adatbázis-rendszergazda bejelentkezési nevére. A rendszer arra is kéri, hogy adja meg az administratorLoginPassword parancsot. A jelszó minimális hossza nyolc karakter.

    Amikor az üzembe helyezés befejeződött, egy üzenetnek kell megjelennie, amely jelzi, hogy az üzembe helyezés sikeres volt.

Üzembe helyezett erőforrások áttekintése

Az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával listázhatja az erőforráscsoportban üzembe helyezett erőforrásokat.

Get-AzResource -ResourceGroupName exampleRG

Az erőforrások eltávolítása

Ha már nincs rá szükség, az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával törölheti az erőforráscsoportot és annak erőforrásait.

Remove-AzResourceGroup -Name exampleRG

Következő lépés