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 von 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, gängige 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.

R = 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. - - R - R
storageSku string Der Name der SKU, die für verwaltete Datenträger verwendet werden soll. “StandardSSD_LRS” O - O -
NVMe boolean true, um NVMe-Festplattencontroller zu verwenden, false andernfalls. 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 den Vertrauenswürdigen Start zu aktivieren, false andernfalls. 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 der Datenträgerinhalte 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 Netzwerkschnittstelle der VM angehängt werden soll. - - - R -
acceleratedNetworking boolean true, um beschleunigtes Netzwerk zu aktivieren, false andernfalls. 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” zum Anhängen der Version an den Imagenamen, “timestamp” zum Anhängen der Veröffentlichungszeit. “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

Erstellt einen verwalteten Datenträger.

Benutzerdefinierte Daten für 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-Festplattencontroller zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert sein. false nein
acceleratedNetworking boolean true, um beschleunigtes Netzwerk zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert sein. false nein
trustedLaunch boolean true, um den Vertrauenswürdigen Start zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert sein. false nein
diskAccessId string Die Ressourcen-ID des Datenträgerzugriffs, der beim Hochladen der Datenträgerinhalte verwendet werden soll. Wenn angegeben, wird der Datenträger mit deaktiviertem öffentlichem Netzwerkzugriff erstellt. null nein

Cache-Datenträger-Vorlage

  • 1.2.0.0 – Unterstützung für beschleunigtes Netzwerk und NVMe-Festplattencontroller hinzugefügt
  • 1.1.0.0 – Unterstützung für Vertrauenswürdigen Start 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'), 'NVMe, SCSI', '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 virtuellen Maschine, die im Datenträger verwendet wird. “V2” nein
NVMe boolean true, um NVMe-Festplattencontroller zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert sein. false nein
acceleratedNetworking boolean true, um beschleunigtes Netzwerk zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert sein. false nein
trustedLaunch boolean true, um den Vertrauenswürdigen Start zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert 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.0.0 – Unterstützung für beschleunigtes Netzwerk und NVMe-Festplattencontroller hinzugefügt
  • 1.1.0.0 – Unterstützung für Vertrauenswürdigen Start 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": "NVMe, SCSI"
                }
            }
        ]
    },
    "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 einen verwalteten Datenträger. Diese Vorlage funktioniert mit oder ohne Angabe der Boot-Image-Bereitstellung.

Benutzerdefinierte Daten für Maschine

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 den erstellten Datenträger. “StandardSSD_LRS” nein
generation string Die Generation für die virtuelle Maschine. “V2” nein
NVMe boolean true, um NVMe-Festplattencontroller zu verwenden, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert sein. false nein
acceleratedNetworking boolean true, um beschleunigtes Netzwerk zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert sein. false nein
trustedLaunch boolean true, um den Vertrauenswürdigen Start zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert 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 lokale 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

Maschinen-Vorlage

  • 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 den OS-Datenträger deaktiviert
  • 1.1.0.0 – Unterstützung für Vertrauenswürdigen Start 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-->

Layered Image

Die Layered-Image-Bereitstellung kann zwei Arten von Ressourcen erstellen: eine Galerie-Image-Version und/oder einen verwalteten Datenträger. Beide Ressourcentypen werden unter Verwendung des Namens der zu veröffentlichenden App Layering-Image-Vorlage und ihrer konstruierten Versionsnummer benannt. Die Versionsnummer wird aus den Haupt- und Nebenversionsnummern des Datenträgernamens der App Layering-Image-Vorlage konstruiert. Wenn der Datenträgername 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 Anzahl der Veröffentlichungen). Dem Galerie-Image wird der Name zugewiesen und der Galerie-Image-Version die Versionsnummer. Dem verwalteten Datenträger wird der Name mit angehängter Versionsnummer oder dem aktuellen Zeitstempel zugewiesen, abhängig von diskNameFormat.

Das Galerie-Image und die Version werden in der durch die benutzerdefinierten Daten angegebenen Galerie erstellt. Wenn ein Image mehrmals veröffentlicht wird, wird eine neue Version zum Compute-Galerie-Image hinzugefügt, und die alte Version bleibt erhalten.

Benutzerdefinierte Daten für Layered Image

R = Erforderlich, O = Optional, - = Nicht verwendet

Name Typ Beschreibung Standard Galerie-Image Verwalteter Datenträger
publishAs string or 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. Dies muss für alle Bereitstellungstypen derselbe Wert sein. false O O
acceleratedNetworking boolean true, um beschleunigtes Netzwerk zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert sein. false O O
trustedLaunch boolean true, um den Vertrauenswürdigen Start zu aktivieren, false andernfalls. Dies muss für alle Bereitstellungstypen derselbe Wert 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 des Quelldatenträgers enthalten (wie durch die benutzerdefinierten Daten location angegeben). Die durch die benutzerdefinierten Daten location angegebene Region O -
storageSku string Der Name der zu verwendenden SKU. “StandardSSD_LRS” - O
diskAccessId string Die Ressourcen-ID des Datenträgerzugriffs, der beim Hochladen der Datenträgerinhalte verwendet werden soll. Wenn angegeben, wird der Datenträger mit deaktiviertem öffentlichem Netzwerkzugriff erstellt. null - O
diskNameFormat string Steuert den Namen von Images, die als verwaltete Datenträger veröffentlicht werden. “version” zum Anhängen der Version an den Imagenamen, “timestamp” zum Anhängen der Veröffentlichungszeit. “version” - O

Layered-Image-Vorlage

  • 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
    • Option hinzugefügt, verwaltete Datenträger mit der Veröffentlichungszeit anstelle der Image-Version zu benennen (ähnlich der älteren Benennung)
    • Ein Fehler behoben, der galleryName auch dann als erforderlich kennzeichnete, wenn nicht als Galerie-Image-Version veröffentlicht wurde
  • 1.1.0.0
    • Unterstützung für Vertrauenswürdigen Start hinzugefügt
    • Replikationsanzahl und Zielregionsunterstützung für Galerie-Image-Versionen hinzugefügt
    • Unterstützung für die Veröffentlichung als verwalteter Datenträger 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": "NVMe, SCSI"
                }
            }
        ]
    },
    "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-->
Starter-Vorlagen