Övning – Testa och distribuera den konverterade mallen
Du har skapat en Bicep-fil som representerar den virtuella dator som kör leksaksbilstjänsterna. Innan du åtar dig att använda filen i dina pipelines måste du kontrollera att filen representerar din aktuella Azure-miljö korrekt. I den här modulen ska du testa och sedan distribuera Bicep-filen över dina befintliga Azure-resurser.
Under processen utför du följande uppgifter:
- Kör kommandot what-if för att fastställa effekterna av din distribution.
- Distribuera mallen och verifiera distributionsstatusen.
Kör hypotetisk analys
Kör kommandot what-if innan du distribuerar din nya Bicep-fil. Det här kommandot verifierar att Bicep-filen är giltig. Kommandot innehåller också en lista över ändringar som kommer att ske i Din Azure-miljö när du distribuerar filen.
Anteckning
I en verklig migrering bör du köra kommandot what-if mot dina produktions- och icke-produktionsmiljöer med lämplig uppsättning parametrar för varje miljö. Om du gör det kan du identifiera eventuella skillnader i konfigurationen som du kanske inte har upptäckt. I det här exemplet använder du en enda miljö, så du kör bara konsekvensåtgärden mot den miljön.
Försiktighet
Distributionsläget som du använder för kommandot what-if och den efterföljande malldistributionen kan medföra risk. Fullständigt läge tar bort alla resurser som definierats i resursgruppen som inte anges i mallen. Detta är ofta en bra idé eftersom det hjälper dig att se till att din Bicep-kod är fullständig. Det här alternativet medför dock en viss risk eftersom du kanske har missat en resurs i migreringen.
I den här övningen kör du kommandot what-if med hjälp av fullständigt läge så att alla resurser som du har missat identifieras. Sedan kör du distributionen i inkrementellt läge.
Kör följande kommando i Visual Studio Code-terminalen:
az deployment group what-if \ --mode Complete \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
När du uppmanas till det anger du ett säkert lösenord för parametervärdet
virtualMachineAdminPassword
.
Kör följande kommando i Visual Studio Code-terminalen:
New-AzResourceGroupDeployment ` -WhatIf ` -Mode Complete ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
När du uppmanas till det anger du ett säkert lösenord för parametervärdet
virtualMachineAdminPassword
.
Granska "vad händer om"-analysen
Granska vad händer om-resultaten, som ser ut som följande exempel:
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.
Utdata innehåller tre viktiga informationsdelar. Nu ska vi granska var och en.
Kommandot what-if identifierar att den hanterade disken kommer att tas bort. Utdata är inte korrekta. Hanterade diskar skapas automatiskt när du skapar virtuella datorer. Även om hanterade diskar visas i listan över resurser som ska tas bort, förhindrar den virtuella datorn att de tas bort. Det är dock alltid lämpligt att använda en försiktig metod, så i nästa steg kör du den faktiska distributionen i inkrementellt läge för att minska risken för att något går fel.
What-if-kommandot identifierar att egenskapen
privateIPAddress
förnetworkInterface
-resursen tas bort. Det här resultatet är OK eftersom du har tagit bort den egenskapen avsiktligt. EgenskapenprivateIPAllocationMethod
är inställd påDynamic
, så att ta bort egenskapenprivateIPAddress
har ingen effekt, även om det är en ändring.Kommandot what-if identifierar att två egenskaper för
publicIPAddress
för dennetworkInterface
resursen tas bort. Du lägger till de här egenskaperna för att åtgärda problemet.
Uppdatera mallen
I main.bicepuppdaterar du den networkInterface
resursen så att den innehåller egenskaperna publicIPAddress
för deleteOption
och sku
:
resource networkInterface 'Microsoft.Network/networkInterfaces@2024-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'
}
}
Kör what-if-kommandot igen
Kör följande kommando i Visual Studio Code-terminalen:
az deployment group what-if \ --mode Complete \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
När du uppmanas till det anger du ett säkert lösenord för parametervärdet
virtualMachineAdminPassword
.När åtgärden är klar, granska resultatet. Utdata ser ut som i följande exempel. Egenskaperna
deleteOption
ochsku
visas inte i utdata.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.
Kör följande kommando i Visual Studio Code-terminalen:
New-AzResourceGroupDeployment ` -WhatIf ` -Mode Complete ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
När du uppmanas till det anger du ett säkert lösenord för parametervärdet
virtualMachineAdminPassword
.När operationen är klar, granskar du utdata. Utdata ser ut som i följande exempel. Egenskaperna
deleteOption
ochsku
visas inte i utdata.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.
Distribuera mallen
Du vet att din Bicep-fil är giltig och vad händer om-analysen visar att din mall ger de resultat du förväntar dig. Nu är du redo att distribuera mallen. Om det här steget lyckas bör du inte se någon effekt.
Kör följande kommando i Visual Studio Code-terminalen:
az deployment group create \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
När du uppmanas till det anger du ett säkert lösenord för parametervärdet
virtualMachineAdminPassword
.Inom några sekunder slutförs distributionen.
Öppna resursgruppen i Azure-portalen. Välj 2 Lyckad för att visa listan över utrullningar:
Installationen lyckades.
Kör följande kommando i Visual Studio Code-terminalen:
New-AzResourceGroupDeployment ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
När du uppmanas till det anger du ett säkert lösenord för parametervärdet
virtualMachineAdminPassword
.Inom några sekunder slutförs distributionen.
Öppna resursgruppen i Azure-portalen. Välj länken 2 Lyckades för att visa listan över distributioner:
Distributionen lyckades:
Tips
I en verklig migrering bör du också köra röktester för att kontrollera att dina resurser fortfarande fungerar korrekt. Ett röktest är en sista kontroll för att säkerställa att du inte gjorde oavsiktliga ändringar.
Rensa resurserna
Nu när du har slutfört övningen kan du ta bort resurserna så att du inte debiteras för dem.
Kör följande kommando i Visual Studio Code-terminalen:
az group delete --resource-group ToyTruck --yes --no-wait
Resursgruppen och alla dess resurser tas bort i bakgrunden.
Remove-AzResourceGroup -Name ToyTruck -Force