Übung: Testen und Bereitstellen der konvertierten Vorlage
Sie haben eine Bicep-Datei erstellt, die die VM darstellt, auf der die Spielzeug-Lkw-Dienste ausgeführt werden. Bevor Sie sich zur Verwendung der Datei in Ihren Pipelines entscheiden, müssen Sie überprüfen, ob die Datei Ihre aktuelle Azure-Umgebung richtig darstellt. In diesem Modul testen Sie Ihre Bicep-Datei und stellen sie dann für Ihre vorhandenen Azure-Ressourcen bereit.
Während des Prozesses führen Sie die folgenden Aufgaben aus:
- Führen Sie den Was-wäre-wenn-Befehl aus, um die Auswirkungen Ihrer Bereitstellung zu ermitteln.
- Stellen Sie die Vorlage bereit, und überprüfen Sie den Bereitstellungsstatus.
Ausführen von Was-wäre-wenn
Bevor Sie Ihre neue Bicep-Datei bereitstellen, führen Sie zuerst den Was-wäre-wenn-Befehl aus. Mit diesem Befehl wird überprüft, ob Ihre Bicep-Datei gültig ist. Außerdem liefert der Befehl eine Liste der Änderungen, die in Ihrer Azure-Umgebung auftreten, wenn Sie die Datei bereitstellen.
Hinweis
Bei einer echten Migration sollten Sie den Was-wäre-wenn-Befehl für Ihre Produktions- und Nicht-Produktionsumgebungen mit den entsprechenden Parametern für jede Umgebung ausführen. Dies hilft Ihnen, alle Unterschiede in der Konfiguration zu erkennen, die Sie möglicherweise nicht entdeckt haben. In diesem Beispiel verwenden Sie eine einzelne Umgebung, sodass Sie den Was-wäre-wenn-Vorgang nur für diese Umgebung ausführen.
Achtung
Der Bereitstellungsmodus, den Sie für den Was-wäre-wenn-Befehl und die nachfolgende Vorlagenbereitstellung verwenden, kann ein Risiko darstellen. Im Modus „Vollständig“ werden alle in der Ressourcengruppe definierten Ressourcen gelöscht, die nicht in Ihrer Vorlage angegeben sind. Dies ist häufig eine bewährte Methode, da Sie so sicherstellen können, dass Ihr Bicep-Code vollständig ist. Diese Option birgt jedoch ein gewisses Risiko, da Sie bei der Migration möglicherweise eine Ressource vergessen haben.
In dieser Übung führen Sie den Was-wäre-wenn-Befehl im vollständigen Modus aus, damit alle Ressourcen erkannt werden, die Sie möglicherweise übersehen haben. Anschließend führen Sie die Bereitstellung im inkrementellen Modus aus.
Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus:
az deployment group what-if \ --mode Complete \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
Geben Sie bei entsprechender Aufforderung ein sicheres Kennwort für den
virtualMachineAdminPassword
-Parameterwert ein.
Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus:
New-AzResourceGroupDeployment ` -WhatIf ` -Mode Complete ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
Geben Sie bei entsprechender Aufforderung ein sicheres Kennwort für den
virtualMachineAdminPassword
-Parameterwert ein.
Überprüfen der Was-wäre-wenn-Ausgabe
Überprüfen Sie die Was-wäre-wenn-Ausgabe, die wie das folgende Beispiel aussieht:
Note: The result may contain false positive predictions (noise).
You can help us improve the accuracy of the result by opening an issue here: https://aka.ms/WhatIfIssues.
Resource and property changes are indicated with these symbols:
- Delete
~ Modify
x NoEffect
= NoChange
The deployment will update the following scope:
Scope: /subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/TOYTRUCK
- Microsoft.Compute/disks/ToyTruckServer_disk1_23e6a144c4ea4049b3e2be24b78a9e81
id: "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/TOYTRUCK/providers/Microsoft.Compute/disks/ToyTruckServer_disk1_23e6a144c4ea4049b3e2be24b78a9e81"
location: "westus3"
managedBy: "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/ToyTruck/providers/Microsoft.Compute/virtualMachines/ToyTruckServer"
name: "ToyTruckServer_disk1_23e6a144c4ea4049b3e2be24b78a9e81"
sku.name: "Premium_LRS"
sku.tier: "Premium"
type: "Microsoft.Compute/disks"
~ Microsoft.Network/networkInterfaces/toytruckserver123 [2022-05-01]
- kind: "Regular"
- properties.allowPort25Out: true
~ properties.ipConfigurations: [
~ 0:
- properties.privateIPAddress: "10.0.0.4"
- properties.publicIPAddress.properties.deleteOption: "Detach"
- properties.publicIPAddress.sku:
name: "Basic"
tier: "Regional"
]
x properties.ipConfigurations[0].properties.primary: true
= Microsoft.Compute/virtualMachines/ToyTruckServer [2022-08-01]
x properties.storageProfile.osDisk.managedDisk.storageAccountType: "Premium_LRS"
= Microsoft.Network/networkSecurityGroups/ToyTruckServer-nsg [2022-05-01]
= Microsoft.Network/publicIPAddresses/ToyTruckServer-ip [2022-05-01]
= Microsoft.Network/virtualNetworks/ToyTruck-vnet [2022-05-01]
Resource changes: 1 to delete, 1 to modify, 4 no change.
Die Ausgabe enthält drei wichtige Informationen. Sehen wir uns die einzelnen Informationen an.
Der Was-wäre-wenn-Befehl erkennt, dass der verwaltete Datenträger gelöscht wird. Diese Ausgabe ist nicht richtig. Verwaltete Datenträger werden automatisch erstellt, wenn Sie VMs erstellen. Obwohl verwaltete Datenträger in der Liste der zu löschenden Ressourcen angezeigt werden, verhindert die VM deren Löschung. Es ist jedoch immer ratsam, vorsichtig vorzugehen. In den nächsten Schritten führen Sie die eigentliche Bereitstellung im inkrementellen Modus durch, um das Risiko zu verringern, dass etwas schief geht.
Der Was-wäre-wenn-Befehl erkennt, dass die
privateIPAddress
-Eigenschaft der RessourcenetworkInterface
entfernt wird. Dieses Ergebnis ist in Ordnung, da Sie diese Eigenschaft absichtlich entfernt haben. DieprivateIPAllocationMethod
-Eigenschaft ist alsDynamic
festgelegt, sodass das Entfernen derprivateIPAddress
-Eigenschaft keine Auswirkungen hat, obwohl es sich um eine Änderung handelt.Der Was-wäre-wenn-Befehl erkennt, dass zwei Eigenschaften für die
publicIPAddress
der RessourcenetworkInterface
gelöscht werden. Sie fügen diese Eigenschaften hinzu, um das Problem zu beheben.
Aktualisieren der Vorlage
Aktualisieren Sie in der Datei main.bicep die Ressource networkInterface
, um die publicIPAddress
-Eigenschaften für deleteOption
und sku
einzuschließen:
resource networkInterface 'Microsoft.Network/networkInterfaces@2022-05-01' = {
name: networkInterfaceName
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: publicIPAddress.id
properties: {
deleteOption: 'Detach'
}
sku: {
name: 'Basic'
tier: 'Regional'
}
}
subnet: {
id: virtualNetwork::defaultSubnet.id
}
primary: true
privateIPAddressVersion: 'IPv4'
}
}
]
enableAcceleratedNetworking: true
enableIPForwarding: false
disableTcpStateTracking: false
networkSecurityGroup: {
id: networkSecurityGroup.id
}
nicType: 'Standard'
}
}
Erneutes Ausführen des Was-wäre-wenn-Befehls
Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus:
az deployment group what-if \ --mode Complete \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
Geben Sie bei entsprechender Aufforderung ein sicheres Kennwort für den
virtualMachineAdminPassword
-Parameterwert ein.Überprüfen Sie nach Abschluss des Vorgangs die Ausgabe. Die Ausgabe sieht in etwa wie das folgende Beispiel aus. Die Eigenschaften
deleteOption
undsku
werden in der Ausgabe nicht angezeigt.Note: The result may contain false positive predictions (noise). You can help us improve the accuracy of the result by opening an issue here: https://aka.ms/WhatIfIssues. Resource and property changes are indicated with these symbols: - Delete ~ Modify x NoEffect = NoChange The deployment will update the following scope: Scope: /subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/TOYTRUCK - Microsoft.Compute/disks/ToyTruckServer_disk1_23e6a144c4ea4049b3e2be24b78a9e81 id: "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/TOYTRUCK/providers/Microsoft.Compute/disks/ToyTruckServer_disk1_23e6a144c4ea4049b3e2be24b78a9e81" location: "westus3" managedBy: "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/ToyTruck/providers/Microsoft.Compute/virtualMachines/ToyTruckServer" name: "ToyTruckServer_disk1_23e6a144c4ea4049b3e2be24b78a9e81" sku.name: "Premium_LRS" sku.tier: "Premium" type: "Microsoft.Compute/disks" ~ Microsoft.Network/networkInterfaces/toytruckserver123 [2022-05-01] - kind: "Regular" - properties.allowPort25Out: true ~ properties.ipConfigurations: [ ~ 0: - properties.privateIPAddress: "10.0.0.4" ] x properties.ipConfigurations[0].properties.primary: true = Microsoft.Compute/virtualMachines/ToyTruckServer [2022-08-01] x properties.storageProfile.osDisk.managedDisk.storageAccountType: "Premium_LRS" = Microsoft.Network/networkSecurityGroups/ToyTruckServer-nsg [2022-05-01] = Microsoft.Network/publicIPAddresses/ToyTruckServer-ip [2022-05-01] = Microsoft.Network/virtualNetworks/ToyTruck-vnet [2022-05-01] Resource changes: 1 to delete, 1 to modify, 4 no change.
Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus:
New-AzResourceGroupDeployment ` -WhatIf ` -Mode Complete ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
Geben Sie bei entsprechender Aufforderung ein sicheres Kennwort für den
virtualMachineAdminPassword
-Parameterwert ein.Überprüfen Sie nach Abschluss des Vorgangs die Ausgabe. Die Ausgabe sieht in etwa wie das folgende Beispiel aus. Die Eigenschaften
deleteOption
undsku
werden in der Ausgabe nicht angezeigt.Note: The result may contain false positive predictions (noise). You can help us improve the accuracy of the result by opening an issue here: https://aka.ms/WhatIfIssues. Resource and property changes are indicated with these symbols: - Delete ~ Modify x NoEffect = NoChange The deployment will update the following scope: Scope: /subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/TOYTRUCK - Microsoft.Compute/disks/ToyTruckServer_disk1_23e6a144c4ea4049b3e2be24b78a9e81 id: "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/TOYTRUCK/providers/Microsoft.Compute/disks/ToyTruckServer_disk1_23e6a144c4ea4049b3e2be24b78a9e81" location: "westus3" managedBy: "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/ToyTruck/providers/Microsoft.Compute/virtualMachines/ToyTruckServer" name: "ToyTruckServer_disk1_23e6a144c4ea4049b3e2be24b78a9e81" sku.name: "Premium_LRS" sku.tier: "Premium" type: "Microsoft.Compute/disks" ~ Microsoft.Network/networkInterfaces/toytruckserver123 [2022-05-01] - kind: "Regular" - properties.allowPort25Out: true ~ properties.ipConfigurations: [ ~ 0: - properties.privateIPAddress: "10.0.0.4" ] x properties.ipConfigurations[0].properties.primary: true = Microsoft.Compute/virtualMachines/ToyTruckServer [2022-08-01] x properties.storageProfile.osDisk.managedDisk.storageAccountType: "Premium_LRS" = Microsoft.Network/networkSecurityGroups/ToyTruckServer-nsg [2022-05-01] = Microsoft.Network/publicIPAddresses/ToyTruckServer-ip [2022-05-01] = Microsoft.Network/virtualNetworks/ToyTruck-vnet [2022-05-01] Resource changes: 1 to delete, 1 to modify, 4 no change.
Bereitstellen der Vorlage
Sie wissen, dass Ihre Bicep-Datei gültig ist, und der Was-wäre-wenn-Vorgang hat ergeben, dass Ihre Vorlage die erwarteten Ergebnisse liefert. Sie können Ihre Vorlage jetzt bereitstellen. Wenn dieser Schritt erfolgreich ist, sollten Sie keine Auswirkungen feststellen.
Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus:
az deployment group create \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
Geben Sie bei entsprechender Aufforderung ein sicheres Kennwort für den
virtualMachineAdminPassword
-Parameterwert ein.Innerhalb weniger Sekunden wird die Bereitstellung erfolgreich abgeschlossen.
Öffnen Sie die Ressourcengruppe im Azure-Portal. Wählen Sie 2 erfolgreich aus, um die Liste der Bereitstellungen anzuzeigen:
Die Bereitstellung war erfolgreich:
Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus:
New-AzResourceGroupDeployment ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
Geben Sie bei entsprechender Aufforderung ein sicheres Kennwort für den
virtualMachineAdminPassword
-Parameterwert ein.Innerhalb weniger Sekunden wird die Bereitstellung erfolgreich abgeschlossen.
Öffnen Sie die Ressourcengruppe im Azure-Portal. Wählen Sie den Link 2 erfolgreich aus, um die Liste der Bereitstellungen anzuzeigen:
Die Bereitstellung war erfolgreich:
Tipp
Bei einer echten Migration sollten Sie ebenfalls Feuerproben durchführen, um sicherzustellen, dass Ihre Ressourcen weiterhin ordnungsgemäß funktionieren. Eine Feuerprobe ist eine abschließende Überprüfung, um sicherzustellen, dass Sie keine unbeabsichtigten Änderungen vorgenommen haben.
Bereinigen der Ressourcen
Nachdem Sie die Übung abgeschlossen haben, können Sie die Ressourcen entfernen, damit Ihnen dafür keine Gebühren berechnet werden.
Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus:
az group delete --resource-group ToyTruck --yes --no-wait
Die Ressourcengruppe und alle zugehörigen Ressourcen werden im Hintergrund gelöscht.
Remove-AzResourceGroup -Name ToyTruck -Force