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 wird, ist mit demselben Satz von Tags versehen. Diese Tags enthalten nützliche Informationen über den Kontext der Bereitstellung, wie den Namen des Benutzers, der die Aufgabe gestartet hat, und den von ihm eingegebenen Kommentar.
Die Vorlagen nutzen benutzerdefinierte Daten in der Connector-Konfiguration 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 | Startimage | 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 | - |
| generation | string | Die Generation der virtuellen Maschine. | “V2” | - | O | O | O |
| trustedLaunch | boolean |
true, um Trusted Launch 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 des Datenträgerinhalts verwendet wird. Wenn dieser Wert angegeben wird, 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 | - |
| 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. | - | - | - | R | - |
| replicaCount | number | Die Standardanzahl der Replikate pro Region der Galerie-Image-Version | 1 | - | - | - | 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 oder 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 |
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 |
| trustedLaunch | boolean |
true, um Trusted Launch 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 des Datenträgerinhalts verwendet werden soll. Wenn angegeben, wird der Datenträger mit deaktiviertem öffentlichem Netzwerkzugriff erstellt. | null |
nein |
Cache-Datenträger-Vorlage
- 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.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-->
Startimage
Die Startimage-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 Startimage
| 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 |
| trustedLaunch | boolean |
true, um Trusted Launch 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 |
Startimage-Vorlage
- 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.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 Maschinen-Bereitstellung erstellt eine virtuelle Maschine, eine NIC und einen verwalteten Datenträger. Diese Vorlage funktioniert mit oder ohne Angabe der Startimage-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 |
| trustedLaunch | boolean |
true, um Trusted Launch 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 |
Maschinen-Vorlage
- 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.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-->
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 Häufigkeit, mit der sie veröffentlicht wurde). 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 zugewiesen.
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 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 |
| trustedLaunch | boolean |
true, um Trusted Launch 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 | - |
| 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 des Datenträgerinhalts verwendet werden soll. Wenn angegeben, wird der Datenträger mit deaktiviertem öffentlichem Netzwerkzugriff erstellt. | null |
- | O |
Layered Image-Vorlage
- 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 verwalteter Datenträger hinzugefügt
- 1.0.0.0 – Erstversion
{
"$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-->