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 vmss
bevatten 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
, apiVersion
en location
vereisttype
. De eerste resource van dit voorbeeld heeft het type Microsoft.Network/virtualNetwork, de naam myVnet
en 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 type
eigenschappen , name
, apiVersion
en 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, Manual
en Automatic
Rolling
. 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.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor