التشغيل السريع: إنشاء ملقم توجيه Azure باستخدام قالب ARM

يساعدك هذا التشغيل السريع على تعلم كيفية استخدام قالب Azure Resource Manager (قالب ARM) لنشر Azure Route Server في شبكة ظاهرية جديدة أو موجودة.

قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.

إذا كانت بيئتك تفي بالمتطلبات الأساسية وكنت على دراية باستخدام قوالب ARM، فحدد الزر Deploy to Azure لفتح القالب في مدخل Microsoft Azure.

زر لنشر قالب Resource Manager إلى Azure.

المتطلبات الأساسية

مراجعة القالب

يُعدّ النموذج المستخدم في هذا التشغيل السريع مأخوذاً من قوالب التشغيل السريع من Azure.

باستخدام هذا القالب، يمكنك نشر Azure Route Server في شبكة ظاهرية جديدة أو موجودة. يتم إنشاء شبكة فرعية مخصصة باسم RouteServerSubnet لاستضافة Route Server. سيتم تكوين ملقم التوجيه أيضًا مع نظير ASN ونظير IP لتأسيس نظير BGP.

{
  "$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/27",
      "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'))]"
      ]
    }
  ]
}

تم تعريف موارد Azure متعددة في القالب:

للعثور على المزيد من القوالب، اطلع على "Azure Quickstart Template.

نشر القالب

  1. حدد Open Cloudshell من كتلة التعليمات البرمجية التالية لفتح Azure Cloud Shell، ثم اتبع الإرشادات لتسجيل الدخول إلى Azure.

    $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 ..."
    

    انتظر حتى ترى المطالبة من وحدة التحكم.

  2. حدد النسخ من مكوِّن التعليمات البرمجية السابق لنسخ نص PowerShell.

  3. انقر بزر الماوس الأيمن على جزء وحدة تحكم shell، ثم حدِّد لصق.

  4. أدخل القيم.

    اسم مجموعة الموارد هو اسم المشروع مع إلحاق rg.

    يستغرق نشر القالب 20 دقيقة تقريبًا. عند الانتهاء، يكون الناتج مشابهاً لما يلي:

    ناتج نشر PowerShell قالب مدير موارد ملقم التوجيه.

يستخدم Azure PowerShell لتوزيع القالب. بالإضافة إلى Azure PowerShell، يمكنك أيضاً استخدام مدخل Microsoft Azure وAzure CLI وواجهة برمجة تطبيقات REST. لمعرفة طرق النشر الأخرى، راجع نشر القوالب.

التحقُّق من صحة عملية النشر

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. حدد مجموعات الموارد من الجزء الأيسر.

  3. حدد مجموعة الموارد التي قمت بإنشائها في القسم السابق. الاسم الافتراضي لمجموعة الموارد هو اسم المشروع مع إلحاق rg.

  4. يجب أن تحتوي مجموعة الموارد على الشبكة الظاهرية فقط:

    مجموعة موارد نشر ملقم التوجيه مع شبكة ظاهرية.

  5. انتقل إلى https://aka.ms/routeserver.

  6. حدد ملقم التوجيه المسمى routesever للتحقق من نجاح عملية النشر.

    لقطة شاشة للصفحة المقصودة لصفحة النظرة العامة لخادم المسار.

تنظيف الموارد

عندما لم تعد بحاجة إلى الموارد التي قمت بإنشائها باستخدام Route Server، احذف مجموعة الموارد لإزالة Route Server وجميع الموارد ذات الصلة.

لحذف مجموعة الموارد، استخدم الأمر Remove-AzResourceGroup cmdlet:

Remove-AzResourceGroup -Name <your resource group name>

الخطوة التالية

في هذه البداية السريعة، قمت بإنشاء:

  • شبكة ظاهرية
  • الشبكة الفرعية
  • ملقم توجيه

بعد إنشائك ملقم توجيه Azure، تابع لمعرفة كيف يتفاعل ملقم توجيه Azure مع ExpressRoute وبوابات VPN: