App Layering

Création de modèles ARM

Cette section s’adresse aux utilisateurs familiarisés avec les modèles ARM. Elle fournit des informations détaillées sur la création de modèles pour le connecteur de déploiements Azure d’App Layering. Pour des informations générales sur la création de modèles ARM, consultez la documentation Microsoft.

Entrée

Chaque type de déploiement reçoit un paramètre, un objet nommé al. Cet objet possède deux propriétés, input et context. La propriété input est un objet spécifique à chaque type de déploiement et ses propriétés changent en fonction du type de déploiement. La propriété context est la même pour tous les types de déploiement. Elle contient des données sur la tâche App Layering, l’élément (couche ou modèle d’image) et la configuration du connecteur associés au déploiement actuel. Pour des informations détaillées sur l’objet paramètre, consultez Paramètre de modèle de déploiements Azure.

Chaque modèle doit déclarer le paramètre al dans sa section de paramètres, comme suit :

{
    ...
    "parameters": {
        "al": {
            "type": "object"
        }
    },
    ...
}
<!--NeedCopy-->

Un modèle peut déclarer d’autres paramètres, mais tous les paramètres doivent avoir des valeurs par défaut. Sinon, App Layering ne leur fournit aucune valeur. Cela peut être utile pour utiliser des fonctions qui ne peuvent être utilisées que dans la section de valeur par défaut d’un paramètre, par exemple utcNow.

Sortie

Tous les modèles ARM peuvent avoir des sorties. Avec le connecteur de déploiements Azure, les sorties de modèle peuvent être utilisées pour transmettre des informations au déploiement suivant. Elles peuvent également être utilisées pour remplacer certains comportements par défaut.

Les sorties d’un déploiement sont transmises au déploiement suivant à l’aide de la propriété input du paramètre de modèle al.

Par exemple, lorsqu’un déploiement Disque de cache a ces sorties :

{
    ...
    "outputs": {
        "generation": {
            "type": "string",
            "value": "[variables('generation')]"
        },
        "name": {
            "type": "string",
            "value": "[variables('name')]"
        },
    }
    ...
}
<!--NeedCopy-->

Le déploiement Image de démarrage reçoit cette entrée :

{
  "input":
  {
    "type": "BootImage",
    "source": {
        "generation": "V2",
        "name": "MyCoolDiskName"
    }
  },
  "context": {
    ...
  }
}
<!--NeedCopy-->

Notez que la propriété source de l’objet input possède une propriété pour chaque sortie spécifiée par le modèle de déploiement Disque de cache. Les origines de chaque sortie dépendent du type de déploiement.

Détails du type de déploiement

Chaque type de déploiement possède un ensemble différent d’entrées et de sorties qui peuvent modifier le comportement de l’opération App Layering. Ces détails spécifiques au déploiement sont décrits dans cette section.

Pour des exemples concrets qui utilisent tous ces concepts, consultez Modèles de démarrage.

Disque de cache

Le déploiement Disque de cache doit créer une ressource de disque géré. Vous pouvez éventuellement créer d’autres ressources en plus du disque. L’appliance App Layering doit avoir l’autorisation d’écrire sur le disque à l’aide d’un jeton SAS (généré par l’appliance). Une image de démarrage contenant le moteur de composition App Layering est téléchargée sur le disque après sa création.

Exigences du disque de cache

  • Doit créer une ressource de disque géré
  • La propriété createOption du disque géré doit être définie sur "Upload"
  • La propriété uploadSizeBytes du disque géré doit être définie sur la uploadSize spécifiée par l’entrée, telle que "[parameters('al').input.uploadSize]"
  • L’appliance App Layering doit pouvoir écrire sur le disque géré à l’aide d’un jeton SAS
{
    ...
    "resources": [
        {
            "type": "Microsoft.Compute/disks",
            ...
            "properties": {
                ...
                "creationData": {
                    "createOption": "Upload",
                    "uploadSizeBytes": "[parameters('al').input.uploadSize]"
                }
                ...
            }
        }
    ]
    ...
}
<!--NeedCopy-->

Entrée du disque de cache

L’objet d’entrée inclut les propriétés size et uploadSize. Cet objet n’inclut pas la sortie d’un autre déploiement.

Sortie du disque de cache

La sortie du déploiement est transmise au déploiement Image de démarrage si l’un est spécifié. Sinon, elle est transmise au déploiement Machine.

Une sortie nommée diskId peut être spécifiée pour indiquer explicitement à App Layering quel disque utiliser. Si aucune sortie diskId n’est spécifiée, App Layering en ajoute automatiquement une et la définit sur l’ID de ressource du premier disque géré créé par le déploiement. Le disque spécifié par diskId reçoit l’image de démarrage du moteur de composition App Layering.

Image de démarrage

Ce déploiement crée une ressource à partir du disque géré créé par le déploiement Disque de cache. Il n’y a pas d’exigences strictes quant au type de ressources créées. Cependant, il doit créer une ressource qui peut être utilisée comme source d’un disque de système d’exploitation lors de la création d’une machine virtuelle, telle qu’une version d’image de galerie de calcul.

Exigences du disque d’image de démarrage

  • Doit créer une ressource qui peut être utilisée pour créer le disque de système d’exploitation d’une machine virtuelle avec le même contenu que le disque dont l’ID est passé en entrée.

À titre d’exemple, une version d’image de galerie de calcul utilisant l’entrée diskId comme source :

{
    ...
    "resources": [
        {
            "type": "Microsoft.Compute/galleries/images/versions",
            ...
            "properties": {
                ...
                "storageProfile": {
                    "osDiskImage": {
                        "source": {
                            "id": "[parameters('al').input.source.diskId]"
                        }
                    }
                }
                ...
            }
        }
    ]
    ...
}
<!--NeedCopy-->

Entrée de l’image de démarrage

L’objet d’entrée inclut la propriété source. La source représente les sorties du déploiement Disque de cache, avec une propriété pour chaque sortie spécifiée. Utilisez la propriété diskId pour la source de la ressource en cours de création.

Sortie de l’image de démarrage

La sortie du déploiement Image de démarrage est transmise au déploiement Machine. Il n’y a pas de sorties spéciales ou requises. Cependant, vous devez inclure les données nécessaires pour créer une machine virtuelle à partir de la ressource créée, comme un ID de ressource.

Machine

Le déploiement Machine doit créer une ressource de machine virtuelle. La machine virtuelle doit être connectée à un réseau sur lequel elle peut atteindre l’appliance App Layering et vice versa, conformément aux Ports de pare-feu pour les connexions internes de la machine de composition.

Important :

Ne connectez pas le disque créé par le déploiement Disque de cache à la machine virtuelle. Le Disque de cache est une ressource partagée et considérée comme en lecture seule. Créez une copie du disque et connectez-la à la place lorsque vous n’utilisez pas le déploiement Image de démarrage.

Exigences de la machine

  • Doit créer une ressource de machine virtuelle
  • La machine virtuelle doit être connectée à un réseau qui permet la communication vers et depuis l’appliance App Layering
  • Le disque de système d’exploitation de la machine virtuelle doit être créé à l’aide de la ressource Image de démarrage ou Disque de cache comme source
  • La taille du disque de système d’exploitation de la machine virtuelle doit être définie sur "[parameters('al').input.disk.size]"
  • La propriété userData de la machine virtuelle doit être définie sur "[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-->

Entrée de la machine

L’objet d’entrée inclut les propriétés disk et vm.

La propriété disk.image contient la sortie du déploiement Image de démarrage si l’un a été spécifié. Sinon, elle contient la sortie du déploiement Disque de cache. La propriété disk.size contient la taille du disque en Go.

La propriété vm.userData contient les données utilisateur qui doivent être attribuées à la machine virtuelle créée.

Sortie de la machine

La sortie du déploiement Machine est transmise au déploiement Image en couches si l’un est spécifié. Si vous utilisez un déploiement Image en couches, vous devez inclure l’ID de la machine virtuelle ou du disque de système d’exploitation dans la sortie afin qu’il puisse être référencé par le déploiement Image en couches.

Une sortie nommée machineId peut être spécifiée pour indiquer explicitement à App Layering quelle machine virtuelle utiliser. Si aucune sortie machineId n’est spécifiée, App Layering en ajoute automatiquement une et la définit sur l’ID de ressource de la première ressource de machine virtuelle créée par le déploiement.

Une sortie nommée ipAddress peut être spécifiée pour indiquer explicitement à App Layering quelle adresse IP utiliser pour communiquer avec la machine. Si aucune sortie ipAddress n’est spécifiée, App Layering utilise l’adresse privée principale de la carte réseau principale attachée à la ressource de machine virtuelle.

Une sortie nommée message peut être spécifiée pour fournir un message qui est ajouté à l’état final d’une tâche de publication d’image et à l’état d’action requise d’une tâche de création de couche dans l’interface utilisateur d’App Layering. Ce message n’est utilisé dans l’état final de la tâche de publication d’image que si un déploiement Image en couches n’est pas spécifié.

Image en couches

Le déploiement Image en couches crée une ressource à partir de la machine virtuelle ou d’autres ressources créées par le déploiement Machine. Il n’y a pas d’exigences strictes quant au type de ressources créées. Cependant, il crée une ressource qui peut être utilisée comme entrée pour un service de provisionnement tel que Machine Creation Services™ (MCS). Une ressource d’image de galerie de calcul est un bon exemple.

Exigences du disque d’image en couches

  • Crée une ressource qui peut être utilisée par un service de provisionnement pour créer des machines virtuelles.

À titre d’exemple, le bloc de code suivant crée une version d’image de galerie de calcul en utilisant l’entrée diskId comme source. Cela suppose que le déploiement Machine a inclus une sortie nommée diskId qui est définie sur l’ID du disque de système d’exploitation de la machine :

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

Entrée de l’image en couches

L’objet d’entrée inclut les propriétés source et diskName. La source représente les sorties du déploiement Machine, avec une propriété pour chaque sortie spécifiée. La propriété diskName est le nom du disque spécifié dans le modèle d’image App Layering.

Sortie de l’image en couches

La sortie du déploiement n’est transmise à aucun autre déploiement. Cependant, une sortie nommée message peut être spécifiée pour fournir un message qui est ajouté à l’état final d’une tâche de publication d’image dans l’interface utilisateur d’App Layering.

Création de modèles ARM