Starter-Vorlagen
Dieser Abschnitt enthält einen vollständigen Satz von ARM-Vorlagen, die mit dem Azure Deployments-Konnektor verwendet werden können. Diese Vorlagen können unverändert verwendet oder an spezifische Anforderungen angepasst werden.
Jede Ressource, die mit diesen Vorlagen erstellt wird, ist mit demselben Satz von Tags versehen. Diese Tags enthalten nützliche Informationen über den Kontext der Bereitstellung, wie z. B. den Namen des Benutzers, der die Aufgabe gestartet hat, und den von ihm eingegebenen Kommentar.
Die Vorlagen nutzen benutzerdefinierte Daten in der Konnektorkonfiguration umfassend. Benutzerdefinierte Daten ermöglichen es dem Benutzer, allgemeine Parameter wie location, vmSize, generation und andere Parameter zu definieren, ohne die Vorlage ändern zu müssen.
Die folgende Tabelle listet alle benutzerdefinierten Dateneigenschaften auf, die von diesen Vorlagen verwendet werden. Sie gibt an, welche Vorlagen für jede Eigenschaft gelten und ob die Eigenschaft erforderlich ist.
E = Erforderlich, O = Optional, - = Nicht verwendet
| Name | Typ | Beschreibung | Standard | Cache-Datenträger | Boot-Image | Maschine | Layered Image |
|---|---|---|---|---|---|---|---|
| location | string | Die Region, in der Ressourcen erstellt werden. | Dieselbe Region wie die Zielressourcengruppe. | O | O | O | O |
| gallery | string | Der Name der Compute-Galerie, in der Images erstellt werden sollen. Die Galerie muss sich in der Zielressourcengruppe befinden. | - | - | E | - | E |
| storageSku | string | Der Name der SKU, die für verwaltete Datenträger verwendet werden soll. | “StandardSSD_LRS” | O | - | O | - |
| NVMe | boolean |
true, um NVMe-Datenträgercontroller zu verwenden, andernfalls false. Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
O | O | O | O |
| generation | string | Die Generation der virtuellen Maschine. | “V2” | - | O | O | O |
| trustedLaunch | boolean |
true, um Trusted Launch zu aktivieren, andernfalls false. Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
O | O | O | O |
| diskAccessId | string | Die Ressourcen-ID des Datenträgerzugriffs, der beim Hochladen des Datenträgerinhalts verwendet wird. Wenn dies angegeben ist, wird der Datenträger mit deaktiviertem öffentlichem Netzwerkzugriff erstellt. Weitere Informationen finden Sie in der Azure-Dokumentation. | null |
O | - | - | - |
| vmSize | string | Die Größe der zu erstellenden VM. | “Standard_D2s_v3” | - | - | O | - |
| prefix | string | Ein Präfix, das dem Namen der durch die Maschinenbereitstellung erstellten Ressourcen vorangestellt wird | “al-“ | - | - | O | - |
| licenseType | string | Der lokale Lizenztyp, der auf erstellte virtuelle Maschinen angewendet werden soll. | null |
- | - | O | - |
| subnetId | string | Die Ressourcen-ID des Subnetzes, an das die Netzwerkkarte der VM angehängt werden soll. | - | - | E | - | |
| acceleratedNetworking | boolean |
true, um beschleunigtes Netzwerk zu aktivieren, andernfalls false. Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
O | O | O | O |
| replicaCount | number | Die Standardanzahl der Replikate pro Region der Galerie-Image-Version | 1 | - | - | - | O |
| imageStorageAccountType | string | Gibt den Speicherkontotyp an, der zum Speichern des Images verwendet werden soll. | “Standard_LRS” | - | - | - | O |
| targetRegions | array | Die Zielregionen der Galerie-Image-Version. Dies wird als Array von Regionsnamen-Strings und/oder TargetRegion-Objekten angegeben. Das Array muss die Region des Quelldatenträgers enthalten (die durch die benutzerdefinierten Daten location angegeben wird). |
Die durch die benutzerdefinierten Daten location angegebene Region |
- | - | - | O |
| publishAs | string or array | Der Typ der Ressource(n), als die Images veröffentlicht werden sollen. Angegeben als Array oder String, bestehend aus ‘galleryImage’ und/oder ‘managedDisk’ | [“galleryImage”] | - | - | - | O |
| diskNameFormat | string | Steuert den Namen von Images, die als verwaltete Datenträger veröffentlicht werden. “version”, um die Version an den Imagenamen anzuhängen, “timestamp”, um die Veröffentlichungszeit anzuhängen. | “version” | - | - | - | O |
Beispiel für benutzerdefinierte Daten:
{
"gallery": "MyGallery",
"subnetId": "/subscriptions/ab3d1259-f5a9-407f-bbdd-bfd5701e2e94/resourceGroups/PDGTPB/providers/Microsoft.Network/virtualNetworks/MyVnet/subnets/mysubnet"
}
<!--NeedCopy-->
Ein weiteres Beispiel für benutzerdefinierte Daten:
{
"location": "eastus",
"gallery": "MyGallery",
"storageSku": "Premium_LRS",
"trustedLaunch": true,
"diskAccessId": "/subscriptions/ab3d1259-f5a9-407f-bbdd-bfd5701e2e94/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/diskAccesses/MyDiskAccess",
"vmSize": "Standard_D4s_v3",
"subnetId": "/subscriptions/ab3d1259-f5a9-407f-bbdd-bfd5701e2e94/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVnet/subnets/mysubnet",
"replicaCount": 2,
"targetRegions": [
"eastus",
{
"name": "eastus2",
"regionalReplicaCount": 5,
"storageAccountType": "Premium_LRS"
},
"westus"
]
}
<!--NeedCopy-->
Cache-Datenträger
| Name | Typ | Beschreibung | Standard | Erforderlich |
|---|---|---|---|---|
| location | string | Die Region, in der Ressourcen erstellt werden. | Dieselbe Region wie die Zielressourcengruppe | nein |
| storageSku | string | Der Name der zu verwendenden SKU. | “StandardSSD_LRS” | nein |
| NVMe | boolean |
true, um NVMe-Datenträgercontroller zu aktivieren, andernfalls false. Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
nein |
| acceleratedNetworking | boolean |
true, um beschleunigtes Netzwerk zu aktivieren, andernfalls false. Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
nein |
| trustedLaunch | boolean |
true, um Trusted Launch zu aktivieren, andernfalls false. Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
nein |
| diskAccessId | string | Die Ressourcen-ID des Datenträgerzugriffs, der beim Hochladen des Datenträgerinhalts verwendet werden soll. Wenn angegeben, wird der Datenträger mit deaktiviertem öffentlichem Netzwerkzugriff erstellt. | null |
nein |
Cache-Datenträger-Vorlage
- 1.2.1.0 – Behebung eines Fehlers, der verhinderte, dass eine zweite Version eines Images veröffentlicht wurde, wenn NVMe aktiviert war
- 1.2.0.0 – Unterstützung für beschleunigtes Netzwerk und NVMe-Datenträgercontroller hinzugefügt
- 1.1.0.0 – Unterstützung für Trusted Launch hinzugefügt
- 1.0.0.0 – Erstversion
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.2.0.0",
"parameters": {
"al": {
"type": "object"
}
},
"variables": {
"custom": "[parameters('al').context.config.custom]",
"location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
"name": "[concat(parameters('al').context.item.name,'-', parameters('al').context.item.id)]",
"tags": {
"alTaskId": "[parameters('al').context.taskId]",
"alUser": "[parameters('al').context.user]",
"alComment": "[parameters('al').context.comment]",
"alItemType": "[parameters('al').context.item.type]",
"alItemId": "[parameters('al').context.item.id]",
"alItemName": "[parameters('al').context.item.name]",
"alItemVersion": "[parameters('al').context.item.version.name]",
"alConfigId": "[parameters('al').context.config.id]",
"alConfigName": "[parameters('al').context.config.name]"
},
"hasDiskAccess": "[contains(variables('custom'), 'diskAccessId')]",
"storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_LRS')]",
"trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
"acceleratedNetworking": "[if(contains(variables('custom'), 'acceleratedNetworking'), variables('custom').acceleratedNetworking, false())]",
"NVMe": "[if(contains(variables('custom'), 'NVMe'), variables('custom').NVMe, false())]"
},
"resources": [
{
"type": "Microsoft.Compute/disks",
"apiVersion": "2024-03-02",
"name": "[variables('name')]",
"location": "[variables('location')]",
"tags": "[variables('tags')]",
"sku": {
"name": "[variables('storageSku')]"
},
"properties": {
"creationData": {
"createOption": "Upload",
"uploadSizeBytes": "[parameters('al').input.uploadSize]"
},
"incremental": "false",
"diskAccessId": "[if(variables('hasDiskAccess'), variables('custom').diskAccessId, null())]",
"networkAccessPolicy": "[if(variables('hasDiskAccess'), 'AllowPrivate', 'AllowAll')]",
"publicNetworkAccess": "[if(variables('hasDiskAccess'), 'Disabled', 'Enabled')]",
"securityProfile": "[if(variables('trustedLaunch'), createObject('securityType', 'TrustedLaunch'), null())]",
"supportedCapabilities": {
"diskControllerTypes": "[if(variables('NVMe'), 'SCSI, NVMe', 'SCSI')]",
"acceleratedNetwork": "[variables('acceleratedNetworking')]"
}
- }
- }
- ]
- }
<!--NeedCopy-->
Boot-Image
Die Boot-Image-Bereitstellung erstellt ein Galerie-Image und eine Image-Version in der durch die benutzerdefinierten Daten angegebenen Galerie. Sie gibt die ID der erstellten Compute-Galerie-Image-Version zur Verwendung durch die Maschinen-Vorlage aus.
Benutzerdefinierte Daten für Boot-Image
| Name | Typ | Beschreibung | Standard | Erforderlich |
|---|---|---|---|---|
| location | string | Die Region, in der Ressourcen erstellt werden. | Dieselbe Region wie die Zielressourcengruppe. | nein |
| generation | string | Die Generation der in der Festplatte verwendeten virtuellen Maschine. | “V2” | nein |
| NVMe | boolean |
true, um NVMe-Festplattencontroller zu aktivieren, false andernfalls. Dieser Wert muss für alle Bereitstellungstypen gleich sein. |
false |
nein |
| acceleratedNetworking | boolean |
true, um beschleunigtes Netzwerk zu aktivieren, false andernfalls. Dieser Wert muss für alle Bereitstellungstypen gleich sein. |
false |
nein |
| trustedLaunch | boolean |
true, um Trusted Launch zu aktivieren, false andernfalls. Dieser Wert muss für alle Bereitstellungstypen gleich sein. |
false |
nein |
| gallery | string | Der Name der Compute-Galerie, in der das Image erstellt werden soll. Die Galerie muss sich in der Zielressourcengruppe befinden. | - | ja |
Boot-Image-Vorlage
- 1.2.1.0 – Ein Fehler wurde behoben, der verhinderte, dass eine zweite Version eines Images veröffentlicht wurde, wenn NVMe aktiviert war
- 1.2.0.0 – Unterstützung für beschleunigtes Netzwerk und NVMe-Festplattencontroller hinzugefügt
- 1.1.0.0 – Unterstützung für Trusted Launch hinzugefügt
- 1.0.0.0 – Erstversion
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.2.0.0",
"parameters": {
"al": {
"type": "object"
}
},
"variables": {
"custom": "[parameters('al').context.config.custom]",
"location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
"tags": {
"alTaskId": "[parameters('al').context.taskId]",
"alUser": "[parameters('al').context.user]",
"alComment": "[parameters('al').context.comment]",
"alItemType": "[parameters('al').context.item.type]",
"alItemId": "[parameters('al').context.item.id]",
"alItemName": "[parameters('al').context.item.name]",
"alItemVersion": "[parameters('al').context.item.version.name]",
"alConfigId": "[parameters('al').context.config.id]",
"alConfigName": "[parameters('al').context.config.name]"
},
"name": "[concat(parameters('al').context.item.name, '.', replace(parameters('al').context.config.id, '-', ''), '.', parameters('al').context.item.id)]",
"version": "[parameters('al').context.item.version.name]",
"galleryName": "[variables('custom').gallery]",
"generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
"acceleratedNetworking": "[if(contains(variables('custom'), 'acceleratedNetworking'), variables('custom').acceleratedNetworking, false())]",
"NVMe": "[if(contains(variables('custom'), 'NVMe'), variables('custom').NVMe, false())]",
"trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
"possibleFeatures": [
{
"include": "[variables('trustedLaunch')]",
"feature": {
"name": "SecurityType",
"value": "TrustedLaunch"
}
},
{
"include": "[variables('acceleratedNetworking')]",
"feature": {
"name": "IsAcceleratedNetworkSupported",
"value": "True"
}
},
{
"include": "[variables('NVMe')]",
"feature": {
"name": "DiskControllerTypes",
"value": "SCSI, NVMe"
}
}
]
},
"resources": [
{
"type": "Microsoft.Compute/galleries/images",
"name": "[concat(variables('galleryName'), '/', variables('name'))]",
"apiVersion": "2021-07-01",
"location": "[variables('location')]",
"tags": "[variables('tags')]",
"properties": {
"description": "[parameters('al').context.item.description]",
"features": "[map(filter(variables('possibleFeatures'), lambda('x', lambdaVariables('x').include)), lambda('x', lambdaVariables('x').feature))]",
"hyperVGeneration": "[variables('generation')]",
"osType": "Windows",
"osState": "Specialized",
"endOfLifeDate": "2030-01-01T00:00:00Z",
"identifier": {
"publisher": "Citrix",
"offer": "[parameters('al').context.config.id]",
"sku": "[parameters('al').context.item.id]"
}
},
"resources": [
{
"type": "versions",
"apiVersion": "2021-07-01",
"name": "[variables('version')]",
"location": "[variables('location')]",
"dependsOn": [
"[resourceId('Microsoft.Compute/galleries/images', variables('galleryName'), variables('name'))]"
],
"tags": "[variables('tags')]",
"properties": {
"publishingProfile": {
"replicaCount": 1,
"targetRegions": [
{
"name": "[variables('location')]"
}
]
},
"storageProfile": {
"osDiskImage": {
"source": {
"id": "[parameters('al').input.source.diskId]"
}
}
}
}
}
]
}
],
"outputs": {
"id": {
- "type": "string",
- "value": "[resourceId('Microsoft.Compute/galleries/images/versions', variables('galleryName'), variables('name'), variables('version'))]"
- }
- }
- }
<!--NeedCopy-->
- ## Maschine
Die Maschinenbereitstellung erstellt eine virtuelle Maschine, eine NIC und eine verwaltete Festplatte. Diese Vorlage funktioniert mit oder ohne Angabe der Boot-Image-Bereitstellung.
Maschinenspezifische Daten
| Name | Typ | Beschreibung | Standard | Erforderlich |
|---|---|---|---|---|
| location | string | Die Region, in der Ressourcen erstellt werden. | Dieselbe Region wie die Zielressourcengruppe. | nein |
| storageSku | string | Der Name der SKU für die erstellte Festplatte. | “StandardSSD_LRS” | nein |
| generation | string | Die Generation für die virtuelle Maschine. | “V2” | nein |
| NVMe | boolean |
true, um NVMe-Festplattencontroller zu verwenden, false andernfalls. Dieser Wert muss für alle Bereitstellungstypen gleich sein. |
false |
nein |
| acceleratedNetworking | boolean |
true, um beschleunigtes Netzwerk zu aktivieren, false andernfalls. Dieser Wert muss für alle Bereitstellungstypen gleich sein. |
false |
nein |
| trustedLaunch | boolean |
true, um Trusted Launch zu aktivieren, false andernfalls. Dieser Wert muss für alle Bereitstellungstypen gleich sein. |
false |
nein |
| secureBoot | boolean |
true, um Secure Boot zu aktivieren, false andernfalls. Dies wird nur angewendet, wenn trustedLaunch auf true gesetzt ist. |
true |
nein |
| vTpm | boolean |
true, um das vTPM zu aktivieren, false andernfalls. Dies wird nur angewendet, wenn trustedLaunch auf true gesetzt ist. |
true |
nein |
| vmSize | string | Die Größe der zu erstellenden VM. | “Standard_D2s_v3” | nein |
| licenseType | string | Der On-Premises-Lizenztyp, der auf die virtuelle Maschine angewendet werden soll. | null |
nein |
| subnetId | string | Die Ressourcen-ID des Subnetzes, an das die NIC angehängt werden soll. | - | ja |
| prefix | string | Ein Präfix, das dem Namen der erstellten Ressourcen vorangestellt wird | “al-“ | nein |
Maschinenvorlage
- 1.2.0.0
- Unterstützung für beschleunigtes Netzwerk hinzugefügt
- Unterstützung für NVMe-Festplattencontroller hinzugefügt
- Unterstützung für IPS-Export hinzugefügt
- Möglichkeit hinzugefügt, das Präfix anzupassen, das den Ressourcennamen vorangestellt wird
- Die IP-Adresse zur Nachricht hinzugefügt, die in der App Layering-Unteraufgabe angezeigt wird
- Netzwerkzugriff auf die OS-Festplatte deaktiviert
- 1.1.0.0 – Unterstützung für Trusted Launch hinzugefügt
- 1.0.0.0 – Erstversion
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.2.0.0",
"parameters": {
"al": {
"type": "object"
}
},
"variables": {
"custom": "[parameters('al').context.config.custom]",
"location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
"prefix": "[if(contains(variables('custom'), 'prefix'), variables('custom').prefix, 'al-')]",
"name": "[concat(variables('prefix'), parameters('al').context.taskId)]",
"vmName": "[concat(variables('name'), '-vm')]",
"nicName": "[concat(variables('name'), '-nic')]",
"diskName": "[concat(variables('name'), '-disk')]",
"diskId": "[resourceId('Microsoft.Compute/disks', variables('diskName'))]",
"tags": {
"alTaskId": "[parameters('al').context.taskId]",
"alUser": "[parameters('al').context.user]",
"alComment": "[parameters('al').context.comment]",
"alItemType": "[parameters('al').context.item.type]",
"alItemId": "[parameters('al').context.item.id]",
"alItemName": "[parameters('al').context.item.name]",
"alItemVersion": "[parameters('al').context.item.version.name]",
"alConfigId": "[parameters('al').context.config.id]",
"alConfigName": "[parameters('al').context.config.name]"
},
"source": "[parameters('al').input.disk.image]",
"isFromImage": "[not(contains(variables('source'), 'diskId'))]",
"generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
"vmSize": "[if(contains(variables('custom'), 'vmSize'), variables('custom').vmSize, 'Standard_D2s_v3')]",
"storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_LRS')]",
"trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
"secureBoot": "[if(contains(variables('custom'), 'secureBoot'), variables('custom').secureBoot, variables('trustedLaunch'))]",
"vTpm": "[if(contains(variables('custom'), 'vTpm'), variables('custom').vTpm, variables('trustedLaunch'))]",
"acceleratedNetworking": "[if(contains(variables('custom'), 'acceleratedNetworking'), variables('custom').acceleratedNetworking, false())]",
"NVMe": "[if(contains(variables('custom'), 'NVMe'), variables('custom').NVMe, false())]",
"securityProfile": {
"securityType": "TrustedLaunch",
"uefiSettings": {
"secureBootEnabled": "[variables('secureBoot')]",
"vTpmEnabled": "[variables('vTpm')]"
}
},
"dataDiskTemplate": {
"createOption": "Attach",
"deleteOption": "Delete",
"managedDisk": {
"id": "ToBeReplaced"
}
},
"dataDiskName": "[concat(variables('name'), '-disk{0}')]",
"additionalDisks": "[if(contains(parameters('al').input, 'additionalDisks'), parameters('al').input.additionalDisks, createArray())]",
"additionalDiskIds": "[map(variables('additionalDisks'), lambda('x', lambdaVariables('x').diskId))]",
"dataDiskIds": "[map(variables('additionalDiskIds'), lambda('x', 'i', resourceId('Microsoft.Compute/disks',format(variables('dataDiskName'), lambdaVariables('i')))))]"
},
"resources": [
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2020-11-01",
"name": "[variables('nicName')]",
"location": "[variables('location')]",
"tags": "[variables('tags')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('custom').subnetId]"
},
"primary": true,
"privateIPAddressVersion": "IPv4"
}
}
],
"dnsSettings": {
"dnsServers": []
},
"enableAcceleratedNetworking": "[variables('acceleratedNetworking')]",
"enableIPForwarding": false
}
},
{
"condition": "[not(variables('isFromImage'))]",
"type": "Microsoft.Compute/disks",
"apiVersion": "2021-08-01",
"name": "[variables('diskName')]",
"location": "[variables('location')]",
"tags": "[variables('tags')]",
"sku": {
"name": "[variables('storageSku')]"
},
"properties": {
"osType": "Windows",
"hyperVGeneration": "[variables('generation')]",
"creationData": {
"createOption": "Copy",
"sourceResourceId": "[variables('source').diskId]"
},
"diskSizeGB": "[parameters('al').input.disk.size]",
"networkAccessPolicy": "DenyAll",
"publicNetworkAccess": "Disabled",
"supportedCapabilities": {
"acceleratedNetwork": "[variables('acceleratedNetworking')]"
}
}
},
{
"copy": {
"name": "data-disk-loop",
"count": "[length(variables('additionalDiskIds'))]",
"mode": "Parallel"
},
"type": "Microsoft.Compute/disks",
"apiVersion": "2021-08-01",
"name": "[format(variables('dataDiskName'), copyIndex())]",
"location": "[variables('location')]",
"tags": "[variables('tags')]",
"sku": {
"name": "[variables('storageSku')]"
},
"properties": {
"creationData": {
"createOption": "Copy",
"sourceResourceId": "[variables('additionalDiskIds')[copyIndex()]]"
},
"networkAccessPolicy": "DenyAll",
"publicNetworkAccess": "Disabled"
}
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2022-08-01",
"name": "[variables('vmName')]",
"location": "[variables('location')]",
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]",
"[variables('diskId')]",
"data-disk-loop"
],
"tags": "[variables('tags')]",
"properties": {
"hardwareProfile": {
"vmSize": "[variables('vmSize')]"
},
"securityProfile": "[if(variables('trustedLaunch'), variables('securityProfile'), null())]",
"storageProfile": {
"imageReference": "[if(variables('isFromImage'), createObject('id', variables('source').id), null())]",
"diskControllerType": "[if(variables('NVMe'), 'NVMe', null())]",
"osDisk": {
"osType": "Windows",
"createOption": "[if(variables('isFromImage'), 'FromImage', 'Attach')]",
"caching": "ReadWrite",
"deleteOption": "Delete",
"diskSizeGB": "[parameters('al').input.disk.size]",
"managedDisk": "[if(variables('isFromImage'), createObject('storageAccountType', variables('storageSku')), createObject('id', variables('diskId')))]"
},
"dataDisks": "[map(variables('dataDiskIds'), lambda('x', 'i', union(variables('dataDiskTemplate'), createObject('lun', lambdaVariables('i'), 'managedDisk', createObject('id', lambdaVariables('x'))))))]"
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]"
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true
}
},
"licenseType": "[if(contains(variables('custom'), 'licenseType'), variables('custom').licenseType, null())]",
"userData": "[parameters('al').input.vm.userData]"
}
}
],
"outputs": {
- "diskId": {
- "type": "string",
- "value": "[reference(variables('vmName')).storageProfile.osDisk.managedDisk.id]"
- },
- "message": {
- "type": "string",
- "value": "[format('See [link=\"{0}/#@{1}/resource/{2}\"]{2}[/link]. IP Address: {3}', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/virtualMachines', variables('vmName')), reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress)]"
- }
- }
- }
<!--NeedCopy-->
Geschichtetes Image
Die Bereitstellung eines geschichteten Images kann zwei Arten von Ressourcen erstellen: eine Galerie-Image-Version und/oder eine verwaltete Festplatte. Beide Ressourcentypen werden unter Verwendung des Namens der App Layering-Image-Vorlage, die veröffentlicht wird, und ihrer konstruierten Versionsnummer benannt. Die Versionsnummer wird aus den Haupt- und Nebenversionsnummern des App Layering-Image-Vorlagen-Festplattennamens konstruiert. Wenn der Festplattenname nicht als numerische Version (number.number) formatiert ist, wird standardmäßig 1.0 angewendet. Die Patch-Nummer ist die Versionsnummer der App Layering-Image-Vorlage (die Häufigkeit, mit der sie veröffentlicht wurde). Das Galerie-Image erhält den Namen und die Galerie-Image-Version erhält die Versionsnummer. Die verwaltete Festplatte erhält den Namen, dem die Versionsnummer oder der aktuelle Zeitstempel angehängt wird, abhängig von diskNameFormat.
Das Galerie-Image und die Version werden in der Galerie erstellt, die durch die benutzerdefinierten Daten angegeben wird. Wenn ein Image mehrmals veröffentlicht wird, wird der Compute-Galerie ein neues Image hinzugefügt, und die alte Version bleibt erhalten.
Geschichtete Image-Benutzerdaten
R = Erforderlich, O = Optional, - = Nicht verwendet
| Name | Typ | Beschreibung | Standard | Galerie-Image | Verwaltete Festplatte |
|---|---|---|---|---|---|
| publishAs | string oder array | Der Typ der zu erstellenden Ressource(n). Angegeben als Array oder String, bestehend aus ‘galleryImage’ und/oder ‘managedDisk’ | [“galleryImage”] | O | R |
| location | string | Die Region, in der Ressourcen erstellt werden. | Dieselbe Region wie die Zielressourcengruppe | O | O |
| generation | string | Die Generation der virtuellen Maschine, die das Image unterstützen wird. | “V2” | O | O |
| NVMe | boolean |
true, um NVMe-Festplattencontroller zu aktivieren, false andernfalls. Dieser Wert muss für alle Bereitstellungstypen gleich sein. |
false |
O | O |
| acceleratedNetworking | boolean |
true, um beschleunigtes Netzwerk zu aktivieren, false andernfalls. Dieser Wert muss für alle Bereitstellungstypen gleich sein. |
false |
O | O |
| trustedLaunch | boolean |
true, um Trusted Launch zu aktivieren, false andernfalls. Dieser Wert muss für alle Bereitstellungstypen gleich sein. |
false |
O | O |
| gallery | string | Der Name der Compute-Galerie, in der das Image erstellt werden soll. Die Galerie muss sich in der Zielressourcengruppe befinden. | - | R | - |
| replicaCount | number | Die Standardanzahl der Replikate pro Region der Galerie-Image-Version | 1 | O | - |
| imageStorageAccountType | string | Gibt den Speicherkontotyp an, der zum Speichern des Images verwendet werden soll. | “Standard_LRS” | O | - |
| targetRegions | array | Die Zielregionen der Galerie-Image-Version. Dies wird als Array von Regionsnamen-Strings und/oder TargetRegion-Objekten angegeben. Das Array muss die Region der Quellfestplatte (wie durch die location-Benutzerdaten angegeben) enthalten. |
Die durch die location-Benutzerdaten angegebene Region |
O | - |
| storageSku | string | Der Name der zu verwendenden SKU. | “StandardSSD_LRS” | - | O |
| diskAccessId | string | Die Ressourcen-ID des Festplattenzugriffs, der beim Hochladen des Festplatteninhalts verwendet werden soll. Wenn angegeben, wird die Festplatte mit deaktiviertem öffentlichem Netzwerkzugriff erstellt. | null |
- | O |
| diskNameFormat | string | Steuert den Namen von Images, die als verwaltete Festplatten veröffentlicht werden. “version”, um die Version an den Imagenamen anzuhängen, “timestamp”, um die Veröffentlichungszeit anzuhängen. | “version” | - | O |
Geschichtete Image-Vorlage
- 1.2.1.0 – Ein Fehler wurde behoben, der verhinderte, dass eine zweite Version eines Images veröffentlicht wurde, wenn NVMe aktiviert war
- 1.2.0.0
- Unterstützung für beschleunigtes Netzwerk hinzugefügt
- Unterstützung für NVMe-Festplattencontroller hinzugefügt
- Möglichkeit hinzugefügt, den Speicherkontotyp von Galerie-Image-Versionen anzugeben
- Wahl hinzugefügt, verwaltete Festplatten mit der Veröffentlichungszeit anstelle der Image-Version zu benennen (ähnlich der älteren Benennung)
- Ein Fehler wurde behoben, der
galleryNameauch dann als erforderlich kennzeichnete, wenn nicht als Galerie-Image-Version veröffentlicht wurde
- 1.1.0.0
- Unterstützung für Trusted Launch hinzugefügt
- Unterstützung für Replikationsanzahl und Zielregion für Galerie-Image-Versionen hinzugefügt
- Unterstützung für die Veröffentlichung als verwaltete Festplatte hinzugefügt
- 1.0.0.0 – Erstversion
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.2.0.0",
"parameters": {
"al": {
"type": "object"
},
"timestamp": {
"type": "string",
"defaultValue": "[utcNow('yyyy-MM-dd_HH-mm-ss')]"
}
},
"variables": {
"invalidChars": [ " ", "(", ")", "[[", "]", "{", "}", "!", "@", "#", "$", "%", "^", "&", "*", "+", "/", "\\", "'", "\"", "|", "`", "~", "<", ">", ",", "?", "*" ],
"numericChars": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ],
"custom": "[parameters('al').context.config.custom]",
"location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
"name": "[join(split(parameters('al').context.item.name, variables('invalidChars')), '_')]",
"tags": {
"alTaskId": "[parameters('al').context.taskId]",
"alUser": "[parameters('al').context.user]",
"alComment": "[parameters('al').context.comment]",
"alItemType": "[parameters('al').context.item.type]",
"alItemId": "[parameters('al').context.item.id]",
"alItemName": "[parameters('al').context.item.name]",
"alItemVersion": "[parameters('al').context.item.version.name]",
"alConfigId": "[parameters('al').context.config.id]",
"alConfigName": "[parameters('al').context.config.name]"
},
"splitVer": "[split(parameters('al').input.diskName, '.')]",
"major": "[if(equals(0, length(join(split(variables('splitVer')[0], variables('numericChars')), ''))), variables('splitVer')[0], '1')]",
"minor": "[if(greater(length(variables('splitVer')), 1), if(equals(0, length(join(split(variables('splitVer')[1], variables('numericChars')), ''))), variables('splitVer')[1], '0'), '0')]",
"version": "[format('{0}.{1}.{2}', variables('major'), variables('minor'), parameters('al').context.item.version.number)]",
"galleryName": "[if(contains(variables('custom'), 'gallery'), variables('custom').gallery, 'galleryName.required.in.custom.data')]",
"generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
"trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
"acceleratedNetworking": "[if(contains(variables('custom'), 'acceleratedNetworking'), variables('custom').acceleratedNetworking, false())]",
"NVMe": "[if(contains(variables('custom'), 'NVMe'), variables('custom').NVMe, false())]",
"replicaCount": "[if(contains(variables('custom'), 'replicaCount'), variables('custom').replicaCount, 1)]",
"targetRegions": "[if(contains(variables('custom'), 'targetRegions'), variables('custom').targetRegions, createArray(variables('location')))]",
"diskNames": {
"version": "[format('{0}_{1}-{2}-{3}', variables('name'), variables('major'), variables('minor'), parameters('al').context.item.version.number)]",
"timestamp": "[format('{0}_{1}', variables('name'), parameters('timestamp'))]"
},
"diskName": "[variables('diskNames')[coalesce(tryGet(variables('custom'), 'diskNameFormat'), 'version')]]",
"hasDiskAccess": "[contains(variables('custom'), 'diskAccessId')]",
"storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_LRS')]",
"imageStorageAccountType": "[coalesce(tryGet(variables('custom'), 'imageStorageAccountType'), 'Standard_LRS')]",
"publishAs": "[if(contains(variables('custom'), 'publishAs'), variables('custom').publishAs, createArray('galleryImage'))]",
"galleryLink": "[format('[link=\"{0}/#@{1}/resource/{2}\"]{2}[/link].', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/galleries/images/versions', variables('galleryName'), variables('name'), variables('version')))]",
"diskLink": "[format('[link=\"{0}/#@{1}/resource/{2}\"]{2}[/link].', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/disks', variables('diskName')))]",
"outputLinks": "[filter(createArray(if(contains(variables('publishAs'), 'galleryImage'), variables('galleryLink'), null()), if(contains(variables('publishAs'), 'managedDisk'), variables('diskLink'), null())), lambda('link', not(equals(lambdaVariables('link'), null()))))]",
"possibleFeatures": [
{
"include": "[variables('trustedLaunch')]",
"feature": {
"name": "SecurityType",
"value": "TrustedLaunch"
}
},
{
"include": "[variables('acceleratedNetworking')]",
"feature": {
"name": "IsAcceleratedNetworkSupported",
"value": "True"
}
},
{
"include": "[variables('NVMe')]",
"feature": {
"name": "DiskControllerTypes",
"value": "SCSI, NVMe"
}
}
]
},
"resources": [
{
"condition": "[contains(variables('publishAs'), 'galleryImage')]",
"type": "Microsoft.Compute/galleries/images",
"name": "[format('{0}/{1}', variables('galleryName'), variables('name'))]",
"apiVersion": "2021-07-01",
"location": "[variables('location')]",
"properties": {
"description": "[parameters('al').context.item.description]",
"features": "[map(filter(variables('possibleFeatures'), lambda('x', lambdaVariables('x').include)), lambda('x', lambdaVariables('x').feature))]",
"hyperVGeneration": "[variables('generation')]",
"osType": "Windows",
"osState": "Specialized",
"endOfLifeDate": "2030-01-01T00:00:00Z",
"identifier": {
"publisher": "AppLayering",
"offer": "[variables('name')]",
"sku": "[variables('generation')]"
}
},
"tags": "[variables('tags')]",
"resources": [
{
"condition": "[contains(variables('publishAs'), 'galleryImage')]",
"type": "versions",
"apiVersion": "2022-03-03",
"name": "[variables('version')]",
"location": "[variables('location')]",
"dependsOn": [
"[resourceId('Microsoft.Compute/galleries/images', variables('galleryName'), variables('name'))]"
],
"tags": "[variables('tags')]",
"properties": {
"publishingProfile": {
"replicaCount": "[variables('replicaCount')]",
"storageAccountType": "[variables('imageStorageAccountType')]",
"targetRegions": "[map(variables('targetRegions'), lambda('item', if(contains(lambdaVariables('item'), 'name'), lambdaVariables('item'), createObject('name', lambdaVariables('item')))))]"
},
"storageProfile": {
"osDiskImage": {
"source": {
"id": "[parameters('al').input.source.diskId]"
}
}
}
}
}
]
},
{
"condition": "[contains(variables('publishAs'), 'managedDisk')]",
"type": "Microsoft.Compute/disks",
"apiVersion": "2021-08-01",
"name": "[variables('diskName')]",
"location": "[variables('location')]",
"tags": "[variables('tags')]",
"sku": {
"name": "[variables('storageSku')]"
},
"properties": {
"osType": "Windows",
"hyperVGeneration": "[variables('generation')]",
"creationData": {
"createOption": "Copy",
"sourceResourceId": "[parameters('al').input.source.diskId]"
},
"diskAccessId": "[if(variables('hasDiskAccess'), variables('custom').diskAccessId, null())]",
"networkAccessPolicy": "[if(variables('hasDiskAccess'), 'AllowPrivate', 'AllowAll')]",
"publicNetworkAccess": "[if(variables('hasDiskAccess'), 'Disabled', 'Enabled')]"
}
}
],
"outputs": {
"message": {
"type": "string",
"value": "[if(empty(variables('outputLinks')), null(), format('See {0}.', join(variables('outputLinks'), ' and ')))]"
}
}
}
<!--NeedCopy-->