Erstellen von ARM-Vorlagen
Dieser Abschnitt richtet sich an Benutzer, die mit ARM-Vorlagen vertraut sind. Er enthält detaillierte Informationen zum Erstellen von Vorlagen für den App Layering Azure Deployments Connector. Allgemeine Informationen zum Erstellen von ARM-Vorlagen finden Sie in der Microsoft-Dokumentation.
Eingabe
Jeder Bereitstellungstyp erhält einen Parameter, ein Objekt namens al. Dieses Objekt hat zwei Eigenschaften: input und context. Die Eigenschaft input ist ein für jeden Bereitstellungstyp spezifisches Objekt, dessen Eigenschaften sich je nach Bereitstellungstyp ändern. Die Eigenschaft context ist für alle Bereitstellungstypen gleich. Sie enthält Daten über die App Layering-Aufgabe, das Element (Layer oder Image-Vorlage) und die Connector-Konfiguration, die mit der aktuellen Bereitstellung verbunden sind. Detaillierte Informationen zum Parameterobjekt finden Sie unter Azure Deployments Template Parameter.
Jede Vorlage muss den Parameter al in ihrem Parameterabschnitt wie folgt deklarieren:
{
...
"parameters": {
"al": {
"type": "object"
}
},
...
}
<!--NeedCopy-->
Eine Vorlage kann weitere Parameter deklarieren, diese müssen jedoch alle Standardwerte haben. Andernfalls weist App Layering ihnen keinen Wert zu. Dies kann nützlich sein, um Funktionen zu verwenden, die nur im Standardwertabschnitt eines Parameters verwendet werden können, zum Beispiel utcNow.
Ausgabe
Alle ARM-Vorlagen können Ausgaben haben. Mit dem Azure Deployments Connector können Vorlagenausgaben verwendet werden, um Informationen an die nächste Bereitstellung zu übergeben. Sie können auch verwendet werden, um einige Standardverhaltensweisen zu überschreiben.
Die Ausgaben einer Bereitstellung werden über die Eigenschaft input des al Vorlagenparameters an die nächste Bereitstellung übergeben.
Wenn beispielsweise eine Cache-Datenträger-Bereitstellung diese Ausgaben hat:
{
...
"outputs": {
"generation": {
"type": "string",
"value": "[variables('generation')]"
},
"name": {
"type": "string",
"value": "[variables('name')]"
},
}
...
}
<!--NeedCopy-->
Die Boot-Image-Bereitstellung erhält diese Eingabe:
{
"input":
{
"type": "BootImage",
"source": {
"generation": "V2",
"name": "MyCoolDiskName"
}
},
"context": {
...
}
}
<!--NeedCopy-->
Beachten Sie, dass die Eigenschaft source des input-Objekts eine Eigenschaft für jede Ausgabe enthält, die von der Cache-Datenträger-Bereitstellungsvorlage angegeben wurde. Die Herkunft jeder Ausgabe hängt vom Bereitstellungstyp ab.
Details zum Bereitstellungstyp
Jeder Bereitstellungstyp verfügt über einen anderen Satz von Ein- und Ausgaben, die das Verhalten des App Layering-Vorgangs ändern können. Diese bereitstellungsspezifischen Details werden in diesem Abschnitt beschrieben.
Praxisbeispiele, die all diese Konzepte verwenden, finden Sie unter Starter-Vorlagen.
Cache-Datenträger
Die Cache-Datenträger-Bereitstellung muss eine verwaltete Datenträgerressource erstellen. Optional können Sie zusätzlich zum Datenträger weitere Ressourcen erstellen. Die App Layering-Appliance muss über die Berechtigung verfügen, mit einem SAS-Token (das von der Appliance generiert wird) auf den Datenträger zu schreiben. Ein Boot-Image, das die App Layering Compositing Engine enthält, wird nach der Erstellung auf den Datenträger hochgeladen.
Anforderungen an den Cache-Datenträger
- Muss eine verwaltete Datenträgerressource erstellen
- Die
createOptiondes verwalteten Datenträgers muss auf"Upload"gesetzt sein - Die
uploadSizeBytesdes verwalteten Datenträgers muss auf die durch die Eingabe angegebeneuploadSizegesetzt sein, z. B."[parameters('al').input.uploadSize]" - Die App Layering-Appliance muss in der Lage sein, mit einem SAS-Token auf den verwalteten Datenträger zu schreiben
{
...
"resources": [
{
"type": "Microsoft.Compute/disks",
...
"properties": {
...
"creationData": {
"createOption": "Upload",
"uploadSizeBytes": "[parameters('al').input.uploadSize]"
}
...
}
}
]
...
}
<!--NeedCopy-->
Cache-Datenträger-Eingabe
Das Eingabeobjekt enthält die Eigenschaften size und uploadSize. Dieses Objekt enthält keine Ausgabe einer anderen Bereitstellung.
Cache-Datenträger-Ausgabe
Die Ausgabe der Bereitstellung wird an die Boot-Image-Bereitstellung übergeben, falls eine angegeben ist. Andernfalls wird sie an die Maschinen-Bereitstellung übergeben.
Eine Ausgabe namens diskId kann angegeben werden, um App Layering explizit mitzuteilen, welcher Datenträger verwendet werden soll. Wenn keine diskId-Ausgabe angegeben ist, fügt App Layering automatisch eine hinzu und setzt sie auf die Ressourcen-ID der ersten verwalteten Datenträgerressource, die durch die Bereitstellung erstellt wurde. Auf den durch diskId angegebenen Datenträger wird das Boot-Image der App Layering Compositing Engine hochgeladen.
Boot-Image
Diese Bereitstellung erstellt eine Ressource aus dem verwalteten Datenträger, der durch die Cache-Datenträger-Bereitstellung erstellt wurde. Es gibt keine festen Anforderungen an den Typ der erstellten Ressourcen. Es muss jedoch eine Ressource erstellt werden, die als Quelle eines Betriebssystemdatenträgers beim Erstellen einer VM verwendet werden kann, z. B. eine Compute Gallery Image-Version.
Anforderungen an den Boot-Image-Datenträger
- Muss eine Ressource erstellen, die verwendet werden kann, um den Betriebssystemdatenträger einer VM mit demselben Inhalt wie der Datenträger mit der als Eingabe übergebenen ID zu erstellen.
Als Beispiel eine Compute Gallery Image-Version, die die Eingabe diskId als Quelle verwendet:
{
...
"resources": [
{
"type": "Microsoft.Compute/galleries/images/versions",
...
"properties": {
...
"storageProfile": {
"osDiskImage": {
"source": {
"id": "[parameters('al').input.source.diskId]"
}
}
}
...
}
}
]
...
}
<!--NeedCopy-->
Boot-Image-Eingabe
Das Eingabeobjekt enthält die Eigenschaft source. Die source repräsentiert die Ausgaben der Cache-Datenträger-Bereitstellung, mit einer Eigenschaft für jede angegebene Ausgabe. Verwenden Sie die Eigenschaft diskId für die Quelle der zu erstellenden Ressource.
Boot-Image-Ausgabe
Die Ausgabe der Boot-Image-Bereitstellung wird an die Maschinen-Bereitstellung übergeben. Es gibt keine speziellen oder erforderlichen Ausgaben. Sie müssen jedoch die Daten einschließen, die zum Erstellen einer VM aus der erstellten Ressource erforderlich sind, z. B. eine Ressourcen-ID.
Maschine
Die Maschinen-Bereitstellung muss eine virtuelle Maschinenressource erstellen. Die virtuelle Maschine muss an ein Netzwerk angeschlossen sein, über das sie die App Layering-Appliance erreichen kann und umgekehrt, gemäß Firewall-Ports für interne Verbindungen für Compositing-Maschinen.
Wichtig:
Hängen Sie den von der Cache-Datenträger-Bereitstellung erstellten Datenträger nicht an die virtuelle Maschine an. Der Cache-Datenträger ist eine gemeinsam genutzte Ressource und wird als schreibgeschützt betrachtet. Erstellen Sie eine Kopie des Datenträgers und hängen Sie diese stattdessen an, wenn Sie die Boot-Image-Bereitstellung nicht verwenden.
Maschinenanforderungen
- Muss eine virtuelle Maschinenressource erstellen
- Die virtuelle Maschine muss an ein Netzwerk angeschlossen sein, das die Kommunikation zur und von der App Layering-Appliance ermöglicht
- Der Betriebssystemdatenträger der virtuellen Maschine muss unter Verwendung der Boot-Image- oder Cache-Datenträger-Ressource als Quelle erstellt werden
- Die Größe des Betriebssystemdatenträgers der virtuellen Maschine muss auf
"[parameters('al').input.disk.size]"gesetzt sein - Die
userData-Eigenschaft der virtuellen Maschine muss auf"[parameters('al').input.vm.userData]"gesetzt sein
{
...
"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-->
Maschineneingabe
Das Eingabeobjekt enthält die Eigenschaften disk und vm.
Die Eigenschaft disk.image enthält die Ausgabe der Boot-Image-Bereitstellung, falls eine angegeben wurde. Andernfalls enthält sie die Ausgabe der Cache-Datenträger-Bereitstellung. Die Eigenschaft disk.size enthält die Größe des Datenträgers in GB.
Die Eigenschaft vm.userData enthält die Benutzerdaten, die der erstellten virtuellen Maschine zugewiesen werden müssen.
Maschinenausgabe
Die Ausgabe der Maschinen-Bereitstellung wird an die Layered Image-Bereitstellung übergeben, falls eine angegeben ist. Wenn Sie eine Layered Image-Bereitstellung verwenden, müssen Sie die ID der VM oder des Betriebssystemdatenträgers in die Ausgabe aufnehmen, damit sie von der Layered Image-Bereitstellung referenziert werden kann.
Eine Ausgabe namens machineId kann angegeben werden, um App Layering explizit mitzuteilen, welche virtuelle Maschine verwendet werden soll. Wenn keine machineId-Ausgabe angegeben ist, fügt App Layering automatisch eine hinzu und setzt sie auf die Ressourcen-ID der ersten virtuellen Maschinenressource, die durch die Bereitstellung erstellt wurde.
Eine Ausgabe namens ipAddress kann angegeben werden, um App Layering explizit mitzuteilen, welche IP-Adresse für die Kommunikation mit der Maschine verwendet werden soll. Wenn keine ipAddress-Ausgabe angegeben ist, verwendet App Layering die primäre private Adresse der primären Netzwerkkarte, die an die virtuelle Maschinenressource angeschlossen ist.
Eine Ausgabe namens message kann angegeben werden, um eine Nachricht bereitzustellen, die an den Endstatus einer Image-Veröffentlichungsaufgabe und den Status “Aktion erforderlich” einer Layer-Erstellungsaufgabe in der App Layering-Benutzeroberfläche angehängt wird. Diese Nachricht wird nur im Endstatus der Image-Veröffentlichungsaufgabe verwendet, wenn keine Layered Image-Bereitstellung angegeben ist.
- Die Maschinen-Startervorlage setzt den Ausgabeparameter
messageauf einen Link zur Maschine im Azure-Portal.
Layered Image
Die Layered Image-Bereitstellung erstellt eine Ressource aus der virtuellen Maschine oder anderen Ressourcen, die durch die Maschinen-Bereitstellung erstellt wurden. Es gibt keine festen Anforderungen an den Typ der erstellten Ressourcen. Es wird jedoch eine Ressource erstellt, die als Eingabe für einen Provisioning Service wie Machine Creation Services™ (MCS) verwendet werden kann. Eine Compute Gallery Image-Ressource ist ein gutes Beispiel.
Anforderungen an den Layered Image-Datenträger
- Erstellt eine Ressource, die von einem Provisioning Service zum Erstellen virtueller Maschinen verwendet werden kann.
Als Beispiel erstellt der folgende Codeblock eine Compute Gallery Image-Version, die die Eingabe diskId als Quelle verwendet. Dies setzt voraus, dass die Maschinen-Bereitstellung eine Ausgabe namens diskId enthielt, die auf die ID des Betriebssystemdatenträgers der Maschine gesetzt ist:
{
...
"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-->
Layered Image-Eingabe
Das Eingabeobjekt enthält die Eigenschaften source und diskName. Die source repräsentiert die Ausgaben der Maschinen-Bereitstellung, mit einer Eigenschaft für jede angegebene Ausgabe. Die Eigenschaft diskName ist der Name des Datenträgers, der in der App Layering-Image-Vorlage angegeben ist.
Layered Image-Ausgabe
Die Ausgabe der Bereitstellung wird nicht an andere Bereitstellungen übergeben. Eine Ausgabe namens message kann jedoch angegeben werden, um eine Nachricht bereitzustellen, die an den Endstatus einer Image-Veröffentlichungsaufgabe in der App Layering-Benutzeroberfläche angehängt wird.