Hızlı Başlangıç: ARM şablonu kullanarak Azure Route Server oluşturma

Bu hızlı başlangıçta, Azure Route Server'ı yeni veya mevcut bir sanal ağa dağıtmak için Azure Resource Manager şablonunun (ARM şablonu) nasıl kullanılacağı gösterilmektedir. Azure Route Server, BGP eşlemesi aracılığıyla sanal ağınızla ağ sanal gereçleri arasında dinamik yönlendirme sağlar ve ağ altyapınızdaki yol değişimlerini otomatik olarak yönetir.

Bu hızlı başlangıcı tamamladığınızda, gerekli ağ altyapısıyla dağıtılan ve BGP eşleme yapılandırması için hazır olan işlevli bir Yönlendirme Sunucusuna sahip olursunuz.

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, deklaratif 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.

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

Azure Resource Manager şablonunu Azure portalına dağıtma düğmesi.

Önkoşullar

Başlamadan önce aşağıdaki gereksinimlere sahip olduğunuzdan emin olun:

Şablonu gözden geçirme

Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç Şablonlarından alınmıştır. Bu ARM şablonu, sanal ağ altyapısı ve BGP eşleme yapılandırması dahil olmak üzere eksiksiz bir Rota Sunucusu ortamı dağıtır.

Şablon aşağıdaki kaynakları oluşturur:

  • Yeni veya mevcut bir sanal ağda Azure Route Server
  • Route Server'ı barındırmak için RouteServerSubnet adlı ayrılmış alt ağ
  • Belirtilen Eş ASN ve Eş IP ile BGP eşleme yapılandırması
{
  "$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": "3572840517141664306"
    }
  },
  "parameters": {
    "vnetName": {
      "type": "string",
      "defaultValue": "routeservervnet",
      "metadata": {
        "description": "Name of new or existing vnet to which Azure Route Server should be deployed."
      }
    },
    "vnetIpPrefix": {
      "type": "string",
      "defaultValue": "10.1.0.0/16",
      "metadata": {
        "description": "IP prefix for available addresses in vnet address space."
      }
    },
    "vnetNew_or_Existing": {
      "type": "string",
      "defaultValue": "New",
      "allowedValues": [
        "New",
        "Existing"
      ],
      "metadata": {
        "description": "Specify whether to provision new vnet or deploy to existing vnet."
      }
    },
    "routeServerSubnetIpPrefix": {
      "type": "string",
      "defaultValue": "10.1.1.0/26",
      "metadata": {
        "description": "Route Server subnet IP prefix MUST be within vnet IP prefix address space."
      }
    },
    "publicIpNew_or_Existing": {
      "type": "string",
      "defaultValue": "New",
      "allowedValues": [
        "New",
        "Existing"
      ],
      "metadata": {
        "description": "Specify whether to provision new standard public IP or deploy using existing standard public IP."
      }
    },
    "publicIpName": {
      "type": "string",
      "defaultValue": "routeserverpip",
      "metadata": {
        "description": "Name of the standard Public IP used for the Route Server"
      }
    },
    "firstRouteServerName": {
      "type": "string",
      "defaultValue": "routeserver",
      "metadata": {
        "description": "Name of Route Server."
      }
    },
    "routeServerBgpConnectionName": {
      "type": "string",
      "defaultValue": "conn1",
      "metadata": {
        "description": "Name of BGP connection."
      }
    },
    "peerAsn": {
      "type": "int",
      "defaultValue": 65002,
      "metadata": {
        "description": "Peer ASN connecting to."
      }
    },
    "peerIp": {
      "type": "string",
      "defaultValue": "10.0.1.4",
      "metadata": {
        "description": "Peer IP connecting to."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Azure region for Route Server and virtual network."
      }
    }
  },
  "variables": {
    "ipconfigName": "ipconfig1",
    "routeServerSubnetName": "RouteServerSubnet"
  },
  "resources": [
    {
      "condition": "[equals(parameters('vnetNew_or_Existing'), 'New')]",
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2020-05-01",
      "name": "[parameters('vnetName')]",
      "location": "[parameters('location')]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vnetIpPrefix')]"
          ]
        }
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks/subnets",
      "apiVersion": "2020-05-01",
      "name": "[format('{0}/{1}', parameters('vnetName'), variables('routeServerSubnetName'))]",
      "properties": {
        "addressPrefix": "[parameters('routeServerSubnetIpPrefix')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]"
      ]
    },
    {
      "condition": "[equals(parameters('publicIpNew_or_Existing'), 'New')]",
      "type": "Microsoft.Network/publicIPAddresses",
      "apiVersion": "2020-05-01",
      "name": "[parameters('publicIpName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard"
      },
      "properties": {
        "publicIPAllocationMethod": "Static",
        "publicIPAddressVersion": "IPv4",
        "idleTimeoutInMinutes": 4
      }
    },
    {
      "type": "Microsoft.Network/virtualHubs",
      "apiVersion": "2020-06-01",
      "name": "[parameters('firstRouteServerName')]",
      "location": "[parameters('location')]",
      "properties": {
        "sku": "Standard"
      }
    },
    {
      "type": "Microsoft.Network/virtualHubs/ipConfigurations",
      "apiVersion": "2020-06-01",
      "name": "[format('{0}/{1}', parameters('firstRouteServerName'), variables('ipconfigName'))]",
      "properties": {
        "subnet": {
          "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), variables('routeServerSubnetName'))]"
        },
        "publicIPAddress": {
          "id": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIpName'))]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualHubs', parameters('firstRouteServerName'))]",
        "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIpName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), variables('routeServerSubnetName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/virtualHubs/bgpConnections",
      "apiVersion": "2020-06-01",
      "name": "[format('{0}/{1}', parameters('firstRouteServerName'), parameters('routeServerBgpConnectionName'))]",
      "properties": {
        "peerAsn": "[parameters('peerAsn')]",
        "peerIp": "[parameters('peerIp')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/virtualHubs', parameters('firstRouteServerName'))]",
        "[resourceId('Microsoft.Network/virtualHubs/ipConfigurations', parameters('firstRouteServerName'), variables('ipconfigName'))]"
      ]
    }
  ]
}

Şablon kaynakları

Şablonda aşağıdaki Azure kaynakları tanımlanır:

Azure ağıyla ilgili daha fazla şablon bulmak için bkz. Azure Hızlı Başlangıç Şablonları.

Şablonu dağıtma

Şablonu Azure Cloud Shell veya yerel PowerShell ortamınız aracılığıyla Azure PowerShell kullanarak dağıtabilirsiniz.

  1. Aşağıdaki kod bloğundan Cloud Shell'i Aç'ı seçerek Azure Cloud Shell'i açın ve ardından Azure'da oturum açmak için yönergeleri izleyin:

    $projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
    $location = Read-Host -Prompt "Enter the location (i.e. centralus)"
    $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.network/route-server/azuredeploy.json"
    
    $resourceGroupName = "${projectName}rg"
    
    New-AzResourceGroup -Name $resourceGroupName -Location "$location"
    New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri
    
    Read-Host -Prompt "Press [ENTER] to continue ..."
    

    Konsoldan istemi görene kadar bekleyin.

  2. PowerShell betiğini kopyalamak için önceki kod bloğundan Kopyala'yı seçin.

  3. Shell konsolu bölmesine sağ tıklayın ve Yapıştır'ı seçin.

  4. İstendiğinde değerleri girin:

    • Proje adı: Kaynak adları oluşturmak için kullanılır (kaynak grubu adı , rg ekli proje adı olacaktır)
    • Konum: Kaynakların dağıtılacağı Azure bölgesi

    Dağıtımın tamamlanması yaklaşık 20 dakika sürer. Tamamlandığında, çıkış şuna benzer olmalıdır:

    Yol Sunucusu Kaynak Yöneticisi şablonu PowerShell dağıtım çıktısını gösteren ekran görüntüsü.

Azure PowerShell, şablonu bu örnekte dağıtmak için kullanılır. Şablon dağıtımı için Azure portalı, Azure CLI ve REST API'yi de kullanabilirsiniz. Diğer dağıtım yöntemleri hakkında bilgi edinmek için bkz. Şablonları dağıtma.

Dağıtımı Doğrula

Şablon dağıtımı tamamlandıktan sonra Rota Sunucusu'nun başarıyla oluşturulduğunu doğrulayın.

Azure portalında kaynakları doğrulama

  1. Azure Portal’ında oturum açın.

  2. Sol bölmeden Kaynak grupları'nı seçin.

  3. Önceki bölümde oluşturduğunuz kaynak grubunu seçin. Varsayılan kaynak grubu adı, rg'nin eklendiği proje adıdır.

  4. Kaynak grubu sanal ağı ve ilişkili kaynakları içermelidir:

    Sanal ağ ve ilgili kaynaklar içeren Yönlendirme Sunucusu dağıtım kaynak grubunu gösteren ekran görüntüsü.

Yönlendirme Sunucusu dağıtımını doğrulama

  1. Azure portalından kaynak grubunuza gidin ve Yönlendirme Sunucusu kaynağını seçin.

  2. Rota Sunucusu'na genel bakış sayfasında aşağıdakileri doğrulayın:

    • Durum "Başarılı" olarak görünüyor
    • BGP ASN yapılandırılan otonom sistem numarasını görüntüler
    • Yönlendirme Durumu "Sağlandı" olarak görünüyor

    Başarılı dağıtımı onaylayan Yol Sunucusuna genel bakış sayfasını gösteren ekran görüntüsü.

Kaynakları temizleme

Yönlendirme Sunucusu'na ve ilişkili kaynaklara artık ihtiyacınız kalmadığında, Yönlendirme Sunucusu'nu ve tüm ilgili kaynakları kaldırmak için kaynak grubunu silin.

Kaynak grubunu silmek için Remove-AzResourceGroup cmdlet'ini kullanın:

Remove-AzResourceGroup -Name <your resource group name>

Sonraki adım

Artık bir ARM şablonu kullanarak Yönlendirme Sunucusu dağıttığınıza göre, Yönlendirme Sunucusu özellikleri hakkında daha fazla bilgi edinin.