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 spezifisch für jeden Bereitstellungstyp, und ihre Eigenschaften ändern sich je nach Bereitstellungstyp. 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 weiterzugeben. Sie können auch verwendet werden, um einige Standardverhaltensweisen zu überschreiben.

Die Ausgaben einer Bereitstellung werden über die Eigenschaft input des Vorlagenparameters al 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-->

erhält die Boot-Image-Bereitstellung diese Eingabe:

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

Beachten Sie, dass die Eigenschaft source des input-Objekts für jede von der Cache-Datenträger-Bereitstellungsvorlage angegebene Ausgabe eine Eigenschaft enthält. Die Herkunft jeder Ausgabe hängt vom Bereitstellungstyp ab.

Details zum Bereitstellungstyp

Jeder Bereitstellungstyp hat 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 createOption des verwalteten Datenträgers muss auf "Upload" gesetzt sein
  • Die uploadSizeBytes des verwalteten Datenträgers muss auf die durch die Eingabe angegebene uploadSize gesetzt 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, welchen Datenträger es verwenden soll. Wenn keine diskId-Ausgabe angegeben ist, fügt App Layering automatisch eine hinzu und setzt sie auf die Ressourcen-ID des ersten verwalteten Datenträgers, der von der Bereitstellung erstellt wurde. Der durch diskId angegebene Datenträger erhält das App Layering Compositing Engine Boot-Image hochgeladen.

Boot-Image

Diese Bereitstellung erstellt eine Ressource aus dem verwalteten Datenträger, der von der Cache-Datenträger-Bereitstellung erstellt wurde. Es gibt keine festen Anforderungen an die Art 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 dem gleichen 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 der Compositing-Maschine.

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

Maschinen-Eingabe

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.

Maschinen-Ausgabe

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 von der 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 endgültigen Status 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 endgültigen Status der Image-Veröffentlichungsaufgabe verwendet, wenn keine Layered Image-Bereitstellung angegeben ist.

Layered Image

Die Layered Image-Bereitstellung erstellt eine Ressource aus der virtuellen Maschine oder anderen Ressourcen, die von der Maschinen-Bereitstellung erstellt wurden. Es gibt keine festen Anforderungen an die Art der erstellten Ressourcen. Es wird jedoch eine Ressource erstellt, die als Eingabe für einen Bereitstellungsdienst 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 Bereitstellungsdienst zum Erstellen virtueller Maschinen verwendet werden kann.

Als Beispiel erstellt der folgende Codeblock eine Compute Gallery Image-Version unter Verwendung der Eingabe diskId als Quelle. 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. Es kann jedoch eine Ausgabe namens message angegeben werden, um eine Nachricht bereitzustellen, die an den endgültigen Status einer Image-Veröffentlichungsaufgabe in der App Layering-Benutzeroberfläche angehängt wird.

Erstellen von ARM-Vorlagen