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 aufuploadSize
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.
- Die Machine Starter-Vorlage legt den Ausgabeparameter
message
auf einen Link zur Maschine im Azure-Portal fest.
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.