Udostępnij za pośrednictwem


Dowiedz się więcej o szablonach zestawu skalowania maszyn wirtualnych

Szablony usługi Azure Resource Manager to doskonały sposób wdrażania grup powiązanych zasobów. W tej serii samouczków pokazano, jak utworzyć podstawowy szablon zestawu skalowania i jak zmodyfikować ten szablon w celu dopasowania go do różnych scenariuszy. Wszystkie przykłady pochodzą z tego repozytorium GitHub.

Ten szablon ma być prosty. Aby uzyskać więcej kompletnych przykładów szablonów zestawu skalowania, zobacz repozytorium GitHub Szablony szybkiego startu platformy Azure i wyszukaj foldery zawierające ciąg vmss.

Jeśli znasz już tworzenie szablonów, możesz przejść do sekcji "Następne kroki", aby zobaczyć, jak zmodyfikować ten szablon.

Definiowanie $schema i contentVersion

Najpierw zdefiniuj $schema element i contentVersion w szablonie. Element $schema definiuje wersję języka szablonu i jest używany do wyróżniania składni programu Visual Studio i podobnych funkcji sprawdzania poprawności. Element contentVersion nie jest używany przez platformę Azure. Zamiast tego pomaga śledzić wersję szablonu.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
}

Definiuj parametry

Następnie zdefiniuj dwa parametry adminUsername i adminPassword. Parametry to wartości określone w czasie wdrażania. Parametr adminUsername jest po prostu typem, ale ponieważ adminPassword jest wpisem tajnymstring, nadaj mu typ securestring. Później te parametry są przekazywane do konfiguracji zestawu skalowania.

  "parameters": {
    "adminUsername": {
      "type": "string"
    },
    "adminPassword": {
      "type": "securestring"
    }
  },

Definiowanie zmiennych

Szablony usługi Resource Manager umożliwiają również definiowanie zmiennych do późniejszego użycia w szablonie. W przykładzie nie są używane żadne zmienne, więc obiekt JSON jest pusty.

  "variables": {},

Definiowanie zasobów

Następnie znajduje się sekcja zasobów szablonu. W tym miejscu zdefiniujesz to, co faktycznie chcesz wdrożyć. W przeciwieństwie do parameters obiektów JSON i variables (które są obiektami JSON), resources jest listą obiektów JSON.

  "resources": [
    ...
  ]

Wszystkie zasoby wymagają typewłaściwości , name, apiVersioni location . Pierwszy zasób tego przykładu ma typ Microsoft.Network/virtualNetwork, nazwę myVneti apiVersion 2018-11-01. (Aby znaleźć najnowszą wersję interfejsu API dla typu zasobu, zobacz Dokumentacja szablonu usługi Azure Resource Manager).

{
  "type": "Microsoft.Network/virtualNetworks",
  "name": "myVnet",
  "apiVersion": "2018-11-01",
}

Określanie lokalizacji

Aby określić lokalizację sieci wirtualnej, użyj funkcji szablonu usługi Resource Manager. Ta funkcja musi być ujęta w cudzysłowy i nawiasy kwadratowe w następujący sposób: "[<template-function>]". W tym przypadku użyj resourceGroup funkcji . Nie przyjmuje żadnych argumentów i zwraca obiekt JSON z metadanymi dotyczącymi grupy zasobów, do których jest wdrażane wdrożenie. Grupa zasobów jest ustawiana przez użytkownika w momencie wdrażania. Ta wartość jest następnie indeksowana do tego obiektu JSON za pomocą .location polecenia w celu pobrania lokalizacji z obiektu JSON.

  "location": "[resourceGroup().location]",

Określanie właściwości sieci wirtualnej

Każdy zasób usługi Resource Manager ma własną properties sekcję dotyczącą konfiguracji specyficznych dla zasobu. W takim przypadku określ, że sieć wirtualna powinna mieć jedną podsieć przy użyciu zakresu prywatnych adresów 10.0.0.0/16IP. Zestaw skalowania jest zawsze zawarty w jednej podsieci. Nie może ona obejmować podsieci.

  {
    "properties": {
      "addressSpace": {
        "addressPrefixes": [
          "10.0.0.0/16"
        ]
      },
      "subnets": [
        {
          "name": "mySubnet",
          "properties": {
            "addressPrefix": "10.0.0.0/16"
          }
        }
      ]
    }
  },

Dodawanie listy dependsOn

Oprócz wymaganych typewłaściwości , , nameapiVersioni location każdy zasób może mieć opcjonalną dependsOn listę ciągów. Ta lista określa, które inne zasoby z tego wdrożenia muszą zakończyć się przed wdrożeniem tego zasobu.

W tym przypadku na liście znajduje się tylko jeden element — sieć wirtualna z poprzedniego przykładu. Ta zależność jest określana, ponieważ zestaw skalowania wymaga istnienia sieci przed utworzeniem jakichkolwiek maszyn wirtualnych. Dzięki temu zestaw skalowania może nadać tym maszynom wirtualnym prywatne adresy IP z zakresu adresów IP określonego wcześniej we właściwościach sieci. Format każdego ciągu na liście dependsOn to <type>/<name>. Użyj tej samej type i name użytej wcześniej w definicji zasobu sieci wirtualnej.

  {
    "type": "Microsoft.Compute/virtualMachineScaleSets",
    "name": "myScaleSet",
    "apiVersion": "2019-03-01",
    "location": "[resourceGroup().location]",
    "dependsOn": [
      "Microsoft.Network/virtualNetworks/myVnet"
    ],
    ...
  }

Określanie właściwości zestawu skalowania

Zestawy skalowania mają wiele właściwości dostosowywania maszyn wirtualnych w zestawie skalowania. Aby uzyskać pełną listę tych właściwości, zobacz dokumentację szablonu. W tym samouczku ustawiono tylko kilka często używanych właściwości.

Podaj rozmiar i pojemność maszyny wirtualnej

Zestaw skalowania musi wiedzieć, jaki rozmiar maszyny wirtualnej ma zostać utworzony ("nazwa jednostki SKU") i ile takich maszyn wirtualnych ma zostać utworzonych ("pojemność jednostki SKU"). Aby sprawdzić, które rozmiary maszyn wirtualnych są dostępne, zobacz dokumentację rozmiarów maszyn wirtualnych.

  "sku": {
    "name": "Standard_A1",
    "capacity": 2
  },

Wybierz typ aktualizacji

Zestaw skalowania musi również wiedzieć, jak obsługiwać aktualizacje w zestawie skalowania. Obecnie istnieją trzy opcje, Manual, Rolling i Automatic. Aby uzyskać więcej informacji na temat różnic między nimi, zobacz dokumentację dotyczącą sposobu uaktualniania zestawu skalowania.

  "properties": {
    "upgradePolicy": {
      "mode": "Manual"
    },
  }

Wybieranie systemu operacyjnego maszyny wirtualnej

Zestaw skalowania musi wiedzieć, jaki system operacyjny ma być umieszczony na maszynach wirtualnych. W tym miejscu utwórz maszyny wirtualne z w pełni poprawionym obrazem ubuntu 16.04-LTS.

  "virtualMachineProfile": {
    "storageProfile": {
      "imageReference": {
        "publisher": "Canonical",
        "offer": "UbuntuServer",
        "sku": "16.04-LTS",
        "version": "latest"
      }
    },
  }

Określ wartość computerNamePrefix

Zestaw skalowania wdraża wiele maszyn wirtualnych. Zamiast określać każdą nazwę maszyny wirtualnej, określ wartość computerNamePrefix. Zestaw skalowania dołącza indeks do prefiksu dla każdej maszyny wirtualnej, więc nazwy maszyn wirtualnych mają postać <computerNamePrefix>_<auto-generated-index>.

W poniższym fragmencie kodu użyj parametrów z poprzednich, aby ustawić nazwę użytkownika i hasło administratora dla wszystkich maszyn wirtualnych w zestawie skalowania. W tym procesie jest używana funkcja szablonu parameters . Ta funkcja przyjmuje ciąg, który określa, który parametr ma odwoływać się do i zwraca wartość dla tego parametru.

 "osProfile": {
   "computerNamePrefix": "vm",
   "adminUsername": "[parameters('adminUsername')]",
   "adminPassword": "[parameters('adminPassword')]"
  },

Określanie konfiguracji sieci maszyny wirtualnej

Na koniec określ konfigurację sieci dla maszyn wirtualnych w zestawie skalowania. W takim przypadku wystarczy określić identyfikator utworzonej wcześniej podsieci. Informuje to zestaw skalowania o umieszczenie interfejsów sieciowych w tej podsieci.

Identyfikator sieci wirtualnej zawierającej podsieć można uzyskać przy użyciu funkcji szablonu resourceId . Ta funkcja przyjmuje typ i nazwę zasobu i zwraca w pełni kwalifikowany identyfikator tego zasobu. Ten identyfikator ma formularz: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/<resourceProviderNamespace>/<resourceType>/<resourceName>

Jednak identyfikator sieci wirtualnej nie jest wystarczający. Podaj określoną podsieć, w których powinny znajdować się maszyny wirtualne zestawu skalowania. W tym celu połącz /subnets/mySubnet się z identyfikatorem sieci wirtualnej. Wynikiem jest w pełni kwalifikowany identyfikator podsieci. Wykonaj to połączenie z funkcją concat , która przyjmuje serię ciągów i zwraca ich łączenie.

  "networkProfile": {
    "networkInterfaceConfigurations": [
      {
        "name": "myNic",
        "properties": {
          "primary": "true",
          "ipConfigurations": [
            {
              "name": "myIpConfig",
              "properties": {
                "subnet": {
                  "id": "[concat(resourceId('Microsoft.Network/virtualNetworks', 'myVnet'), '/subnets/mySubnet')]"
                }
              }
            }
          ]
        }
      }
    ]
  }

Następne kroki

Poprzedni szablon można wdrożyć, wykonując instrukcje opisane w dokumentacji usługi Azure Resource Manager.

Tę serię samouczków można uruchomić z artykułu podstawowego szablonu zestawu skalowania.

Możesz zobaczyć, jak zmodyfikować podstawowy szablon zestawu skalowania w celu wdrożenia zestawu skalowania w istniejącej sieci wirtualnej.

Możesz zobaczyć, jak zmodyfikować podstawowy szablon zestawu skalowania w celu wdrożenia zestawu skalowania przy użyciu obrazu niestandardowego.

Możesz zobaczyć, jak zmodyfikować podstawowy szablon zestawu skalowania w celu wdrożenia zestawu skalowania systemu Linux przy użyciu automatycznego skalowania opartego na gościu.

Aby uzyskać więcej informacji na temat zestawów skalowania, zapoznaj się ze stroną przeglądu zestawu skalowania.