App Layering

Modèles de démarrage

Cette section contient un ensemble complet de modèles ARM qui peuvent être utilisés avec le connecteur de déploiements Azure. Ces modèles peuvent être utilisés tels quels, ou ils peuvent être modifiés pour répondre à des besoins spécifiques.

Chaque ressource créée par ces modèles est étiquetée avec le même ensemble d’étiquettes. Ces étiquettes incluent des informations utiles sur le contexte du déploiement, telles que le nom de l’utilisateur qui a démarré la tâche et le commentaire qu’il a saisi.

Les modèles utilisent largement les données personnalisées dans la configuration du connecteur. Les données personnalisées permettent à l’utilisateur de définir des paramètres courants tels que location, vmSize, generation et d’autres paramètres sans avoir à modifier le modèle.

Le tableau suivant répertorie toutes les propriétés de données personnalisées utilisées par ces modèles. Il spécifie quels modèles s’appliquent à chaque propriété et si la propriété est requise.

R = Requis, O = Facultatif, - = Non utilisé

Nom Type Description Par défaut Disque de cache Image de démarrage Machine Image en couches
location string La région où les ressources sont créées. Même région que le groupe de ressources cible. O O O O
gallery string Le nom de la galerie de calcul dans laquelle créer les images. La galerie doit se trouver dans le groupe de ressources cible. - - R - R
storageSku string Le nom de la référence SKU à utiliser pour les disques gérés. “StandardSSD_LRS” O - O -
generation string La génération de la machine virtuelle. “V2” - O O O
trustedLaunch boolean true pour activer Trusted Launch, false sinon. Cette valeur doit être la même pour tous les types de déploiement. false O O O O
diskAccessId string L’ID de ressource de l’accès au disque utilisé lors du chargement du contenu du disque. Si cette option est spécifiée, le disque est créé avec l’accès au réseau public désactivé. Pour plus d’informations, consultez la documentation Azure. null O - - -
vmSize string La taille de la machine virtuelle à créer. “Standard_D2s_v3” - - O -
licenseType string Le type de licence sur site à appliquer aux machines virtuelles créées. null - - O -
subnetId string L’ID de ressource du sous-réseau auquel attacher la carte réseau de la machine virtuelle. - - - R -
replicaCount number Le nombre de réplicas par défaut par région de la version de l’image de la galerie 1 - - - O
targetRegions array Les régions cibles de la version de l’image de la galerie. Ceci est spécifié comme un tableau de chaînes de noms de région et/ou d’objets TargetRegion. Le tableau doit contenir la région du disque source (qui est spécifiée par les données personnalisées location). La région spécifiée par les données personnalisées location - - - O
publishAs string or array Le type de ressource(s) sous lequel publier les images. Spécifié comme un tableau ou une chaîne composé de ‘galleryImage’ et/ou ‘managedDisk’. [“galleryImage”] - - - O

Exemple de données personnalisées :

{
    "gallery": "MyGallery",
    "subnetId": "/subscriptions/ab3d1259-f5a9-407f-bbdd-bfd5701e2e94/resourceGroups/PDGTPB/providers/Microsoft.Network/virtualNetworks/MyVnet/subnets/mysubnet"
}
<!--NeedCopy-->

Autre exemple de données personnalisées :

{
    "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-->

Disque de cache

Crée un disque géré.

Données personnalisées du disque de cache

Nom Type Description Par défaut Requis
location string La région dans laquelle les ressources sont créées. Même région que le groupe de ressources cible non
storageSku string Le nom de la référence SKU à utiliser. “StandardSSD_LRS” non
trustedLaunch boolean true pour activer Trusted Launch, false sinon. Cette valeur doit être la même pour tous les types de déploiement. false non
diskAccessId string L’ID de ressource de l’accès au disque à utiliser lors du chargement du contenu du disque. Si spécifié, le disque est créé avec l’accès au réseau public désactivé. null non

Modèle de disque de cache

  • 1.1.0.0 - Ajout de la prise en charge de Trusted Launch
  • 1.0.0.0 - Version initiale
{
    "$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-->

Image de démarrage

Le déploiement d’image de démarrage crée une image de galerie et une version d’image dans la galerie spécifiée par les données personnalisées. Il génère l’ID de la version de l’image de la galerie de calcul créée pour être utilisé par le modèle Machine.

Données personnalisées de l’image de démarrage

Nom Type Description Par défaut Requis
location string La région dans laquelle les ressources sont créées. Même région que le groupe de ressources cible. non
generation string La génération de la machine virtuelle utilisée dans le disque. “V2” non
trustedLaunch boolean true pour activer Trusted Launch, false sinon. Cette valeur doit être la même pour tous les types de déploiement. false non
gallery string Le nom de la galerie de calcul dans laquelle créer l’image. La galerie doit se trouver dans le groupe de ressources cible. - oui

Modèle d’image de démarrage

  • 1.1.0.0 - Ajout de la prise en charge de Trusted Launch
  • 1.0.0.0 - Version initiale
{
    "$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-->

Machine

Le déploiement de machine crée une machine virtuelle, une carte réseau et un disque géré. Ce modèle fonctionne avec ou sans la spécification du déploiement Image de démarrage.

Données personnalisées de la machine

Nom Type Description Par défaut Requis
location string La région dans laquelle les ressources sont créées. Même région que le groupe de ressources cible. non
storageSku string Le nom de la référence SKU pour le disque créé. “StandardSSD_LRS” non
generation string La génération de la machine virtuelle. “V2” non
trustedLaunch boolean true pour activer Trusted Launch, false sinon. Cette valeur doit être la même pour tous les types de déploiement. false non
secureBoot boolean true pour activer Secure Boot, false sinon. Ceci n’est appliqué que si trustedLaunch est défini sur true. true non
vTpm boolean true pour activer le vTPM, false sinon. Ceci n’est appliqué que si trustedLaunch est défini sur true. true non
vmSize string La taille de la machine virtuelle à créer. “Standard_D2s_v3” non
licenseType string Le type de licence sur site à appliquer à la machine virtuelle. null non
subnetId string L’ID de ressource du sous-réseau auquel attacher la carte réseau. - oui

Modèle de machine

  • 1.1.0.0 - Ajout de la prise en charge de Trusted Launch
  • 1.0.0.0 - Version initiale
{
    "$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-->

Image en couches

Le déploiement d’image en couches peut créer deux types de ressources : une version d’image de galerie et/ou un disque géré. Les deux types de ressources sont nommés en utilisant le nom du modèle d’image App Layering en cours de publication et son numéro de version construit. Le numéro de version est construit en utilisant les numéros majeur et mineur du nom du disque du modèle d’image App Layering. Si le nom du disque n’est pas formaté comme une version numérique (nombre.nombre), alors 1.0 est appliqué par défaut. Le numéro de correctif est le numéro de version du modèle d’image App Layering (le nombre de fois qu’il a été publié). L’image de la galerie se voit attribuer le nom et la version de l’image de la galerie se voit attribuer le numéro de version. Le disque géré se voit attribuer le nom auquel est ajouté le numéro de version.

L’image de la galerie et sa version sont créées dans la galerie spécifiée par les données personnalisées. Lorsqu’une image est publiée plusieurs fois, une nouvelle version est ajoutée à l’image de la galerie de calcul, et l’ancienne version reste.

Données personnalisées de l’image en couches

R = Requis, O = Facultatif, - = Non utilisé

Nom Type Description Par défaut Image de galerie Disque géré
publishAs string or array Le type de ressource(s) à créer. Spécifié comme un tableau ou une chaîne composé de ‘galleryImage’ et/ou ‘managedDisk’. [“galleryImage”] O R
location string La région où les ressources sont créées. Même région que le groupe de ressources cible O O
generation string La génération de la machine virtuelle que l’image prendra en charge. “V2” O O
trustedLaunch boolean true pour activer Trusted Launch, false sinon. Cette valeur doit être la même pour tous les types de déploiement. false O O
gallery string Le nom de la galerie de calcul dans laquelle créer l’image. La galerie doit se trouver dans le groupe de ressources cible. - R -
replicaCount number Le nombre de réplicas par défaut par région de la version de l’image de la galerie 1 O -
targetRegions array Les régions cibles de la version de l’image de la galerie. Ceci est spécifié comme un tableau de chaînes de noms de région et/ou d’objets TargetRegion. Le tableau doit contenir la région du disque source (telle que spécifiée par les données personnalisées location). La région spécifiée par les données personnalisées location O -
storageSku string Le nom de la référence SKU à utiliser. “StandardSSD_LRS” - O
diskAccessId string L’ID de ressource de l’accès au disque à utiliser lors du chargement du contenu du disque. Si spécifié, le disque est créé avec l’accès au réseau public désactivé. null - O

Modèle d’image en couches

  • 1.1.0.0
    • Ajout de la prise en charge de Trusted Launch
    • Ajout de la prise en charge du nombre de réplicas et des régions cibles pour les versions d’image de galerie
    • Ajout de la prise en charge de la publication en tant que disque géré
  • 1.0.0.0 - Version initiale
{
    "$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-->
Modèles de démarrage