Share via


Hızlı Başlangıç: Bicep kullanarak özel uç nokta oluşturma

Bu hızlı başlangıçta, özel uç nokta oluşturmak için Bicep'i kullanacaksınız.

Bicep, Azure kaynaklarını dağıtmak için bildirim temelli söz dizimi kullanan, etki alanına özgü bir dildir (DSL). Kısa sözdizimi, güvenilir tür güvenliği ve kod yeniden kullanımı için destek sağlar. Bicep, Azure'daki kod olarak altyapı çözümleriniz için en iyi yazma deneyimini sunar.

Ayrıca Azure portalını, Azure PowerShell'i, Azure CLI'yı veya Azure Resource Manager Şablonunu kullanarak da özel uç nokta oluşturabilirsiniz.

Diagram of resources created in private endpoint quickstart.

Önkoşullar

Etkin aboneliği olan bir Azure hesabına ihtiyacınız vardır. Henüz bir Azure hesabınız yoksa ücretsiz olarak bir hesap oluşturun.

Bicep dosyasını gözden geçirme

Bu Bicep dosyası, Azure SQL Veritabanı örneği için özel bir uç nokta oluşturur.

Bu hızlı başlangıcın kullandığı Bicep dosyası Azure Hızlı Başlangıç Şablonları'ndan alınmıştı.

@description('The administrator username of the SQL logical server')
param sqlAdministratorLogin string

@description('The administrator password of the SQL logical server.')
@secure()
param sqlAdministratorLoginPassword string

@description('Username for the Virtual Machine.')
param vmAdminUsername string

@description('Password for the Virtual Machine. The password must be at least 12 characters long and have lower case, upper characters, digit and a special character (Regex match)')
@secure()
param vmAdminPassword string

@description('The size of the VM')
param VmSize string = 'Standard_D2_v3'

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

var vnetName = 'myVirtualNetwork'
var vnetAddressPrefix = '10.0.0.0/16'
var subnet1Prefix = '10.0.0.0/24'
var subnet1Name = 'mySubnet'
var sqlServerName = 'sqlserver${uniqueString(resourceGroup().id)}'
var databaseName = '${sqlServerName}/sample-db'
var privateEndpointName = 'myPrivateEndpoint'
var privateDnsZoneName = 'privatelink${environment().suffixes.sqlServerHostname}'
var pvtEndpointDnsGroupName = '${privateEndpointName}/mydnsgroupname'
var vmName = take('myVm${uniqueString(resourceGroup().id)}', 15)
var publicIpAddressName = '${vmName}PublicIP'
var networkInterfaceName = '${vmName}NetInt'
var osDiskType = 'StandardSSD_LRS'

resource sqlServer 'Microsoft.Sql/servers@2021-11-01-preview' = {
  name: sqlServerName
  location: location
  tags: {
    displayName: sqlServerName
  }
  properties: {
    administratorLogin: sqlAdministratorLogin
    administratorLoginPassword: sqlAdministratorLoginPassword
    version: '12.0'
    publicNetworkAccess: 'Disabled'
  }
}

resource database 'Microsoft.Sql/servers/databases@2021-11-01-preview' = {
  name: databaseName
  location: location
  sku: {
    name: 'Basic'
    tier: 'Basic'
    capacity: 5
  }
  tags: {
    displayName: databaseName
  }
  properties: {
    collation: 'SQL_Latin1_General_CP1_CI_AS'
    maxSizeBytes: 104857600
    sampleName: 'AdventureWorksLT'
  }
  dependsOn: [
    sqlServer
  ]
}

resource vnet 'Microsoft.Network/virtualNetworks@2021-05-01' = {
  name: vnetName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        vnetAddressPrefix
      ]
    }
  }
}

resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-05-01' = {
  parent: vnet
  name: subnet1Name
  properties: {
    addressPrefix: subnet1Prefix
    privateEndpointNetworkPolicies: 'Disabled'
  }
}

resource privateEndpoint 'Microsoft.Network/privateEndpoints@2021-05-01' = {
  name: privateEndpointName
  location: location
  properties: {
    subnet: {
      id: subnet.id
    }
    privateLinkServiceConnections: [
      {
        name: privateEndpointName
        properties: {
          privateLinkServiceId: sqlServer.id
          groupIds: [
            'sqlServer'
          ]
        }
      }
    ]
  }
  dependsOn: [
    vnet
  ]
}

resource privateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = {
  name: privateDnsZoneName
  location: 'global'
  properties: {}
  dependsOn: [
    vnet
  ]
}

resource privateDnsZoneLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = {
  parent: privateDnsZone
  name: '${privateDnsZoneName}-link'
  location: 'global'
  properties: {
    registrationEnabled: false
    virtualNetwork: {
      id: vnet.id
    }
  }
}

resource pvtEndpointDnsGroup 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2021-05-01' = {
  name: pvtEndpointDnsGroupName
  properties: {
    privateDnsZoneConfigs: [
      {
        name: 'config1'
        properties: {
          privateDnsZoneId: privateDnsZone.id
        }
      }
    ]
  }
  dependsOn: [
    privateEndpoint
  ]
}

resource publicIpAddress 'Microsoft.Network/publicIPAddresses@2021-05-01' = {
  name: publicIpAddressName
  location: location
  tags: {
    displayName: publicIpAddressName
  }
  properties: {
    publicIPAllocationMethod: 'Dynamic'
  }
}

resource networkInterface 'Microsoft.Network/networkInterfaces@2021-05-01' = {
  name: networkInterfaceName
  location: location
  tags: {
    displayName: networkInterfaceName
  }
  properties: {
    ipConfigurations: [
      {
        name: 'ipConfig1'
        properties: {
          privateIPAllocationMethod: 'Dynamic'
          publicIPAddress: {
            id: publicIpAddress.id
          }
          subnet: {
            id: subnet.id
          }
        }
      }
    ]
  }
  dependsOn: [
    vnet
  ]
}

resource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
  name: vmName
  location: location
  tags: {
    displayName: vmName
  }
  properties: {
    hardwareProfile: {
      vmSize: VmSize
    }
    osProfile: {
      computerName: vmName
      adminUsername: vmAdminUsername
      adminPassword: vmAdminPassword
    }
    storageProfile: {
      imageReference: {
        publisher: 'MicrosoftWindowsServer'
        offer: 'WindowsServer'
        sku: '2019-Datacenter'
        version: 'latest'
      }
      osDisk: {
        name: '${vmName}OsDisk'
        caching: 'ReadWrite'
        createOption: 'FromImage'
        managedDisk: {
          storageAccountType: osDiskType
        }
        diskSizeGB: 128
      }
    }
    networkProfile: {
      networkInterfaces: [
        {
          id: networkInterface.id
        }
      ]
    }
  }
}

Bicep dosyası birden çok Azure kaynağını tanımlar:

Bicep dosyasını dağıtma

  1. Bicep dosyasını main.bicep olarak yerel bilgisayarınıza kaydedin.

  2. Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın.

    az group create --name exampleRG --location eastus
    az deployment group create --resource-group exampleRG --template-file main.bicep --parameters sqlAdministratorLogin=<admin-login> vmAdminUsername=<vm-login>
    

    Not

    admin-login değerini SQL mantıksal sunucusunun kullanıcı adıyla değiştirin<.> vm-login değerini sanal makinenin kullanıcı adıyla değiştirin<.> sql Yönetici istratorLoginPassword girmeniz istenir. Ayrıca, en az 12 karakter uzunluğunda olması ve en az bir küçük ve büyük harf karakteri ile bir özel karakter içermesi gereken vm Yönetici Password girmeniz de istenir.

    Dağıtım tamamlandığında, dağıtımın başarılı olduğunu belirten bir ileti görmeniz gerekir.

Dağıtımı doğrulama

Not

Bicep dosyası myVm{uniqueid} sanal makinesi kaynağı ve SQL Veritabanı sqlserver{uniqueid} kaynağı için benzersiz bir ad oluşturur. Oluşturduğunuz değeri {uniqueid} ile değiştir.

İnternet'ten bir sanal makineye bağlanma

Aşağıdakileri yaparak İnternet'ten myVm{uniqueid} vm'sine Bağlan:

  1. Azure portalı arama çubuğuna myVm{uniqueid} girin.

  2. Bağlan'ı seçin. Sanal makineye Bağlan açılır.

  3. RDP Dosyasını İndir’i seçin. Azure bir Uzak Masaüstü Protokolü (RDP) dosyası oluşturur ve dosyayı bilgisayarınıza indirir.

  4. İndirilen RDP dosyasını açın.

    a. İstendiğinde Bağlan’ı seçin.
    b. VM'yi oluştururken belirttiğiniz kullanıcı adını ve parolayı girin.

    Not

    Vm'yi oluştururken girdiğiniz kimlik bilgilerini belirtmek için Diğer seçenekler>Farklı bir hesap kullan'ı seçmeniz gerekebilir.

  5. Tamam'ı seçin.

    Oturum açma işlemi sırasında bir sertifika uyarısı alabilirsiniz. Bunu yaparsanız Evet'i veya Devam'ı seçin.

  6. VM masaüstü göründükten sonra yerel masaüstünüze geri dönmek için simge durumuna küçültün.

vm'den özel olarak SQL Veritabanı sunucusuna erişme

Özel uç noktayı kullanarak VM'den SQL Veritabanı sunucusuna bağlanmak için aşağıdakileri yapın:

  1. myVM{uniqueid} uygulamasının Uzak Masaüstünde PowerShell'i açın.

  2. Şu komutu çalıştırın:

    nslookup sqlserver{uniqueid}.database.windows.net

    Şuna benzer bir ileti alırsınız:

      Server:  UnKnown
      Address:  168.63.129.16
      Non-authoritative answer:
      Name:    sqlserver.privatelink.database.windows.net
      Address:  10.0.0.5
      Aliases:  sqlserver.database.windows.net
    
  3. SQL Server Management Studio'yu yükleyin.

  4. sunucuya Bağlan bölmesinde aşağıdakileri yapın:

    • Sunucu türü için Veritabanı Altyapısı'nu seçin.
    • Sunucu adı için sqlserver{uniqueid}.database.windows.net öğesini seçin.
    • Kullanıcı Adı için, daha önce sağlanan kullanıcı adını girin.
    • Parola için daha önce sağlanan parolayı girin.
    • Parolayı anımsa için Evet'i seçin.
  5. Bağlan'ı seçin.

  6. Sol bölmede Veritabanları'nı seçin. İsteğe bağlı olarak, sample-db'den bilgi oluşturabilir veya sorgulayabilirsiniz.

  7. myVm{uniqueid} ile Uzak Masaüstü bağlantısını kapatın.

Kaynakları temizleme

Özel bağlantı hizmetiyle oluşturduğunuz kaynaklara artık ihtiyacınız kalmadığında kaynak grubunu silin. Bu, özel bağlantı hizmetini ve ilgili tüm kaynakları kaldırır.

az group delete --name exampleRG

Sonraki adımlar

Özel uç noktaları destekleyen hizmetler hakkında daha fazla bilgi için bkz: