Creación de plantillas ARM
Esta sección está dirigida a usuarios familiarizados con las plantillas ARM. Proporciona información detallada sobre la creación de plantillas para el conector de implementaciones de Azure de App Layering. Para obtener información general sobre la creación de plantillas ARM, consulta la documentación de Microsoft.
Entrada
A cada tipo de implementación se le pasa un parámetro, un objeto llamado al. Este objeto tiene dos propiedades: input y context. La propiedad input es un objeto específico de cada tipo de implementación y sus propiedades cambian según el tipo de implementación. La propiedad context es la misma para todos los tipos de implementación. Contiene datos sobre la tarea de App Layering, el elemento (plantilla de capa o imagen) y la configuración del conector asociados a la implementación actual. Para obtener información detallada sobre el objeto de parámetro, consulta Parámetro de plantilla de implementaciones de Azure.
Cada plantilla debe declarar el parámetro al en su sección de parámetros, de la siguiente manera:
{
...
"parameters": {
"al": {
"type": "object"
}
},
...
}
<!--NeedCopy-->
Una plantilla puede declarar más parámetros, pero todos deben tener valores predeterminados. De lo contrario, App Layering no les proporciona valor. Esto puede ser útil para usar funciones que solo se pueden usar en la sección de valor predeterminado de un parámetro, por ejemplo utcNow.
Salida
Todas las plantillas ARM pueden tener salidas. Con el conector de implementaciones de Azure, las salidas de la plantilla se pueden usar para pasar información a la siguiente implementación. También se pueden usar para anular algunos comportamientos predeterminados.
Las salidas de una implementación se pasan a la siguiente implementación usando la propiedad input del parámetro de plantilla al.
Por ejemplo, cuando una implementación de Disco de caché tiene estas salidas:
{
...
"outputs": {
"generation": {
"type": "string",
"value": "[variables('generation')]"
},
"name": {
"type": "string",
"value": "[variables('name')]"
},
}
...
}
<!--NeedCopy-->
La implementación de Imagen de arranque recibe esta entrada:
{
"input":
{
"type": "BootImage",
"source": {
"generation": "V2",
"name": "MyCoolDiskName"
}
},
"context": {
...
}
}
<!--NeedCopy-->
Observa que la propiedad source del objeto input tiene una propiedad para cada salida especificada por la plantilla de implementación de Disco de caché. El origen de cada salida depende del tipo de implementación.
Detalles del tipo de implementación
Cada tipo de implementación tiene un conjunto diferente de entradas y salidas que pueden cambiar el comportamiento de la operación de App Layering. Estos detalles específicos de la implementación se describen en esta sección.
Para ver ejemplos reales que usan todos estos conceptos, consulta Plantillas de inicio.
Disco de caché
La implementación de Disco de caché debe crear un recurso de disco administrado. Opcionalmente, puedes crear otros recursos además del disco. El dispositivo de App Layering debe tener permiso para escribir en el disco usando un token SAS (generado por el dispositivo). Una imagen de arranque que contiene el motor de composición de App Layering se carga en el disco después de su creación.
Requisitos del disco de caché
- Debe crear un recurso de disco administrado
- La
createOptiondel disco administrado debe establecerse en"Upload" - La
uploadSizeBytesdel disco administrado debe establecerse en eluploadSizeespecificado por la entrada, como"[parameters('al').input.uploadSize]" - El dispositivo de App Layering debe poder escribir en el disco administrado usando un token SAS
{
...
"resources": [
{
"type": "Microsoft.Compute/disks",
...
"properties": {
...
"creationData": {
"createOption": "Upload",
"uploadSizeBytes": "[parameters('al').input.uploadSize]"
}
...
}
}
]
...
}
<!--NeedCopy-->
Entrada del disco de caché
El objeto de entrada incluye las propiedades size y uploadSize. Este objeto no incluye la salida de otra implementación.
Salida del disco de caché
La salida de la implementación se pasa a la implementación de Imagen de arranque si se especifica una. De lo contrario, se pasa a la implementación de Máquina.
Se puede especificar una salida llamada diskId para indicar explícitamente a App Layering qué disco usar. Si no se especifica ninguna salida diskId, App Layering agrega una automáticamente y la establece en el ID de recurso del primer recurso de disco administrado creado por la implementación. El disco especificado por diskId tiene la imagen de arranque del motor de composición de App Layering cargada en él.
Imagen de arranque
Esta implementación crea un recurso a partir del disco administrado creado por la implementación de Disco de caché. No hay requisitos estrictos sobre el tipo de recursos que se crean. Sin embargo, debe crear un recurso que pueda usarse como origen de un disco del sistema operativo al crear una VM, como una versión de imagen de galería de computación.
Requisitos del disco de imagen de arranque
- Debe crear un recurso que pueda usarse para crear el disco del sistema operativo de una VM con el mismo contenido que el disco con el ID pasado como entrada.
Como ejemplo, una versión de imagen de galería de computación que usa la entrada diskId como origen:
{
...
"resources": [
{
"type": "Microsoft.Compute/galleries/images/versions",
...
"properties": {
...
"storageProfile": {
"osDiskImage": {
"source": {
"id": "[parameters('al').input.source.diskId]"
}
}
}
...
}
}
]
...
}
<!--NeedCopy-->
Entrada de imagen de arranque
El objeto de entrada incluye la propiedad source. La source representa las salidas de la implementación de Disco de caché, con una propiedad para cada salida especificada. Usa la propiedad diskId para el origen del recurso que se está creando.
Salida de imagen de arranque
La salida de la implementación de Imagen de arranque se pasa a la implementación de Máquina. No hay salidas especiales o requeridas. Sin embargo, debes incluir los datos necesarios para crear una VM a partir del recurso creado, como un ID de recurso.
Máquina
La implementación de Máquina debe crear un recurso de máquina virtual. La máquina virtual debe estar conectada a una red en la que pueda alcanzar el dispositivo de App Layering y viceversa, según Puertos de firewall para conexiones internas para la máquina de composición.
Importante:
No adjuntes el disco creado por la implementación de Disco de caché a la máquina virtual. El Disco de caché es un recurso compartido y se considera de solo lectura. Crea una copia del disco y adjúntala en su lugar cuando no uses la implementación de Imagen de arranque.
Requisitos de la máquina
- Debe crear un recurso de máquina virtual
- La máquina virtual debe estar conectada a una red que permita la comunicación hacia y desde el dispositivo de App Layering
- El disco del sistema operativo de la máquina virtual debe crearse usando el recurso de Imagen de arranque o Disco de caché como su origen
- El tamaño del disco del sistema operativo de la máquina virtual debe establecerse en
"[parameters('al').input.disk.size]" - La propiedad
userDatade la máquina virtual debe establecerse en"[parameters('al').input.vm.userData]"
{
...
"resources": [
{
"type": "Microsoft.Compute/disks",
"name": "[variables('diskName')]",
...
"properties": {
...
"creationData": {
"createOption": "Copy",
"sourceResourceId": "[parameters('al').input.disk.image.diskId]"
},
"diskSizeGB": "[parameters('al').input.disk.size]",
...
}
},
{
"type": "Microsoft.Compute/virtualMachines",
...
"dependsOn": [
"[resourceId('Microsoft.Compute/disks', variables('diskName'))]"
],
...
"properties": {
...
"storageProfile": {
"osDisk": {
...
"createOption": "Attach",
"managedDisk": {
"id": "[resourceId('Microsoft.Compute/disks', variables('diskName'))]"
}
},
"dataDisks": []
},
...
"userData": "[parameters('al').input.vm.userData]"
...
}
}
]
...
}
<!--NeedCopy-->
Entrada de la máquina
El objeto de entrada incluye las propiedades disk y vm.
La propiedad disk.image contiene la salida de la implementación de Imagen de arranque si se especificó una. De lo contrario, contiene la salida de la implementación de Disco de caché. La propiedad disk.size contiene el tamaño del disco en GB.
La propiedad vm.userData contiene los datos de usuario que deben asignarse a la máquina virtual creada.
Salida de la máquina
La salida de la implementación de Máquina se pasa a la implementación de Imagen en capas si se especifica una. Si usas una implementación de Imagen en capas, debes incluir el ID de la VM o del disco del sistema operativo en la salida para que pueda ser referenciado por la implementación de Imagen en capas.
Se puede especificar una salida llamada machineId para indicar explícitamente a App Layering qué máquina virtual usar. Si no se especifica ninguna salida machineId, App Layering agrega una automáticamente y la establece en el ID de recurso del primer recurso de máquina virtual creado por la implementación.
Se puede especificar una salida llamada ipAddress para indicar explícitamente a App Layering qué dirección IP usar para comunicarse con la máquina. Si no se especifica ninguna salida ipAddress, App Layering usa la dirección privada principal de la tarjeta de red principal conectada al recurso de máquina virtual.
Se puede especificar una salida llamada message para proporcionar un mensaje que se adjunta al estado final de una tarea de publicación de imagen y al estado de acción requerida de una tarea de creación de capa en la interfaz de usuario de App Layering. Este mensaje solo se usa en el estado final de la tarea de publicación de imagen si no se especifica una implementación de Imagen en capas.
- La Plantilla de inicio de máquina establece el parámetro de salida
messageen un enlace a la máquina en el portal de Azure.
Imagen en capas
La implementación de Imagen en capas crea un recurso a partir de la máquina virtual u otros recursos creados por la implementación de Máquina. No hay requisitos estrictos sobre el tipo de recursos que se crean. Sin embargo, crea un recurso que puede usarse como entrada para un Servicio de aprovisionamiento como Machine Creation Services™ (MCS). Un recurso de imagen de galería de computación es un buen ejemplo.
Requisitos del disco de imagen en capas
- Crea un recurso que puede ser usado por un Servicio de aprovisionamiento para crear máquinas virtuales.
Como ejemplo, el siguiente bloque de código crea una versión de imagen de galería de computación usando la entrada diskId como origen. Esto asume que la implementación de Máquina incluyó una salida llamada diskId que se establece en el ID del disco del sistema operativo de la máquina:
{
...
"resources": [
{
"type": "Microsoft.Compute/galleries/images",
"name": "[format('{0}/{1}', variables('galleryName'), variables('name'))]",
...
"resources": [
{
"type": "versions",
...
"dependsOn": [
"[resourceId('Microsoft.Compute/galleries/images', variables('galleryName'), variables('name'))]"
],
...
"properties": {
...
"storageProfile": {
"osDiskImage": {
"source": {
"id": "[parameters('al').input.source.diskId]"
}
}
}
...
}
}
]
}
],
...
}
<!--NeedCopy-->
Entrada de imagen en capas
El objeto de entrada incluye las propiedades source y diskName. La source representa las salidas de la implementación de Máquina, con una propiedad para cada salida especificada. La propiedad diskName es el nombre del disco especificado en la plantilla de imagen de App Layering.
Salida de imagen en capas
La salida de la implementación no se pasa a ninguna otra implementación. Sin embargo, se puede especificar una salida llamada message para proporcionar un mensaje que se adjunta al estado final de una tarea de publicación de imagen en la interfaz de usuario de App Layering.