مشاركة عبر


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

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

من خلال إكمال هذا التشغيل السريع، سيكون لديك خادم توجيه فعال تم نشره مع البنية الأساسية الضرورية للشبكة وجاهز لتكوين نظير BGP.

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

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

زر لنشر قالب Azure Resource Manager إلى مدخل Microsoft Azure.

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

قبل أن تبدأ ، تأكد من أن لديك المتطلبات التالية:

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

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

يقوم القالب بإنشاء الموارد التالية:

  • Azure Route Server في شبكة ظاهرية جديدة أو موجودة
  • شبكة فرعية مخصصة تسمى RouteServerSubnet لاستضافة خادم التوجيه
  • تكوين نظير BGP مع ASN النظير وعنوان IP للنظير المحدد
{
  "$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'))]"
      ]
    }
  ]
}

موارد القوالب

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

للعثور على المزيد من القوالب المتعلقة بشبكات Azure، راجع قوالب التشغيل السريع ل Azure.

نشر القالب

يمكنك نشر القالب باستخدام Azure PowerShell من خلال Azure Cloud Shell أو بيئة PowerShell المحلية.

  1. حدد Open Cloud Shell من كتلة التعليمات البرمجية التالية لفتح 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 )
    • الموقع: منطقة Azure حيث سيتم نشر الموارد

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

    لقطة شاشة توضح إخراج توزيع PowerShell قالب Route Server Resource Manager.

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

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

بعد اكتمال نشر القالب، تحقق من إنشاء خادم التوجيه بنجاح.

التحقق من الموارد في مدخل Microsoft Azure

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

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

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

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

    لقطة شاشة توضح مجموعة موارد نشر خادم التوجيه مع الشبكة الظاهرية والموارد ذات الصلة.

التحقق من نشر خادم التوجيه

  1. من مدخل Microsoft Azure، انتقل إلى مجموعة الموارد الخاصة بك وحدد مورد خادم المسار.

  2. في صفحة نظرة عامة على خادم المسارات، تحقق مما يلي:

    • تظهر الحالة على أنها "نجحت"
    • يعرض BGP ASN رقم النظام المستقل الذي تم تكوينه
    • تظهر حالة التوجيه على أنها "متوفرة"

    لقطة شاشة توضح صفحة نظرة عامة على خادم التوجيه تؤكد النشر الناجح.

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

عندما لا تحتاج إلى خادم التوجيه والموارد المقترنة، احذف مجموعة الموارد لإزالة خادم التوجيه وكافة الموارد ذات الصلة.

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

Remove-AzResourceGroup -Name <your resource group name>

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

الآن بعد أن قمت بنشر خادم توجيه باستخدام قالب ARM، تعرف على المزيد حول إمكانات خادم المسار: