تشغيل سريع: إنشاء نقطة نهاية خاصة باستخدام Bicep
في هذا التشغيل السريع، ستستخدم Bicep لإنشاء نقطة نهاية خاصة.
Bicep هي لغة المجال المخصصة (DSL) التي تستخدم بناء الجملة التعريفي لتوزيع موارد Azure. توفر بناء جملة مختصر، وسلامة موثوقة من النوع، ودعمًا لإعادة استخدام التعليمة البرمجية. تقدم Bicep أفضل تجربة تأليف لحلول البنية الأساسية باعتبارها تعليمة برمجية في Azure.
يمكنك أيضاً إنشاء نقطة نهاية خاصة باستخدام مدخل Microsoft Azure أو Azure PowerShell أو Azure CLI أو قالب Azure Resource Manager.
المتطلبات الأساسية
تحتاج إلى حساب "Azure" مع اشتراك مفعل. إذا لم يكن لديك حساب Azure بالفعل، فأنشئ حسابًا مجانًا.
مراجعة ملف Bicep
ينشئ ملف Bicep هذا نقطة نهاية خاصة لمثيل قاعدة بيانات Azure SQL.
ملف Bicep المستخدم في هذا التشغيل السريع مأخوذ من قوالب التشغيل السريع لـ Azure.
@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 موارد Azure متعددة:
- Microsoft.Sql/servers: مثيل قاعدة بيانات "SQL Database" مع قاعدة بيانات القالب.
- Microsoft.Sql/servers/databases: قاعدة بيانات النموذج.
- Microsoft.Network/virtualNetworks: الشبكة الظاهرية حيث يتم نشر نقطة النهاية الخاصة.
- Microsoft.Network/privateEndpoints: نقطة النهاية الخاصة للوصول إلـى مثيل قاعدة بيانات SQL.
- Microsoft.Network/privateDnsZones: المنطقة المُستخدمة لحل عنوان IP لنقطة النهاية الخاصة.
- Microsoft.Network/privateDnsZones/virtualNetworkLinks
- Microsoft.Network/privateEndpoints/privateDnsZoneGroups: مَجموعة المنطقة المستخدمة لإقران نقطة النهاية الخاصة بمنطقة DNS خاصة.
- Microsoft.Network/publicIpAddresses: يوجد عنوان IP العام المُستخدم للوصول إلى الجهاز الظاهري.
- Microsoft.Network/networkInterfaces: واجهة الشبكة الخاصة بالجهاز الظاهري.
- Microsoft.Compute/virtualMachines: الجهاز الظاهري المستخدم لاختبار الاتصال الخاص مـع نقطة النهاية الخاصة إلى مثيل قاعدة بيانات SQL.
نشر ملف Bicep
احفظ ملف Bicep بالاسم main.bicep على الكمبيوتر المحلي الخاص بك.
بادر بتوزيع ملف Bicep باستخدام Azure CLI أو Azure PowerShell.
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>
إشعار
استبدل <admin-login> باسم المستخدم لخادم SQL المنطقي. استبدل <vm-login> مع اسم المستخدم الخاص بالجهاز الظاهري. سيُطلب منك إدخال sqlAdministratorLoginPassword. ستتم مطالبتك أيضاً بإدخال vmAdminPassword، والذي يجب أن يكون طوله 12 حرفاً على الأقل ويحتوي على حرف واحد على الأقل من الأحرف الصغيرة والأحرف الكبيرة وحرف خاص واحد.
عند الانتهاء من عملية النشر، يجب أن ترى رسالة تشير إلى نجاح عملية النشر.
التحقُّق من صحة عملية النشر
إشعار
ينشئ ملف Bicep اسماً مميزاً لمورد myVm{uniqueid} للجهاز الظاهري، ولمورد قاعدة بيانات SQL sqlserver{uniqueid}. استبدل القيمة التي تم إنشاؤها بـ {uniqueid}.
الاتصال بجهاز افتراضي من الإنترنت
اتصل بالجهاز الافتراضي myVm{uniqueid} من الإنترنت على النحو التالي:
في شريط البحث في مدخل Microsoft Azure، أدخل myVm{uniqueid}.
حدد اتصال. سيفتح "Connect to virtual machine".
حدد Download RDP File. يعمل Azure على إنشاء ملف Remote Desktop Protocol (RDP) وتنزيله إلى الكمبيوتر الخاص بك.
افتح الملف ".rdp" الذي تم تنزيله.
أ. إذا تمت مطالبتك، فحدد "Connect".
ب. أدخل اسم المُستخدم وكلمة المرور اللذين حددتهما عند إنشاء الجهاز الظاهري.إشعار
قد تحتاج إلى تحديد More choices>استخدام حساب مختلف، لتحديد بيانات الاعتماد التي أدخلتها عند إنشاء الجهاز الافتراضي.
حدد موافق.
قد تتلقى تحذيرًا بشأن الشهادة أثناء عملية تسجيل الدخول. إذا قمت بذلك، حدّد نعم أو متابعة.
بعد ظهور سطح مكتب الجهاز الافتراضي، قم بتصغيره للعودة إلى سطح المكتب المحلي.
الوصول إلى خادم قاعدة بيانات "SQL Database" بشكل خاص من الجهاز الافتراضي
وفيما يلي كيفية الاتصال بخادم قاعدة البيانات SQL مـن الجهاز الافتراضي عن طريق استخدام نقطة النهاية الخاصة:
فـي سطح المكتب البعيد الخاص بـ myVM{uniqueid}، افتح خدمة PowerShell.
شغّل الأمر التالي:
nslookup sqlserver{uniqueid}.database.windows.net
سوف تتلقى رسالة مشابهة لهذا الناتج:
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
عليك تثبيت "SQL Server Management Studio".
فـي جزء الاتصال بالخادم، قم بما يلي:
- بالنسبة إلى نوع الخادم: حـدد محرك قاعدة البيانات.
- بالنسبة إلى اسم الخادم: حـدد sqlserver{uniqueid}.database.windows.net.
- بالنسبة إلى اسم المستخدم، أدخل اسم المُستخدم الذي تم توفيره سابقاً.
- بالنسبة إلى كلمة المرور، أدخل كلمة المُرور التي تم توفيرها سابقاً.
- بالنسبة إلـى تذكر كلمة المرور: حدد Yes.
حدد اتصال.
فـي الجزء الأيسر، حدد Databases. بشكل اختياري، يمكنك إنشاء أو الاستعلام عن المعلومات من sample-db.
أغلق اتصال "Remote Desktop" بالجهاز الظاهري "myVm{uniqueid}".
تنظيف الموارد
عندما لا تعد في حاجة إلى الموارد التي أنشأتها باستخدام خدمة الرابط الخاص، احذف مجموعة الموارد. يؤدي هذا إلى إزالة خدمة الرابط الخاص وكل الموارد ذات الصلة.
az group delete --name exampleRG
الخطوات التالية
لمزيد من المعلومات حول الخدمات التي تدعم نقطة نهاية خاصة، راجع: