Plantillas de inicio

Esta sección contiene un conjunto completo de plantillas ARM que puedes usar con el conector de implementaciones de Azure. Puedes usar estas plantillas tal cual o modificarlas para satisfacer necesidades específicas.

Cada recurso creado por estas plantillas se etiqueta con el mismo conjunto de etiquetas. Estas etiquetas incluyen información útil sobre el contexto de la implementación, como el nombre de la persona usuaria que inició la tarea y el comentario que introdujo.

Las plantillas hacen un uso extensivo de datos personalizados en la configuración del conector. Los datos personalizados permiten a la persona usuaria definir parámetros comunes como location, vmSize, generation y otros parámetros sin necesidad de modificar la plantilla.

La siguiente tabla enumera todas las propiedades de datos personalizados que usan estas plantillas. Especifica qué plantillas se aplican a cada propiedad y si la propiedad es obligatoria.

R = Obligatorio, O = Opcional, - = No usado

Nombre Tipo Descripción Predeterminado Disco de caché Imagen de arranque Máquina Imagen en capas
location string La región donde se crean los recursos. Misma región que el grupo de recursos de destino. O O O O
gallery string El nombre de la galería de proceso en la que crear imágenes. La galería debe estar en el grupo de recursos de destino. - - R - R
storageSku string El nombre de la SKU que se usará para los discos administrados. “StandardSSD_LRS” O - O -
NVMe boolean true para usar controladores de disco NVMe, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false O O O O
generation string La generación de la máquina virtual. “V2” - O O O
trustedLaunch boolean true para habilitar el inicio de confianza, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false O O O O
diskAccessId string El ID de recurso del acceso al disco que se usa al cargar el contenido del disco. Si se especifica, el disco se crea con el acceso a la red pública deshabilitado. Para obtener más información, consulta la documentación de Azure. null O - - -
vmSize string El tamaño de la VM que se va a crear. “Standard_D2s_v3” - - O -
prefix string Un prefijo para anteponer al nombre de los recursos creados por la implementación de la máquina. “al-“ - - O -
licenseType string El tipo de licencia local que se aplicará a las máquinas virtuales creadas. null - - O -
subnetId string El ID de recurso de la subred a la que adjuntar la tarjeta de red de la VM. - - - R -
acceleratedNetworking boolean true para habilitar la red acelerada, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false O O O O
replicaCount number El número predeterminado de réplicas por región de la versión de la imagen de la galería. 1 - - - O
imageStorageAccountType string Especifica el tipo de cuenta de almacenamiento que se usará para almacenar la imagen. “Standard_LRS” - - - O
targetRegions array Las regiones de destino de la versión de la imagen de la galería. Se especifica como una matriz de cadenas de nombres de región y/o objetos TargetRegion. La matriz debe contener la región del disco de origen (que se especifica mediante los datos personalizados de location). La región especificada por los datos personalizados de location. - - - O
publishAs string or array El tipo de recurso(s) para publicar imágenes. Se especifica como una matriz o cadena que consta de ‘galleryImage’ y/o ‘managedDisk’. [“galleryImage”] - - - O
diskNameFormat string Controla el nombre de las imágenes publicadas como discos administrados. “version” para añadir la versión al nombre de la imagen, “timestamp” para añadir la hora de publicación. “version” - - - O

Ejemplo de datos personalizados:

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

Otro ejemplo de datos personalizados:

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

Disco de caché

  • Crea un disco administrado.

  • Datos personalizados del disco de caché

Nombre Tipo Descripción Predeterminado Obligatorio
location string La región en la que se crean los recursos. Misma región que el grupo de recursos de destino. no
storageSku string El nombre de la SKU que se va a usar. “StandardSSD_LRS” no
NVMe boolean true para habilitar los controladores de disco NVMe, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false no
acceleratedNetworking boolean true para habilitar la red acelerada, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false no
trustedLaunch boolean true para habilitar el inicio de confianza, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false no
diskAccessId string El ID de recurso del acceso al disco que se usará al cargar el contenido del disco. Si se especifica, el disco se crea con el acceso a la red pública deshabilitado. null no

Plantilla de disco de caché

  • 1.2.1.0 - Se corrigió un error que impedía la publicación de una segunda versión de una imagen cuando NVMe está habilitado.
  • 1.2.0.0 - Se agregó compatibilidad con redes aceleradas y controladores de disco NVMe.
  • 1.1.0.0 - Se agregó compatibilidad con el inicio de confianza.
  • 1.0.0.0 - Versión inicial.
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.2.0.0",
    "parameters": {
        "al": {
            "type": "object"
        }
    },
    "variables": {
        "custom": "[parameters('al').context.config.custom]",
        "location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
        "name": "[concat(parameters('al').context.item.name,'-', parameters('al').context.item.id)]",
        "tags": {
            "alTaskId": "[parameters('al').context.taskId]",
            "alUser": "[parameters('al').context.user]",
            "alComment": "[parameters('al').context.comment]",
            "alItemType": "[parameters('al').context.item.type]",
            "alItemId": "[parameters('al').context.item.id]",
            "alItemName": "[parameters('al').context.item.name]",
            "alItemVersion": "[parameters('al').context.item.version.name]",
            "alConfigId": "[parameters('al').context.config.id]",
            "alConfigName": "[parameters('al').context.config.name]"
        },
        "hasDiskAccess": "[contains(variables('custom'), 'diskAccessId')]",
        "storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_LRS')]",
        "trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
        "acceleratedNetworking": "[if(contains(variables('custom'), 'acceleratedNetworking'), variables('custom').acceleratedNetworking, false())]",
        "NVMe": "[if(contains(variables('custom'), 'NVMe'), variables('custom').NVMe, false())]"
    },
    "resources": [
        {
            "type": "Microsoft.Compute/disks",
            "apiVersion": "2024-03-02",
            "name": "[variables('name')]",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "sku": {
                "name": "[variables('storageSku')]"
            },
            "properties": {
                "creationData": {
                    "createOption": "Upload",
                    "uploadSizeBytes": "[parameters('al').input.uploadSize]"
                },
                "incremental": "false",
                "diskAccessId": "[if(variables('hasDiskAccess'), variables('custom').diskAccessId, null())]",
                "networkAccessPolicy": "[if(variables('hasDiskAccess'), 'AllowPrivate', 'AllowAll')]",
                "publicNetworkAccess": "[if(variables('hasDiskAccess'), 'Disabled', 'Enabled')]",
                "securityProfile": "[if(variables('trustedLaunch'), createObject('securityType', 'TrustedLaunch'), null())]",
                "supportedCapabilities": {
                    "diskControllerTypes": "[if(variables('NVMe'), 'SCSI, NVMe', 'SCSI')]",
                    "acceleratedNetwork": "[variables('acceleratedNetworking')]"
                }
-  }
-  }
-  ]
    -  }
<!--NeedCopy-->

Imagen de arranque

La implementación de la imagen de arranque crea una imagen de galería y una versión de imagen en la galería especificada por los datos personalizados. Genera el ID de la versión de la imagen de la galería de proceso creada para su uso por la plantilla de Máquina.

Datos personalizados de la imagen de arranque

Nombre Tipo Descripción Predeterminado Obligatorio
location string La región en la que se crean los recursos. Misma región que el grupo de recursos de destino. no
generation string La generación de la máquina virtual utilizada en el disco. “V2” no
NVMe boolean true para habilitar los controladores de disco NVMe, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false no
acceleratedNetworking boolean true para habilitar la red acelerada, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false no
trustedLaunch boolean true para habilitar el Inicio de confianza, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false no
gallery string El nombre de la galería de proceso en la que crear la imagen. La galería debe estar en el grupo de recursos de destino. -

Plantilla de imagen de arranque

-  1.2.1.0 - Se corrigió un error que impedía la publicación de una segunda versión de una imagen cuando NVMe estaba habilitado.
-  1.2.0.0 - Se agregó compatibilidad con la red acelerada y los controladores de disco NVMe.
-  1.1.0.0 - Se agregó compatibilidad con el Inicio de confianza.
-  1.0.0.0 - Versión inicial.
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.2.0.0",
    "parameters": {
        "al": {
            "type": "object"
        }
    },
    "variables": {
        "custom": "[parameters('al').context.config.custom]",
        "location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
        "tags": {
            "alTaskId": "[parameters('al').context.taskId]",
            "alUser": "[parameters('al').context.user]",
            "alComment": "[parameters('al').context.comment]",
            "alItemType": "[parameters('al').context.item.type]",
            "alItemId": "[parameters('al').context.item.id]",
            "alItemName": "[parameters('al').context.item.name]",
            "alItemVersion": "[parameters('al').context.item.version.name]",
            "alConfigId": "[parameters('al').context.config.id]",
            "alConfigName": "[parameters('al').context.config.name]"
        },
        "name": "[concat(parameters('al').context.item.name, '.', replace(parameters('al').context.config.id, '-', ''), '.', parameters('al').context.item.id)]",
        "version": "[parameters('al').context.item.version.name]",
        "galleryName": "[variables('custom').gallery]",
        "generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
        "acceleratedNetworking": "[if(contains(variables('custom'), 'acceleratedNetworking'), variables('custom').acceleratedNetworking, false())]",
        "NVMe": "[if(contains(variables('custom'), 'NVMe'), variables('custom').NVMe, false())]",
        "trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
        "possibleFeatures": [
            {
                "include": "[variables('trustedLaunch')]",
                "feature": {
                    "name": "SecurityType",
                    "value": "TrustedLaunch"
                }
            },
            {
                "include": "[variables('acceleratedNetworking')]",
                "feature": {
                    "name": "IsAcceleratedNetworkSupported",
                    "value": "True"
                }
            },
            {
                "include": "[variables('NVMe')]",
                "feature": {
                    "name": "DiskControllerTypes",
                    "value": "SCSI, NVMe"
                }
            }
        ]
    },
    "resources": [
        {
            "type": "Microsoft.Compute/galleries/images",
            "name": "[concat(variables('galleryName'), '/', variables('name'))]",
            "apiVersion": "2021-07-01",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "properties": {
                "description": "[parameters('al').context.item.description]",
                "features": "[map(filter(variables('possibleFeatures'), lambda('x', lambdaVariables('x').include)), lambda('x', lambdaVariables('x').feature))]",
                "hyperVGeneration": "[variables('generation')]",
                "osType": "Windows",
                "osState": "Specialized",
                "endOfLifeDate": "2030-01-01T00:00:00Z",
                "identifier": {
                    "publisher": "Citrix",
                    "offer": "[parameters('al').context.config.id]",
                    "sku": "[parameters('al').context.item.id]"
                }
            },
            "resources": [
                {
                    "type": "versions",
                    "apiVersion": "2021-07-01",
                    "name": "[variables('version')]",
                    "location": "[variables('location')]",
                    "dependsOn": [
                        "[resourceId('Microsoft.Compute/galleries/images', variables('galleryName'), variables('name'))]"
                    ],
                    "tags": "[variables('tags')]",
                    "properties": {
                        "publishingProfile": {
                            "replicaCount": 1,
                            "targetRegions": [
                                {
                                    "name": "[variables('location')]"
                                }
                            ]
                        },
                        "storageProfile": {
                            "osDiskImage": {
                                "source": {
                                    "id": "[parameters('al').input.source.diskId]"
                                }
                            }
                        }
                    }
                }
            ]
        }
    ],
    "outputs": {
        "id": {
    -  "type": "string",
    -  "value": "[resourceId('Microsoft.Compute/galleries/images/versions', variables('galleryName'), variables('name'), variables('version'))]"
    -  }
    -  }
    -  }
<!--NeedCopy-->
-  ## Máquina

La implementación de Máquina crea una máquina virtual, una NIC y un disco administrado. Esta plantilla funciona tanto si se especifica la implementación de Imagen de arranque como si no.

Datos personalizados de la máquina

Nombre Tipo Descripción Predeterminado Obligatorio
location string La región en la que se crean los recursos. Misma región que el grupo de recursos de destino. no
storageSku string El nombre de la SKU para el disco creado. “StandardSSD_LRS” no
generation string La generación de la máquina virtual. “V2” no
NVMe boolean true para usar controladores de disco NVMe, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false no
acceleratedNetworking boolean true para habilitar la red acelerada, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false no
trustedLaunch boolean true para habilitar el Inicio de confianza, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false no
secureBoot boolean true para habilitar el Arranque seguro, false en caso contrario. Esto solo se aplica si trustedLaunch está establecido en true. true no
vTpm boolean true para habilitar el vTPM, false en caso contrario. Esto solo se aplica si trustedLaunch está establecido en true. true no
vmSize string El tamaño de la máquina virtual que se va a crear. “Standard_D2s_v3” no
licenseType string El tipo de licencia local que se aplicará a la máquina virtual. null no
subnetId string El ID de recurso de la subred a la que adjuntar la NIC. -
prefix string Un prefijo para anteponer al nombre de los recursos creados. “al-“ no

Plantilla de máquina

-  1.2.0.0
-  Se agregó compatibilidad con la red acelerada.
-  Se agregó compatibilidad con los controladores de disco NVMe.
-  Se agregó compatibilidad con la exportación de IPS.
-  Se agregó la capacidad de personalizar el prefijo antepuesto a los nombres de los recursos.
-  Se agregó la dirección IP al mensaje que se muestra en la subtarea de App Layering.
-  Se deshabilitó el acceso a la red al disco del sistema operativo.
-  1.1.0.0 - Se agregó compatibilidad con el Inicio de confianza.
  • 1.0.0.0 - Versión inicial.
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.2.0.0",
    "parameters": {
        "al": {
            "type": "object"
        }
    },
    "variables": {
        "custom": "[parameters('al').context.config.custom]",
        "location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
        "prefix": "[if(contains(variables('custom'), 'prefix'), variables('custom').prefix, 'al-')]",
        "name": "[concat(variables('prefix'), parameters('al').context.taskId)]",
        "vmName": "[concat(variables('name'), '-vm')]",
        "nicName": "[concat(variables('name'), '-nic')]",
        "diskName": "[concat(variables('name'), '-disk')]",
        "diskId": "[resourceId('Microsoft.Compute/disks', variables('diskName'))]",
        "tags": {
            "alTaskId": "[parameters('al').context.taskId]",
            "alUser": "[parameters('al').context.user]",
            "alComment": "[parameters('al').context.comment]",
            "alItemType": "[parameters('al').context.item.type]",
            "alItemId": "[parameters('al').context.item.id]",
            "alItemName": "[parameters('al').context.item.name]",
            "alItemVersion": "[parameters('al').context.item.version.name]",
            "alConfigId": "[parameters('al').context.config.id]",
            "alConfigName": "[parameters('al').context.config.name]"
        },
        "source": "[parameters('al').input.disk.image]",
        "isFromImage": "[not(contains(variables('source'), 'diskId'))]",
        "generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
        "vmSize": "[if(contains(variables('custom'), 'vmSize'), variables('custom').vmSize, 'Standard_D2s_v3')]",
        "storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_LRS')]",
        "trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
        "secureBoot": "[if(contains(variables('custom'), 'secureBoot'), variables('custom').secureBoot, variables('trustedLaunch'))]",
        "vTpm": "[if(contains(variables('custom'), 'vTpm'), variables('custom').vTpm, variables('trustedLaunch'))]",
        "acceleratedNetworking": "[if(contains(variables('custom'), 'acceleratedNetworking'), variables('custom').acceleratedNetworking, false())]",
        "NVMe": "[if(contains(variables('custom'), 'NVMe'), variables('custom').NVMe, false())]",
        "securityProfile": {
            "securityType": "TrustedLaunch",
            "uefiSettings": {
                "secureBootEnabled": "[variables('secureBoot')]",
                "vTpmEnabled": "[variables('vTpm')]"
            }
        },
        "dataDiskTemplate": {
            "createOption": "Attach",
            "deleteOption": "Delete",
            "managedDisk": {
                "id": "ToBeReplaced"
            }
        },
        "dataDiskName": "[concat(variables('name'), '-disk{0}')]",
        "additionalDisks": "[if(contains(parameters('al').input, 'additionalDisks'), parameters('al').input.additionalDisks, createArray())]",     
        "additionalDiskIds": "[map(variables('additionalDisks'), lambda('x', lambdaVariables('x').diskId))]",
        "dataDiskIds": "[map(variables('additionalDiskIds'), lambda('x', 'i', resourceId('Microsoft.Compute/disks',format(variables('dataDiskName'), lambdaVariables('i')))))]"
    
    },
    "resources": [
        {
            "type": "Microsoft.Network/networkInterfaces",
            "apiVersion": "2020-11-01",
            "name": "[variables('nicName')]",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "properties": {
                "ipConfigurations": [
                    {
                        "name": "ipconfig1",
                        "properties": {
                            "privateIPAllocationMethod": "Dynamic",
                            "subnet": {
                                "id": "[variables('custom').subnetId]"
                            },
                            "primary": true,
                            "privateIPAddressVersion": "IPv4"
                        }
                    }
                ],
                "dnsSettings": {
                    "dnsServers": []
                },
                "enableAcceleratedNetworking": "[variables('acceleratedNetworking')]",
                "enableIPForwarding": false
            }
        },
        {
            "condition": "[not(variables('isFromImage'))]",
            "type": "Microsoft.Compute/disks",
            "apiVersion": "2021-08-01",
            "name": "[variables('diskName')]",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "sku": {
                "name": "[variables('storageSku')]"
            },
            "properties": {
                "osType": "Windows",
                "hyperVGeneration": "[variables('generation')]",
                "creationData": {
                    "createOption": "Copy",
                    "sourceResourceId": "[variables('source').diskId]"
                },
                "diskSizeGB": "[parameters('al').input.disk.size]",
                "networkAccessPolicy": "DenyAll",
                "publicNetworkAccess": "Disabled",
                "supportedCapabilities": {
                    "acceleratedNetwork": "[variables('acceleratedNetworking')]"
                }
            }
        },
        {
            "copy": {
                "name": "data-disk-loop",
                "count": "[length(variables('additionalDiskIds'))]",
                "mode": "Parallel"
            },
            "type": "Microsoft.Compute/disks",
            "apiVersion": "2021-08-01",
            "name": "[format(variables('dataDiskName'), copyIndex())]",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "sku": {
                "name": "[variables('storageSku')]"
            },
            "properties": {
                "creationData": {
                    "createOption": "Copy",
                    "sourceResourceId": "[variables('additionalDiskIds')[copyIndex()]]"
                },
                "networkAccessPolicy": "DenyAll",
                "publicNetworkAccess": "Disabled"
            }
        },
        {
            "type": "Microsoft.Compute/virtualMachines",
            "apiVersion": "2022-08-01",
            "name": "[variables('vmName')]",
            "location": "[variables('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]",
                "[variables('diskId')]",
                "data-disk-loop"
            ],
            "tags": "[variables('tags')]",
            "properties": {
                "hardwareProfile": {
                    "vmSize": "[variables('vmSize')]"
                },
                "securityProfile": "[if(variables('trustedLaunch'), variables('securityProfile'), null())]",
                "storageProfile": {
                    "imageReference": "[if(variables('isFromImage'), createObject('id', variables('source').id), null())]",
                    "diskControllerType": "[if(variables('NVMe'), 'NVMe', null())]",
                    "osDisk": {
                        "osType": "Windows",
                        "createOption": "[if(variables('isFromImage'), 'FromImage', 'Attach')]",
                        "caching": "ReadWrite",
                        "deleteOption": "Delete",
                        "diskSizeGB": "[parameters('al').input.disk.size]",
                        "managedDisk": "[if(variables('isFromImage'), createObject('storageAccountType', variables('storageSku')), createObject('id', variables('diskId')))]"
                    },
                    "dataDisks": "[map(variables('dataDiskIds'), lambda('x', 'i', union(variables('dataDiskTemplate'), createObject('lun', lambdaVariables('i'), 'managedDisk', createObject('id', lambdaVariables('x'))))))]"
                },
                "networkProfile": {
                    "networkInterfaces": [
                        {
                            "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]"
                        }
                    ]
                },
                "diagnosticsProfile": {
                    "bootDiagnostics": {
                        "enabled": true
                    }
                },
                "licenseType": "[if(contains(variables('custom'), 'licenseType'), variables('custom').licenseType, null())]",
                "userData": "[parameters('al').input.vm.userData]"
            }
        }
    ],
    "outputs": {
-  "diskId": {
-  "type": "string",
    -  "value": "[reference(variables('vmName')).storageProfile.osDisk.managedDisk.id]"
    -  },
    -  "message": {
    -  "type": "string",
    -  "value": "[format('See [link=\"{0}/#@{1}/resource/{2}\"]{2}[/link]. IP Address: {3}', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/virtualMachines', variables('vmName')), reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress)]"
-  }
    -  }
    -  }
<!--NeedCopy-->

Imagen en capas

La implementación de Imagen en capas puede crear dos tipos de recursos: una versión de imagen de galería y/o un disco administrado. Ambos tipos de recursos se nombran utilizando el nombre de la plantilla de imagen de App Layering que se está publicando y su número de versión construido. El número de versión se construye utilizando los números principales y secundarios del nombre del disco de la plantilla de imagen de App Layering. Si el nombre del disco no tiene el formato de una versión numérica (número.número), se aplica 1.0 de forma predeterminada. El número de revisión es el número de versión de la plantilla de imagen de App Layering (el número de veces que se ha publicado). A la imagen de la galería se le asigna el nombre y a la versión de la imagen de la galería se le asigna el número de versión. Al disco administrado se le asigna el nombre con el número de versión o la marca de tiempo actual, según diskNameFormat.

La imagen y la versión de la galería se crean en la galería especificada por los datos personalizados. Cuando una imagen se publica varias veces, se agrega una nueva versión a la imagen de la galería de proceso y la versión anterior permanece.

Datos personalizados de la imagen en capas

R = Obligatorio, O = Opcional, - = No utilizado

Nombre Tipo Descripción Predeterminado Imagen de galería Disco administrado
publishAs string o array El tipo de recurso(s) que se va a crear. Se especifica como una matriz o cadena que consta de ‘galleryImage’ y/o ‘managedDisk’. [“galleryImage”] O R
location string La región donde se crean los recursos. Misma región que el grupo de recursos de destino. O O
generation string La generación de la máquina virtual que admitirá la imagen. “V2” O O
NVMe boolean true para habilitar los controladores de disco NVMe, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false O O
acceleratedNetworking boolean true para habilitar la red acelerada, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false O O
trustedLaunch boolean true para habilitar el Inicio de confianza, false en caso contrario. Este valor debe ser el mismo para todos los tipos de implementación. false O O
gallery string El nombre de la galería de proceso en la que crear la imagen. La galería debe estar en el grupo de recursos de destino. - R -
replicaCount number El número predeterminado de réplicas por región de la versión de la imagen de la galería. 1 O -
imageStorageAccountType string Especifica el tipo de cuenta de almacenamiento que se utilizará para almacenar la imagen. “Standard_LRS” O -
targetRegions array Las regiones de destino de la versión de la imagen de la galería. Se especifica como una matriz de cadenas de nombres de región y/o objetos TargetRegion. La matriz debe contener la región del disco de origen (según lo especificado por los datos personalizados de location). La región especificada por los datos personalizados de location. O -
storageSku string El nombre de la SKU que se va a usar. “StandardSSD_LRS” - O
diskAccessId string El ID de recurso del acceso al disco que se utilizará al cargar el contenido del disco. Si se especifica, el disco se crea con el acceso a la red pública deshabilitado. null - O
diskNameFormat string Controla el nombre de las imágenes publicadas como discos administrados. “version” para anexar la versión al nombre de la imagen, “timestamp” para anexar la hora de publicación. “version” - O

Plantilla de imagen en capas

  • 1.2.1.0 - Se corrigió un error que impedía la publicación de una segunda versión de una imagen cuando NVMe estaba habilitado.
  • 1.2.0.0
    • Se agregó compatibilidad con la red acelerada.
    • Se agregó compatibilidad con los controladores de disco NVMe.
    • Se agregó la capacidad de especificar el tipo de cuenta de almacenamiento de las versiones de imagen de la galería.
    • Se agregó la opción de nombrar los discos administrados utilizando la hora de publicación en lugar de la versión de la imagen (similar a la nomenclatura heredada).
    • Se corrigió un error que hacía que galleryName fuera obligatorio incluso cuando no se publicaba como una versión de imagen de galería.
  • 1.1.0.0
    • Se agregó compatibilidad con el Inicio de confianza.
    • Se agregó el recuento de réplicas y la compatibilidad con la región de destino para las versiones de imagen de la galería.
    • Se agregó compatibilidad con la publicación como disco administrado.
  • 1.0.0.0 - Versión inicial.
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.2.0.0",
    "parameters": {
        "al": {
            "type": "object"
        },
        "timestamp": {
            "type": "string",
            "defaultValue": "[utcNow('yyyy-MM-dd_HH-mm-ss')]"
        }
    },
    "variables": {
        "invalidChars": [ " ", "(", ")", "[[", "]", "{", "}", "!", "@", "#", "$", "%", "^", "&", "*", "+", "/", "\\", "'", "\"", "|", "`", "~", "<", ">", ",", "?", "*" ],
        "numericChars": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ],
        "custom": "[parameters('al').context.config.custom]",
        "location": "[if(contains(variables('custom'), 'location'), variables('custom').location, resourceGroup().location)]",
        "name": "[join(split(parameters('al').context.item.name, variables('invalidChars')), '_')]",
        "tags": {
            "alTaskId": "[parameters('al').context.taskId]",
            "alUser": "[parameters('al').context.user]",
            "alComment": "[parameters('al').context.comment]",
            "alItemType": "[parameters('al').context.item.type]",
            "alItemId": "[parameters('al').context.item.id]",
            "alItemName": "[parameters('al').context.item.name]",
            "alItemVersion": "[parameters('al').context.item.version.name]",
            "alConfigId": "[parameters('al').context.config.id]",
            "alConfigName": "[parameters('al').context.config.name]"
        },
        "splitVer": "[split(parameters('al').input.diskName, '.')]",
        "major": "[if(equals(0, length(join(split(variables('splitVer')[0], variables('numericChars')), ''))), variables('splitVer')[0], '1')]",
        "minor": "[if(greater(length(variables('splitVer')), 1), if(equals(0, length(join(split(variables('splitVer')[1], variables('numericChars')), ''))), variables('splitVer')[1], '0'), '0')]",
        "version": "[format('{0}.{1}.{2}', variables('major'), variables('minor'), parameters('al').context.item.version.number)]",
        "galleryName": "[if(contains(variables('custom'), 'gallery'), variables('custom').gallery, 'galleryName.required.in.custom.data')]",
        "generation": "[if(contains(variables('custom'), 'generation'), variables('custom').generation, 'V2')]",
        "trustedLaunch": "[if(contains(variables('custom'), 'trustedLaunch'), variables('custom').trustedLaunch, false())]",
        "acceleratedNetworking": "[if(contains(variables('custom'), 'acceleratedNetworking'), variables('custom').acceleratedNetworking, false())]",
        "NVMe": "[if(contains(variables('custom'), 'NVMe'), variables('custom').NVMe, false())]",
        "replicaCount": "[if(contains(variables('custom'), 'replicaCount'), variables('custom').replicaCount, 1)]",
        "targetRegions": "[if(contains(variables('custom'), 'targetRegions'), variables('custom').targetRegions, createArray(variables('location')))]",
        "diskNames": {
            "version": "[format('{0}_{1}-{2}-{3}', variables('name'), variables('major'), variables('minor'), parameters('al').context.item.version.number)]",
            "timestamp": "[format('{0}_{1}', variables('name'), parameters('timestamp'))]"
        },
        "diskName": "[variables('diskNames')[coalesce(tryGet(variables('custom'), 'diskNameFormat'), 'version')]]",
        "hasDiskAccess": "[contains(variables('custom'), 'diskAccessId')]",
        "storageSku": "[if(contains(variables('custom'), 'storageSku'), variables('custom').storageSku, 'StandardSSD_LRS')]",
        "imageStorageAccountType": "[coalesce(tryGet(variables('custom'), 'imageStorageAccountType'), 'Standard_LRS')]",
        "publishAs": "[if(contains(variables('custom'), 'publishAs'), variables('custom').publishAs, createArray('galleryImage'))]",
        "galleryLink": "[format('[link=\"{0}/#@{1}/resource/{2}\"]{2}[/link].', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/galleries/images/versions', variables('galleryName'), variables('name'), variables('version')))]",
        "diskLink": "[format('[link=\"{0}/#@{1}/resource/{2}\"]{2}[/link].', environment().portal, tenant().tenantId, resourceId('Microsoft.Compute/disks', variables('diskName')))]",
        "outputLinks": "[filter(createArray(if(contains(variables('publishAs'), 'galleryImage'), variables('galleryLink'), null()), if(contains(variables('publishAs'), 'managedDisk'), variables('diskLink'), null())), lambda('link', not(equals(lambdaVariables('link'), null()))))]",
        "possibleFeatures": [
            {
                "include": "[variables('trustedLaunch')]",
                "feature": {
                    "name": "SecurityType",
                    "value": "TrustedLaunch"
                }
            },
            {
                "include": "[variables('acceleratedNetworking')]",
                "feature": {
                    "name": "IsAcceleratedNetworkSupported",
                    "value": "True"
                }
            },
            {
                "include": "[variables('NVMe')]",
                "feature": {
                    "name": "DiskControllerTypes",
                    "value": "SCSI, NVMe"
                }
            }
        ]
    },
    "resources": [
        {
            "condition": "[contains(variables('publishAs'), 'galleryImage')]",
            "type": "Microsoft.Compute/galleries/images",
            "name": "[format('{0}/{1}', variables('galleryName'), variables('name'))]",
            "apiVersion": "2021-07-01",
            "location": "[variables('location')]",
            "properties": {
                "description": "[parameters('al').context.item.description]",
                "features": "[map(filter(variables('possibleFeatures'), lambda('x', lambdaVariables('x').include)), lambda('x', lambdaVariables('x').feature))]",
                "hyperVGeneration": "[variables('generation')]",
                "osType": "Windows",
                "osState": "Specialized",
                "endOfLifeDate": "2030-01-01T00:00:00Z",
                "identifier": {
                    "publisher": "AppLayering",
                    "offer": "[variables('name')]",
                    "sku": "[variables('generation')]"
                }
            },
            "tags": "[variables('tags')]",
            "resources": [
                {
                    "condition": "[contains(variables('publishAs'), 'galleryImage')]",
                    "type": "versions",
                    "apiVersion": "2022-03-03",
                    "name": "[variables('version')]",
                    "location": "[variables('location')]",
                    "dependsOn": [
                        "[resourceId('Microsoft.Compute/galleries/images', variables('galleryName'), variables('name'))]"
                    ],
                    "tags": "[variables('tags')]",
                    "properties": {
                        "publishingProfile": {
                            "replicaCount": "[variables('replicaCount')]",
                            "storageAccountType": "[variables('imageStorageAccountType')]",
                            "targetRegions": "[map(variables('targetRegions'), lambda('item', if(contains(lambdaVariables('item'), 'name'), lambdaVariables('item'), createObject('name', lambdaVariables('item')))))]"
                        },
                        "storageProfile": {
                            "osDiskImage": {
                                "source": {
                                    "id": "[parameters('al').input.source.diskId]"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "condition": "[contains(variables('publishAs'), 'managedDisk')]",
            "type": "Microsoft.Compute/disks",
            "apiVersion": "2021-08-01",
            "name": "[variables('diskName')]",
            "location": "[variables('location')]",
            "tags": "[variables('tags')]",
            "sku": {
                "name": "[variables('storageSku')]"
            },
            "properties": {
                "osType": "Windows",
                "hyperVGeneration": "[variables('generation')]",
                "creationData": {
                    "createOption": "Copy",
                    "sourceResourceId": "[parameters('al').input.source.diskId]"
                },
                "diskAccessId": "[if(variables('hasDiskAccess'), variables('custom').diskAccessId, null())]",
                "networkAccessPolicy": "[if(variables('hasDiskAccess'), 'AllowPrivate', 'AllowAll')]",
                "publicNetworkAccess": "[if(variables('hasDiskAccess'), 'Disabled', 'Enabled')]"
            }
        }
    ],
    "outputs": {
        "message": {
            "type": "string",
            "value": "[if(empty(variables('outputLinks')), null(), format('See {0}.', join(variables('outputLinks'), ' and ')))]"
        }
    }
}
<!--NeedCopy-->
Plantillas de inicio