Share via


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

Bu hızlı başlangıçta, özel uç nokta oluşturmak için bir Azure Resource Manager şablonu (ARM şablonu) kullanacaksınız.

Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.

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

Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanmayı biliyorsanız buradaki Azure'a Dağıt düğmesini seçin. ARM şablonu Azure portalında açılır.

Button to deploy the Resource Manager template to Azure.

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.

Şablonu gözden geçirme

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

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "14846974543330599630"
    }
  },
  "parameters": {
    "sqlAdministratorLogin": {
      "type": "string",
      "metadata": {
        "description": "The administrator username of the SQL logical server"
      }
    },
    "sqlAdministratorLoginPassword": {
      "type": "secureString",
      "metadata": {
        "description": "The administrator password of the SQL logical server."
      }
    },
    "vmAdminUsername": {
      "type": "string",
      "metadata": {
        "description": "Username for the Virtual Machine."
      }
    },
    "vmAdminPassword": {
      "type": "secureString",
      "metadata": {
        "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)"
      }
    },
    "VmSize": {
      "type": "string",
      "defaultValue": "Standard_D2_v3",
      "metadata": {
        "description": "The size of the VM"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "variables": {
    "vnetName": "myVirtualNetwork",
    "vnetAddressPrefix": "10.0.0.0/16",
    "subnet1Prefix": "10.0.0.0/24",
    "subnet1Name": "mySubnet",
    "sqlServerName": "[format('sqlserver{0}', uniqueString(resourceGroup().id))]",
    "databaseName": "[format('{0}/sample-db', variables('sqlServerName'))]",
    "privateEndpointName": "myPrivateEndpoint",
    "privateDnsZoneName": "[format('privatelink{0}', environment().suffixes.sqlServerHostname)]",
    "pvtEndpointDnsGroupName": "[format('{0}/mydnsgroupname', variables('privateEndpointName'))]",
    "vmName": "[take(format('myVm{0}', uniqueString(resourceGroup().id)), 15)]",
    "publicIpAddressName": "[format('{0}PublicIP', variables('vmName'))]",
    "networkInterfaceName": "[format('{0}NetInt', variables('vmName'))]",
    "osDiskType": "StandardSSD_LRS"
  },
  "resources": [
    {
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2021-11-01-preview",
      "name": "[variables('sqlServerName')]",
      "location": "[parameters('location')]",
      "tags": {
        "displayName": "[variables('sqlServerName')]"
      },
      "properties": {
        "administratorLogin": "[parameters('sqlAdministratorLogin')]",
        "administratorLoginPassword": "[parameters('sqlAdministratorLoginPassword')]",
        "version": "12.0",
        "publicNetworkAccess": "Disabled"
      }
    },
    {
      "type": "Microsoft.Sql/servers/databases",
      "apiVersion": "2021-11-01-preview",
      "name": "[variables('databaseName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Basic",
        "tier": "Basic",
        "capacity": 5
      },
      "tags": {
        "displayName": "[variables('databaseName')]"
      },
      "properties": {
        "collation": "SQL_Latin1_General_CP1_CI_AS",
        "maxSizeBytes": 104857600,
        "sampleName": "AdventureWorksLT"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2021-05-01",
      "name": "[variables('vnetName')]",
      "location": "[parameters('location')]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[variables('vnetAddressPrefix')]"
          ]
        }
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks/subnets",
      "apiVersion": "2021-05-01",
      "name": "[format('{0}/{1}', variables('vnetName'), variables('subnet1Name'))]",
      "properties": {
        "addressPrefix": "[variables('subnet1Prefix')]",
        "privateEndpointNetworkPolicies": "Disabled"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/privateEndpoints",
      "apiVersion": "2021-05-01",
      "name": "[variables('privateEndpointName')]",
      "location": "[parameters('location')]",
      "properties": {
        "subnet": {
          "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]"
        },
        "privateLinkServiceConnections": [
          {
            "name": "[variables('privateEndpointName')]",
            "properties": {
              "privateLinkServiceId": "[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]",
              "groupIds": [
                "sqlServer"
              ]
            }
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers', variables('sqlServerName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]",
        "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/privateDnsZones",
      "apiVersion": "2020-06-01",
      "name": "[variables('privateDnsZoneName')]",
      "location": "global",
      "properties": {},
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
      "apiVersion": "2020-06-01",
      "name": "[format('{0}/{1}', variables('privateDnsZoneName'), format('{0}-link', variables('privateDnsZoneName')))]",
      "location": "global",
      "properties": {
        "registrationEnabled": false,
        "virtualNetwork": {
          "id": "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
      "apiVersion": "2021-05-01",
      "name": "[variables('pvtEndpointDnsGroupName')]",
      "properties": {
        "privateDnsZoneConfigs": [
          {
            "name": "config1",
            "properties": {
              "privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName'))]"
            }
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDnsZoneName'))]",
        "[resourceId('Microsoft.Network/privateEndpoints', variables('privateEndpointName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/publicIPAddresses",
      "apiVersion": "2021-05-01",
      "name": "[variables('publicIpAddressName')]",
      "location": "[parameters('location')]",
      "tags": {
        "displayName": "[variables('publicIpAddressName')]"
      },
      "properties": {
        "publicIPAllocationMethod": "Dynamic"
      }
    },
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2021-05-01",
      "name": "[variables('networkInterfaceName')]",
      "location": "[parameters('location')]",
      "tags": {
        "displayName": "[variables('networkInterfaceName')]"
      },
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipConfig1",
            "properties": {
              "privateIPAllocationMethod": "Dynamic",
              "publicIPAddress": {
                "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]"
              },
              "subnet": {
                "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]"
              }
            }
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnet1Name'))]",
        "[resourceId('Microsoft.Network/virtualNetworks', variables('vnetName'))]"
      ]
    },
    {
      "type": "Microsoft.Compute/virtualMachines",
      "apiVersion": "2021-11-01",
      "name": "[variables('vmName')]",
      "location": "[parameters('location')]",
      "tags": {
        "displayName": "[variables('vmName')]"
      },
      "properties": {
        "hardwareProfile": {
          "vmSize": "[parameters('VmSize')]"
        },
        "osProfile": {
          "computerName": "[variables('vmName')]",
          "adminUsername": "[parameters('vmAdminUsername')]",
          "adminPassword": "[parameters('vmAdminPassword')]"
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "MicrosoftWindowsServer",
            "offer": "WindowsServer",
            "sku": "2019-Datacenter",
            "version": "latest"
          },
          "osDisk": {
            "name": "[format('{0}OsDisk', variables('vmName'))]",
            "caching": "ReadWrite",
            "createOption": "FromImage",
            "managedDisk": {
              "storageAccountType": "[variables('osDiskType')]"
            },
            "diskSizeGB": 128
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
            }
          ]
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
      ]
    }
  ]
}

Şablon birden çok Azure kaynağını tanımlar:

Şablonu dağıtma

Aşağıdakileri yaparak ARM şablonunu Azure'a dağıtın:

  1. Azure'da oturum açın ve buradaki Azure'a Dağıt düğmesini seçerek ARM şablonunu açın. Şablon özel uç noktayı, SQL Veritabanı örneğini, ağ altyapısını ve doğrulanacak bir sanal makineyi oluşturur.

    Button to deploy the Resource Manager template to Azure.

  2. Kaynak grubunuzu seçin veya yeni bir grup oluşturun.

  3. SQL yöneticisi oturum açma adını ve parolasını girin.

  4. Sanal makine yöneticisi kullanıcı adını ve parolasını girin.

  5. Hüküm ve koşullar bildirimini okuyun. Kabul ediyorsanız yukarıda belirtilen hüküm ve koşulları kabul ediyorum'a ve ardından Satın Al'a tıklayın. Dağıtımın tamamlanması 20 dakika veya daha uzun sürebilir.

Dağıtımı doğrulama

Not

ARM şablonu 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. Portalın 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 uç noktayla oluşturduğunuz kaynaklara artık ihtiyacınız kalmadığında kaynak grubunu silin. Bunu yaptığınızda özel uç nokta ve ilgili tüm kaynaklar kaldırılır.

Kaynak grubunu silmek için cmdlet'ini Remove-AzResourceGroup çalıştırın:

Remove-AzResourceGroup -Name <your resource group name>

Sonraki adımlar

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