Startvorlagen
Dieser Abschnitt enthält einen vollständigen Satz von ARM-Vorlagen, die mit dem Azure Deployments-Connector verwendet werden können. Diese Vorlagen können unverändert verwendet oder an spezifische Anforderungen angepasst werden.
Jede Ressource, die mit diesen Vorlagen erstellt wurde, ist mit demselben Satz von Tags versehen. Diese Tags enthalten nützliche Informationen über den Kontext der Bereitstellung, z. B. den Namen des Benutzers, der die Aufgabe gestartet hat, und den Kommentar, den er eingegeben hat.
Die Vorlagen verwenden in der Connectorkonfigurationin großem Umfang benutzerdefinierte Daten. 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.
In der folgenden Tabelle sind alle benutzerdefinierten Dateneigenschaften aufgeführt, die von diesen Vorlagen verwendet werden. Es 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 | Cachedatenträger | Bootimage | Maschine | Layerimage |
---|---|---|---|---|---|---|---|
Ort | string | Die Region, in der Ressourcen geschaffen werden. | Gleiche Region wie die Zielressourcengruppe. | O | O | O | O |
gallery | string | Der Name der Compute Gallery, in der Images erstellt werden sollen. Die Gallery muss in der Zielressourcengruppe sein. | - | - | R | - | R |
storageSku | string | Der Name der SKU, die für verwaltete Datenträger verwendet werden soll. | “StandardSSD_LRS” | O | - | O | - |
generation | string | Die Generierung 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 wurde. Wenn dies angegeben ist, wird der Datenträger mit deaktiviertem Zugriff auf das öffentliche Netzwerk erstellt. Weitere Informationen finden Sie in der Azure-Dokumentation. | null |
O | - | - | - |
vmSize | string | Die Größe der zu erstellenden VM. | “Standard_D2s_v3” | - | - | O | - |
licenseType | string | Der on-premises Lizenztyp, der auf erstellte virtuelle Maschinen angewendet werden soll. | null |
- | - | O | - |
subnetId | string | Die Ressourcen-ID des Subnetzes, an das die Netzwerkkarte der VM angeschlossen werden soll. | - | - | - | R | - |
replicaCount | number | Die Standardanzahl von Replikaten pro Region der Galerie-Imageversion | 1 | - | - | - | O |
targetRegions | array | Die Zielregionen der Galerie-Imageversion. Dies wird als Array von Regionsnamenzeichenfolgen und/oder targetRegion-Objekten angegeben. Das Array muss die Region des Quelldatenträgers enthalten (die durch die benutzerdefinierten Daten für location angegeben wird). |
Die durch die benutzerdefinierten Daten in location angegebene Region |
- | - | - | O |
publishAs | string oder array | Die Art der Ressource(n), die als Images veröffentlicht werden sollen. Als Array oder Zeichenfolge angegeben, bestehend aus ‘galleryImage’ und/oder ‘managedDisk’ | [“galleryImage”] | - | - | - | 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-->
Cachedatenträger
Erstellt einen verwalteten Datenträger.
Benutzerdefinierte Daten des Cachedatenträgers
Name | Typ | Beschreibung | Standard | Erforderlich |
---|---|---|---|---|
Ort | string | Die Region, in der Ressourcen geschaffen werden. | Gleiche Region wie die Zielressourcengruppe | no |
storageSku | string | Der Name der zu verwendenden SKU. | “StandardSSD_LRS” | no |
trustedLaunch | boolean |
true um Trusted Launch zu aktivieren, andernfalls false . Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
no |
diskAccessId | string | Die Ressourcen-ID des Datenträgerzugriffs, der beim Hochladen des Datenträgerinhalts verwendet werden soll. Wenn angegeben, wird der Datenträger erstellt und der Zugriff auf das öffentliche Netzwerk dabei deaktiviert. | null |
no |
Vorlage für Cachedatenträger
- 1.1.0.0 - Unterstützung für Trusted Launch hinzugefügt
- 1.0.0.0 - Erste Version
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.1.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())]"
},
"resources": [
{
"type": "Microsoft.Compute/disks",
"apiVersion": "2021-08-01",
"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())]"
}
}
]
}
<!--NeedCopy-->
Bootimage
Die Bootimage-Bereitstellung erstellt ein Gallery-Image und eine Imageversion in der Gallery, die in den benutzerdefinierten Daten angegeben sind. Es gibt die ID der erstellten Compute Gallery-Imageversion aus, die von der Machinenvorlage verwendet werden kann.
Benutzerdefinierte Bootimage-Daten
Name | Typ | Beschreibung | Standard | Erforderlich |
---|---|---|---|---|
Ort | string | Die Region, in der Ressourcen geschaffen werden. | Gleiche Region wie die Zielressourcengruppe. | no |
generation | string | Die Generation der virtuellen Maschine, die für den Datenträger verwendet wird. | “V2” | no |
trustedLaunch | boolean |
true um Trusted Launch zu aktivieren, andernfalls false . Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
no |
gallery | string | Der Name der Compute Gallery, in der das Image erstellt werden soll. Die Gallery muss in der Zielressourcengruppe sein. | - | Ja |
Boot-Image-Vorlage
- 1.1.0.0 - Unterstützung für Trusted Launch hinzugefügt
- 1.0.0.0 - Erste Version
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.1.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')]",
"trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]"
},
"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": "[if(variables('trustedLaunch'), createArray(createObject('name', 'SecurityType', 'value', 'TrustedLaunch')), null())]",
"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 Netzwerkkarte und einen verwalteten Datenträger. Diese Vorlage funktioniert mit oder ohne Angabe der Bootimage-Bereitstellung .
Benutzerdefinierte Maschinendaten
Name | Typ | Beschreibung | Standard | Erforderlich |
---|---|---|---|---|
Ort | string | Die Region, in der Ressourcen geschaffen werden. | Gleiche Region wie die Zielressourcengruppe. | no |
storageSku | string | Der Name der SKU für den erstellten Datenträger. | “StandardSSD_LRS” | no |
generation | string | Die Generation für die virtuelle Maschine. | “V2” | no |
trustedLaunch | boolean |
true um Trusted Launch zu aktivieren, andernfalls false . Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
no |
secureBoot | boolean |
true um Secure Boot zu aktivieren, andernfalls false . Dies wird nur angewendet, wenn trustedLaunch auf true gesetzt ist. |
true |
no |
vTpm | boolean |
true um das vTPM zu aktivieren, andernfalls false . Dies wird nur angewendet, wenn trustedLaunch auf true gesetzt ist. |
true |
no |
vmSize | string | Die Größe der zu erstellenden VM. | “Standard_D2s_v3” | no |
licenseType | string | Der on-premises Lizenztyp, der auf die virtuelle Maschine angewendet werden soll. | null |
no |
subnetId | string | Die Ressourcen-ID des Subnetzes, an das die NIC angeschlossen werden soll. | - | Ja |
Maschinenvorlage
- 1.1.0.0 - Unterstützung für Trusted Launch hinzugefügt
- 1.0.0.0 - Erste Version
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.1.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('al-', 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'))]",
"securityProfile": {
"securityType": "TrustedLaunch",
"uefiSettings": {
"secureBootEnabled": "[variables('secureBoot')]",
"vTpmEnabled": "[variables('vTpm')]"
}
}
},
"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": false,
"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"
}
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2021-07-01",
"name": "[variables('vmName')]",
"location": "[variables('location')]",
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]",
"[variables('diskId')]"
],
"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())]",
"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": []
},
"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].', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/virtualMachines', variables('vmName')))]"
}
}
}
<!--NeedCopy-->
Layerimage
Bei der Layered Image-Bereitstellung können zwei Arten von Ressourcen erstellt werden: eine Galerie-Imageversion und/oder einen verwalteten Datenträger. Beide Ressourcentypen werden nach dem Namen der App Layering-Imagevorlage, die veröffentlicht wird, und ihrer erstellten Versionsnummer benannt. Die Versionsnummer wird mithilfe von Haupt- und Nebennummern aus dem Datenträgernamen der App Layering-Imagevorlage erstellt. 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-Imagevorlage (die Häufigkeit, mit der sie veröffentlicht wurde). Dem Galerie-Image wird der Name und der Galerie-Imageversion die Versionsnummer zugewiesen. Dem verwalteten Datenträger wird der Name zugewiesen, an den die Versionsnummer angehängt ist.
Das Galerie-Image und die Version werden in der Galerie erstellt, die in den benutzerdefinierten Daten angegeben ist. Wenn ein Image mehrfach veröffentlicht wird, wird dem Compute Gallery-Image eine neue Version hinzugefügt, und die alte Version bleibt erhalten.
Benutzerdefinierte Daten für Layerimage
R = Erforderlich, O = Optional, - = Nicht verwendet
Name | Typ | Beschreibung | Standard | Galerie-Image | Verwalteter Datenträger |
---|---|---|---|---|---|
publishAs | string oder array | Der Typ der zu erstellenden Ressource(n). Als Array oder Zeichenfolge angegeben, bestehend aus ‘galleryImage’ und/oder ‘managedDisk’ | [“galleryImage”] | O | R |
Ort | string | Die Region, in der Ressourcen geschaffen werden. | Gleiche Region wie die Zielressourcengruppe | O | O |
generation | string | Die Generation der virtuellen Maschine, die das Image unterstützen wird. | “V2” | O | O |
trustedLaunch | boolean |
true um Trusted Launch zu aktivieren, andernfalls false . Dies muss für alle Bereitstellungstypen derselbe Wert sein. |
false |
O | O |
gallery | string | Der Name der Compute Gallery, in der das Image erstellt werden soll. Die Gallery muss in der Zielressourcengruppe sein. | - | R | - |
replicaCount | number | Die Standardanzahl von Replikaten pro Region der Galerie-Imageversion | 1 | O | - |
targetRegions | array | Die Zielregionen der Galerie-Imageversion. Dies wird als Array von Regionsnamenzeichenfolgen und/oder targetRegion-Objekten angegeben. Das Array muss die Region des Quelldatenträgers enthalten (wie in den benutzerdefinierten Daten für location angegeben). |
Die durch die benutzerdefinierten Daten in 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 des Datenträgerinhalts verwendet werden soll. Wenn angegeben, wird der Datenträger erstellt und der Zugriff auf das öffentliche Netzwerk dabei deaktiviert. | null |
- | O |
Layerimagevorlage
- 1.1.0.0
- Unterstützung für Trusted Launch hinzugefügt
- Unterstützung für Replikatanzahl und Zielregion für Galerie-Imageversionen hinzugefügt
- Unterstützung für das Veröffentlichen als verwalteten Datenträger hinzugefügt
- 1.0.0.0 - Erste Version
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.1.0.0",
"parameters": {
"al": {
"type": "object"
}
},
"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": "[variables('custom').gallery]",
"generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
"trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
"replicaCount": "[if(contains(variables('custom'), 'replicaCount'), variables('custom').replicaCount, 1)]",
"targetRegions": "[if(contains(variables('custom'), 'targetRegions'), variables('custom').targetRegions, createArray(variables('location')))]",
"diskName": "[format('{0}_{1}-{2}-{3}', variables('name'), variables('major'), variables('minor'), parameters('al').context.item.version.number)]",
"hasDiskAccess": "[contains(variables('custom'), 'diskAccessId')]",
"storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_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()))))]"
},
"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": "[if(variables('trustedLaunch'), createArray(createObject('name', 'SecurityType', 'value', 'TrustedLaunch')), null())]",
"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')]",
"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-->