Delen via


Meer informatie over sjablonen voor virtuele-machineschaalsets

Azure Resource Manager-sjablonen zijn bijzonder handig om groepen gerelateerde resources te implementeren. In deze reeks zelfstudies ziet u hoe u een eenvoudige schaalsetsjabloon maakt en hoe u deze sjabloon aanpast aan verschillende scenario's. Alle voorbeelden zijn afkomstig uit deze GitHub-opslagplaats.

Deze sjabloon is bedoeld om eenvoudig te zijn. Zie de GitHub-opslagplaats Azure Quickstart Templates en zoek naar mappen die de tekenreeks vmssbevatten voor meer volledige voorbeelden van schaalsetsjablonen.

Als u al bekend bent met het maken van sjablonen, kunt u doorgaan naar de sectie Volgende stappen om te zien hoe u deze sjabloon kunt wijzigen.

Definieer $schema en contentVersion

Definieer $schema eerst en contentVersion in de sjabloon. Het $schema element definieert de versie van de sjabloontaal en wordt gebruikt voor visual studio-syntaxismarkeringen en vergelijkbare validatiefuncties. Het contentVersion element wordt niet gebruikt door Azure. In plaats daarvan kunt u de sjabloonversie bijhouden.

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

Parameters definiëren

Definieer vervolgens twee parameters, adminUsername en adminPassword. Parameters zijn waarden die u opgeeft op het moment van implementatie. De adminUsername parameter is gewoon een string type, maar omdat adminPassword een geheim is, geeft u het type securestring. Later worden deze parameters doorgegeven aan de configuratie van de schaalset.

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

Variabelen definiëren

met Resource Manager sjablonen kunt u ook variabelen definiëren die later in de sjabloon moeten worden gebruikt. In het voorbeeld worden geen variabelen gebruikt, dus het JSON-object is leeg.

  "variables": {},

Resources definiëren

Hierna volgt de sectie resources van de sjabloon. Hier definieert u wat u daadwerkelijk wilt implementeren. In tegenstelling tot parameters en variables (dit zijn JSON-objecten), resources is een JSON-lijst met JSON-objecten.

  "resources": [
    ...
  ]

Voor alle resources zijn de eigenschappen , name, apiVersionen location vereisttype. De eerste resource van dit voorbeeld heeft het type Microsoft.Network/virtualNetwork, de naam myVneten apiVersion 2018-11-01. (Als u de meest recente API-versie voor een resourcetype wilt vinden, raadpleegt u de naslaginformatie over Azure Resource Manager-sjablonen.)

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

Locatie opgeven

Als u de locatie voor het virtuele netwerk wilt opgeven, gebruikt u een Resource Manager-sjabloonfunctie. Deze functie moet tussen aanhalingstekens en vierkante haken staan, zoals deze: "[<template-function>]". Gebruik in dit geval de resourceGroup functie . Het heeft geen argumenten nodig en retourneert een JSON-object met metagegevens over de resourcegroep waarin deze implementatie wordt geïmplementeerd. De resourcegroep wordt ingesteld door de gebruiker op het moment van implementatie. Deze waarde wordt vervolgens geïndexeerd in dit JSON-object met .location om de locatie van het JSON-object op te halen.

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

Eigenschappen van virtueel netwerk opgeven

Elke Resource Manager resource heeft een eigen properties sectie voor configuraties die specifiek zijn voor de resource. Geef in dit geval op dat het virtuele netwerk één subnet moet hebben met behulp van het privé-IP-adresbereik 10.0.0.0/16. Een schaalset bevindt zich altijd in één subnet. Het kan geen subnetten omvatten.

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

DependsOn-lijst toevoegen

Naast de vereiste typeeigenschappen , name, apiVersionen location kan elke resource een optionele dependsOn lijst met tekenreeksen hebben. Deze lijst geeft aan welke andere resources van deze implementatie moeten worden voltooid voordat deze resource wordt geïmplementeerd.

In dit geval is er slechts één element in de lijst, het virtuele netwerk uit het vorige voorbeeld. U geeft deze afhankelijkheid op omdat de schaalset moet bestaan dat het netwerk bestaat voordat vm's worden gemaakt. Op deze manier kan de schaalset deze VM's privé-IP-adressen geven uit het IP-adresbereik dat eerder is opgegeven in de netwerkeigenschappen. De indeling van elke tekenreeks in de dependsOn-lijst is <type>/<name>. Gebruik hetzelfde type en name eerder gebruikt in de definitie van de virtuele netwerkresource.

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

Eigenschappen van schaalset opgeven

Schaalsets hebben veel eigenschappen voor het aanpassen van de VM's in de schaalset. Zie de sjabloonreferentie voor een volledige lijst met deze eigenschappen. Voor deze zelfstudie worden slechts enkele veelgebruikte eigenschappen ingesteld.

Vm-grootte en -capaciteit opgeven

De schaalset moet weten welke grootte van de VM moet worden gemaakt ('sKU-naam') en hoeveel van dergelijke VIRTUELE machines moeten worden gemaakt ('sKU-capaciteit'). Als u wilt zien welke VM-grootten beschikbaar zijn, raadpleegt u de documentatie over VM-grootten.

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

Type updates kiezen

De schaalset moet ook weten hoe updates in de schaalset moeten worden verwerkt. Op dit moment zijn er drie opties, Manualen AutomaticRolling . Zie de documentatie over het upgraden van een schaalset voor meer informatie over de verschillen tussen de twee.

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

Vm-besturingssysteem kiezen

De schaalset moet weten welk besturingssysteem op de VM's moet worden geplaatst. Maak hier de VM's met een volledig gepatchte Ubuntu 16.04-LTS-installatiekopie.

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

computerNamePrefix opgeven

De schaalset implementeert meerdere VM's. In plaats van elke VM-naam op te geven, geeft u op computerNamePrefix. De schaalset voegt een index toe aan het voorvoegsel voor elke VM, zodat VM-namen de vorm <computerNamePrefix>_<auto-generated-index>hebben.

Gebruik in het volgende codefragment de parameters van vóór om de gebruikersnaam en het wachtwoord van de beheerder in te stellen voor alle VM's in de schaalset. In dit proces wordt de parameters sjabloonfunctie gebruikt. Deze functie neemt een tekenreeks op die aangeeft naar welke parameter moet worden verwezen en voert de waarde voor die parameter uit.

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

Vm-netwerkconfiguratie opgeven

Geef ten slotte de netwerkconfiguratie op voor de VM's in de schaalset. In dit geval hoeft u alleen de id op te geven van het subnet dat u eerder hebt gemaakt. Hierdoor wordt aan de schaalset aangegeven dat de netwerkinterfaces in dit subnet moeten worden geplaatst.

U kunt de id van het virtuele netwerk met het subnet ophalen met behulp van de resourceId sjabloonfunctie. Deze functie neemt het type en de naam van een resource op en retourneert de volledig gekwalificeerde id van die resource. Deze id heeft de volgende notatie: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/<resourceProviderNamespace>/<resourceType>/<resourceName>

De id van het virtuele netwerk is echter niet voldoende. Geef het specifieke subnet op waarin de schaalset-VM's zich moeten bevinden. /subnets/mySubnet Hiervoor voegt u samen met de id van het virtuele netwerk. Het resultaat is de volledig gekwalificeerde id van het subnet. Voer deze samenvoeging uit met de concat functie, die een reeks tekenreeksen opneemt en hun samenvoeging retourneert.

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

Volgende stappen

U kunt de voorgaande sjabloon implementeren met behulp van de Azure Resource Manager-documentatie.

U kunt deze zelfstudiereeks starten vanuit het artikel Eenvoudige schaalsetsjabloon.

U kunt zien hoe u de sjabloon voor basisschaalsetswijzigt om de schaalset te implementeren in een bestaand virtueel netwerk.

U kunt zien hoe u de sjabloon voor de basisschaalsetwijzigt om de schaalset te implementeren met een aangepaste installatiekopieën.

U kunt zien hoe u de sjabloon voor de basisschaalsetwijzigt om een Linux-schaalset te implementeren met automatische schaalaanpassing op basis van gasten.

Raadpleeg de overzichtspagina voor schaalsets voor meer informatie over schaalsets.