App Layering

Modèles de démarrage

Cette section contient un ensemble complet de modèles ARM pouvant être utilisés avec le connecteur Azure Deployments. 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 de balises. Ces balises contiennent des informations utiles sur le contexte du déploiement, telles que le nom de l’utilisateur qui a lancé la tâche et le commentaire qu’il a saisi.

Les modèles utilisent largement des données personnalisées dans la configuration du connecteur. Les données personnalisées permettent à l’utilisateur de définir des paramètres communs tels que locationvmSize, 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 indique quels modèles s’appliquent à chaque propriété et indique si la propriété est obligatoire.

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

Nom Type Description Valeur par défaut Disque cache Image de démarrage Machine Image en couches
location Chaîne Région dans laquelle les ressources sont créées. Même région que le groupe de ressources cible. O O O O
gallery Chaîne Nom de la galerie de calcul dans laquelle créer des images. La galerie doit appartenir au groupe de ressources cible. - - R - R
storageSku Chaîne Nom du SKU à utiliser pour les disques gérés. « SSD_LRS standard » O - O -
generation Chaîne La génération d’une machine virtuelle. “V2” - O O O
trustedLaunch booléen true pour activer Trusted Launch, sinon false. Il doit s’agir de la même valeur pour tous les types de déploiement. false O O O O
diskAccessId Chaîne L’ID de ressource de l’accès au disque utilisé lors du téléchargement du contenu du disque. Si cela est spécifié, 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 Chaîne Taille de la machine virtuelle à créer. « Standard_D2S_V3 » - - O -
licenseType Chaîne Type de licence locale à appliquer aux machines virtuelles créées. null - - O -
subnetId Chaîne L’ID de ressource du sous-réseau auquel connecter la carte réseau de la machine virtuelle. - - - R -
replicaCount nombre Le nombre par défaut de répliques par région de la version de l’image de la galerie 1 - - - O
targetRegions gamme Les régions cibles de la version de l’image de la galerie. Ceci est spécifié sous la forme d’un tableau de chaînes de noms de régions et/ou d’objets TargetRegion. La baie 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 chaîne ou tableau Type de ressource (s) sous laquelle publier des images. Spécifié sous la forme d’un tableau ou d’une chaîne composée de ‘GalleryImage’ et/ou ‘ManagedDisk’ [« Image de la galerie »] - - - O

Exemples 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 cache

Crée un disque géré.

Données personnalisées du disque cache

Nom Type Description Valeur par défaut Obligatoire
location Chaîne Région dans laquelle les ressources sont créées. Même région que le groupe de ressources cible non
storageSku Chaîne Nom du SKU à utiliser. « SSD_LRS standard » non
trustedLaunch booléen true pour activer Trusted Launch, sinon false. Il doit s’agir de la même valeur pour tous les types de déploiement. false non
diskAccessId Chaîne L’ID de ressource de l’accès au disque à utiliser lors du télé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 cache

  • 1.1.0.0 - Ajout du support pour 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 Boot Image 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 d’image de la galerie de calcul créée à utiliser par le modèle de machine .

Données personnalisées Boot Image

Nom Type Description Valeur par défaut Obligatoire
location Chaîne Région dans laquelle les ressources sont créées. Même région que le groupe de ressources cible. non
generation Chaîne Génération de la machine virtuelle utilisée sur le disque. “V2” non
trustedLaunch booléen true pour activer Trusted Launch, sinon false. Il doit s’agir de la même valeur pour tous les types de déploiement. false non
gallery Chaîne Nom de la galerie de calcul dans laquelle créer l’image. La galerie doit appartenir au groupe de ressources cible. - oui

Modèle Boot Image

  • 1.1.0.0 - Ajout du support pour 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 la machine crée une machine virtuelle, une carte réseau et un disque géré. Ce modèle fonctionne avec ou sans que le déploiement de Boot Image soit spécifié.

Données personnalisées de la machine

Nom Type Description Valeur par défaut Obligatoire
location Chaîne Région dans laquelle les ressources sont créées. Même région que le groupe de ressources cible. non
storageSku Chaîne Nom du SKU du disque créé. « SSD_LRS standard » non
generation Chaîne La génération de la machine virtuelle. “V2” non
trustedLaunch booléen true pour activer Trusted Launch, sinon false. Il doit s’agir de la même valeur pour tous les types de déploiement. false non
secureBoot booléen true pour activer Secure Boot, sinon false. Ceci n’est appliqué que si trustedLaunchest défini sur true. true non
vTpm booléen true pour activer le vTPM, sinon false. Ceci n’est appliqué que si trustedLaunchest défini sur true. true non
vmSize Chaîne Taille de la machine virtuelle à créer. « Standard_D2S_V3 » non
licenseType Chaîne Type de licence locale à appliquer à la machine virtuelle. null non
subnetId Chaîne L’ID de ressource du sous-réseau auquel connecter la carte réseau. - oui

Modèle de machine

  • 1.1.0.0 - Ajout du support pour 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’images 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 à l’aide du nom du modèle d’image App Layering en cours de publication et de son numéro de version construit. Le numéro de version est construit à l’aide de chiffres majeurs et mineurs à partir du nom de disque du modèle d’image App Layering. Si le nom du disque n’est pas formaté en version numérique (number.number), 1.0 est appliqué par défaut. Le numéro de patch est le numéro de version du modèle d’image App Layering (le nombre de fois qu’il a été publié). Un nom est attribué à l’image de la galerie et le numéro de version est attribué à la version de l’image de la galerie. Le nom du disque géré est ajouté au numéro de version.

L’image et la version de la galerie 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 est conservée.

Données personnalisées d’images en couches

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

Nom Type Description Valeur par défaut Image de la galerie Disque géré
publishAs chaîne ou tableau Type de ressources à créer. Spécifié sous la forme d’un tableau ou d’une chaîne composée de ‘GalleryImage’ et/ou ‘ManagedDisk’ [« Image de la galerie »] O R
location Chaîne Région dans laquelle les ressources sont créées. Même région que le groupe de ressources cible O O
generation Chaîne Génération de la machine virtuelle prise en charge par l’image. “V2” O O
trustedLaunch booléen true pour activer Trusted Launch, sinon false. Il doit s’agir de la même valeur pour tous les types de déploiement. false O O
gallery Chaîne Nom de la galerie de calcul dans laquelle créer l’image. La galerie doit appartenir au groupe de ressources cible. - R -
replicaCount nombre Le nombre par défaut de répliques par région de la version de l’image de la galerie 1 O -
targetRegions gamme Les régions cibles de la version de l’image de la galerie. Ceci est spécifié sous la forme d’un tableau de chaînes de noms de régions et/ou d’objets TargetRegion. La baie doit contenir la région du disque source (telle que spécifiée par les locationdonnées personnalisées). La région spécifiée par les données personnalisées location O -
storageSku Chaîne Nom du SKU à utiliser. « SSD_LRS standard » - O
diskAccessId Chaîne L’ID de ressource de l’accès au disque à utiliser lors du téléchargement du contenu du disque. Si cela est 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 du support pour Trusted Launch
    • Ajout du nombre de répliques et de la prise en charge des régions cibles pour les versions d’images de la 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