App-Layering

ARM-Vorlagen erstellen

Dieser Abschnitt richtet sich an Benutzer, die mit ARM-Vorlagen vertraut sind. Es enthält detaillierte Informationen zur Erstellung von Vorlagen für den App Layering Azure Deployments-Connector. Allgemeine Informationen zur Erstellung von ARM-Vorlagen finden Sie in der Microsoft-Dokumentation.

Eingabe

Jedem Bereitstellungstyp wird ein Parameter übergeben, ein benanntes Objekt al. Dieses Objekt hat zwei Eigenschaften, input und context. Die Eigenschaft input ist ein Objekt, das für jeden Bereitstellungstyp spezifisch ist, und seine Eigenschaften ändern sich je nach Bereitstellungstyp. Die Eigenschaft context ist für alle Bereitstellungstypen dieselbe. Es enthält Daten zur App Layering-Aufgabe, zum Element (Layer- oder Imagevorlage) und zur Connectorkonfiguration, die der aktuellen Bereitstellung zugeordnet sind. Ausführliche Informationen zum Parameterobjekt finden Sie unter Azure Deployments Template Parameter.

Jede Vorlage muss den Parameter al in ihrem Parameterbereich wie folgt deklarieren:

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

Eine Vorlage kann mehr Parameter deklarieren, aber die Parameter müssen alle Standardwerte haben. Andernfalls bietet App Layering ihnen keinen Wert. Dies kann nützlich sein, um Funktionen zu verwenden, die nur im Standardwertabschnitt eines Parameters verwendet werden können. Beispiel: utcNow.

Ausgabe

Alle ARM-Vorlagen können Ausgänge 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 Standardverhalten zu überschreiben.

Die Ausgaben einer Bereitstellung werden mit der Eigenschaft input des al Templateparameters an die nächste Bereitstellung übergeben.

Zum Beispiel, wenn eine Cache-Disk-Bereitstellung die folgenden Ausgaben hat:

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

Das Boot Image-Deployment erhält diese Eingabe:

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

Beachten Sie, dass die Eigenschaft source des Objekts input für jede Ausgabe eine Eigenschaft hat, die in der Cachedatenträger-Bereitstellungsvorlage angegeben ist. Die Herkunft der einzelnen Ausgaben hängt von der Art der Bereitstellung ab.

Angaben zum Bereitstellungstyp

Jeder Bereitstellungstyp hat unterschiedliche Eingaben und Ausgaben, die das Verhalten des App Layering-Vorgangs ändern können. Diese bereitstellungsspezifischen Details werden in diesem Abschnitt beschrieben.

Beispiele aus der Praxis, die all diese Konzepte verwenden, finden Sie unter Starter-Vorlagen.

Cachedatenträger

Bei der Bereitstellung von Cachedatenträgern muss eine verwaltete Datenträgerressource erstellt werden. Sie können optional zusätzlich zum Datenträger weitere Ressourcen erstellen. Die App Layering-Appliance muss die Berechtigung habeen, mit einem (von der Appliance generierten) SAS-Token auf den Datenträger zu schreiben. Ein Bootimage, das die App Layering Compositing Engine enthält, wird nach dem Erstellen auf den Datenträger hochgeladen.

Anforderungen an den Cachedatenträger

  • Muss eine verwaltete Datenträgerressource erstellen
  • createOption für die verwalteten Datenträger muss auf "Upload" eingestellt sein
  • uploadSizeBytes für die verwalteten Datenträger muss auf uploadSize eingestellt sein, angegeben durch die Eingabe, 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-->

Cachedatenträgereingabe

Das Eingabeobjekt enthält die Eigenschaften size und uploadSize. Dieses Objekt enthält keine Ausgabe aus einer anderen Bereitstellung.

Cachedatenträgerausgabe

Die Ausgabe der Bereitstellung wird an die Bootimage-Bereitstellung übergeben, sofern eine angegeben ist. Andernfalls wird es an die Maschinenbereitstellung weitergegeben.

Eine Ausgabe mit dem Namen diskId kann angegeben werden, um App Layering explizit mitzuteilen, welcher Datenträger verwendet werden soll. Wenn keine Ausgabe diskId angegeben ist, fügt App Layering automatisch eine hinzu und setzt sie auf die Ressourcen-ID der ersten verwalteten Datenträgerressource, die durch das Deployment erstellt wurde. Auf den durch diskId angegebenen Datenträger wurde das App Layering Compositing Engine-Bootimage hochgeladen.

Bootimage

Bei dieser Bereitstellung wird eine Ressource aus dem verwalteten Laufwerk erstellt, das durch die Cache-Disk-Bereitstellung erstellt wurde. Es gibt keine strengen Anforderungen an die Art der Ressourcen, die erstellt werden. Es muss jedoch eine Ressource erstellen, die beim Erstellen einer VM als Quelle für einen Betriebssystemdatenträger verwendet werden kann, z. B. eine Compute Gallery-Imageversion.

Datenträgeranforderungen für das Bootimage

  • Muss eine Ressource erstellen, mit der der Betriebssystemdatenträger einer VM mit demselben Inhalt wie der Datenträger mit der als Eingabe übergebenen ID erstellt werden kann.

Als Beispiel eine Compute Gallery-Imageversion mit der Eingabe diskId als Quelle berechnet:

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

Bootimage-Eingabe

Das Eingabeobjekt beinhaltet die Eigenschaft source. source stellt die Ausgaben der Cachedatenträger-Bereitstellung dar, wobei für jede Ausgabe eine Eigenschaft angegeben ist. Verwenden Sie die Eigenschaft diskId für die Quelle der Ressource, die erstellt wird.

Bootimage-Ausgabe

Die Ausgabe der Bootimage-Bereitstellung wird an die Maschinenbereitstellung übergeben. Es gibt keine speziellen oder erforderlichen Ausgänge. Sie müssen jedoch die Daten angeben, die erforderlich sind, um eine VM aus der erstellten Ressource zu erstellen, z. B. eine Ressourcen-ID.

Maschine

Die Maschinenbereitstellung 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äß den internen Verbindungen der Firewall-Ports für die Compositing-Maschine.

Wichtig:

Fügen Sie den durch die Cachedatenträgerbereitstellung erstellten Datenträger nicht an die virtuelle Maschine an. Der Cachedatenträger ist eine gemeinsam genutzte Ressource und gilt als schreibgeschützt. Erstellen Sie eine Kopie des Datenträgers und fügen Sie diesen stattdessen an, wenn Sie die Bootimage-Bereitstellung nicht verwenden.

Anforderungen an die Maschine

  • Muss eine Ressource für virtuelle Maschinen 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 mit dem Bootimage oder dem Cachedatenträger als Quelle erstellt werden
  • Die Datenträgergröße des Betriebssystems der virtuellen Maschine muss auf "[parameters('al').input.disk.size]" eingestellt sein
  • Die Eigenschaft userData 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 Bootimage-Bereitstellung, falls eine angegeben wurde. Andernfalls enthält es die Ausgabe der Cachedatenträger-Bereitstellung. Die Eigenschaft disk.size enthält die Datenträgergröße in GB.

Die Eigenschaft vm.userData enthält die Benutzerdaten, die der erstellten virtuellen Maschine zugewiesen werden müssen.

Maschineausgabe

Die Ausgabe des Machine-Deployments wird an das Layerimage-Deployment übergeben, sofern eines angegeben ist. Wenn Sie eine Layerimage-Bereitstellung verwenden, müssen Sie die ID des VM- oder Betriebssystemdatenträgers in der Ausgabe angeben, damit die Layerimage-Bereitstellung darauf verweisen kann.

Eine benannte Ausgabe machineId kann angegeben werden, um App Layering explizit mitzuteilen, welche virtuelle Maschine verwendet werden soll. Wenn keine Ausgabe machineId 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 benannte Ausgabe ipAddress kann angegeben werden, um App Layering explizit mitzuteilen, welche IP-Adresse für die Kommunikation mit der Maschine verwendet werden soll. Wenn keine Ausgabe ipAddress angegeben ist, verwendet App Layering die primäre private Adresse der primären Netzwerkkarte, die an die Ressource der virtuellen Maschine angeschlossen ist.

Eine Ausgabe mit dem Namen message kann angegeben werden, um eine Meldung bereitzustellen, die an den endgültigen Status einer Aufgabe zum Veröffentlichen von Images und den Status “erforderlich” einer Aufgabe zur Layererstellung in der App Layering-Benutzeroberfläche angehängt wird. Diese Meldung wird nur im endgültigen Status der Aufgabe zur Image-Veröffentlichung verwendet, wenn keine Layerimage-Bereitstellung angegeben ist.

Layerimage

Die Layerimage-Bereitstellung erstellt eine Ressource aus der virtuellen Maschine oder anderen Ressourcen, die durch die Maschinenbereitstellung erstellt wurden. Es gibt keine strengen Anforderungen an die Art der Ressourcen, die erstellt werden. Es erstellt jedoch eine Ressource, die als Eingabe für einen Provisioning Service wie Machine Creation Services (MCS) verwendet werden kann. Eine Compute Gallery-Imageressource ist ein gutes Beispiel.

Datenträgeranforderungen für Layerimages

  • Erstellt eine Ressource, die von einem Provisioning Service zum Erstellen virtueller Maschinen verwendet werden kann.

Als Beispiel erstellt der folgende Codeblock eine Compute Gallery-Imageversion, wobei die Eingabe diskId als Quelle verwendet wird. Dies setzt voraus, dass die Maschinenbereitstellung eine Ausgabe mit dem Namen 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-->

Layerimageeingabe

Das Eingabeobjekt enthält die Eigenschaften source und diskName. source stellt die Ausgaben der Maschinenbereitstellung dar, wobei für jede angegebene Ausgabe eine Eigenschaft angegeben ist. Die Eigenschaft diskName ist der Name des Datenträgers, die in der App Layering-Imagevorlage angegeben ist.

Layerimageausgabe

Die Ausgabe der Bereitstellungen wird an keine anderen Bereitstellungen weitergegeben. Eine Ausgabe mit dem Namen message kann jedoch angegeben werden, um eine Meldung bereitzustellen, die an den endgültigen Status einer Aufgabe zum Veröffentlichen von Images in der App Layering-Benutzeroberfläche angehängt wird.

ARM-Vorlagen erstellen