Oefening: uw geconverteerde sjabloon testen en implementeren
U hebt een Bicep-bestand gemaakt voor de virtuele machine waarop de speelgoedtruckdiensten worden uitgevoerd. Voordat u het bestand in uw pijplijnen gaat gebruiken, moet u controleren of het bestand de huidige Azure-omgeving nauwkeurig vertegenwoordigt. In deze module gaat u uw Bicep-bestand testen en implementeren via uw bestaande Azure-resources.
Tijdens het proces voert u de volgende taken uit:
- Voer de what-if-opdracht uit om de effecten van uw deployment te bepalen.
- Implementeer de sjabloon en verifieer de status van de implementatie.
"Wat-als-scenario uitvoeren"
Voer de what-if-opdracht uit voordat u het nieuwe Bicep-bestand implementeert. Met deze opdracht wordt gecontroleerd of uw Bicep-bestand geldig is. De opdracht bevat ook een lijst met wijzigingen die plaatsvinden in uw Azure-omgeving wanneer u het bestand implementeert.
Notitie
In een echte migratie moet u de what-if-opdracht uitvoeren voor uw productie- en niet-productieomgevingen met de juiste set parameters voor elke omgeving. Dit helpt u bij het detecteren van eventuele verschillen in configuratie die u mogelijk niet hebt ontdekt. In dit voorbeeld gebruikt u één omgeving, zodat u alleen de wat-als-bewerking uitvoert voor die omgeving.
Voorzichtigheid
De implementatiemodus die u gebruikt voor de wat-als-opdracht en de volgende sjabloonimplementatie kan risico's veroorzaken. In de volledige modus worden alle resources verwijderd die zijn gedefinieerd in de resourcegroep die niet zijn opgegeven in uw sjabloon. Vaak is dit een goede gewoonte omdat het u helpt te verzekeren dat uw Bicep-code volledig is. Deze optie heeft echter een risico omdat u mogelijk een resource in uw migratie hebt gemist.
In deze oefening voert u de wat-als ('what-if') opdracht uit in de volledige modus, zodat bronnen die u mogelijk hebt gemist, worden gedetecteerd. Vervolgens voert u de implementatie uit in de incrementele modus.
Voer in de Visual Studio Code-terminal de volgende opdracht uit:
az deployment group what-if \ --mode Complete \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
Wanneer u hierom wordt gevraagd, voert u een beveiligd wachtwoord in voor de parameterwaarde
virtualMachineAdminPassword
.
Voer in de Visual Studio Code-terminal de volgende opdracht uit:
New-AzResourceGroupDeployment ` -WhatIf ` -Mode Complete ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
Wanneer u hierom wordt gevraagd, voert u een beveiligd wachtwoord in voor de parameterwaarde
virtualMachineAdminPassword
.
De wat-als-uitvoer bekijken
Bekijk de wat-als-uitvoer, die eruitziet als in het volgende voorbeeld:
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.
De uitvoer bevat drie belangrijke stukjes informatie. Laten we elk item eens bekijken.
Met de wat-als-opdracht wordt gedetecteerd dat de beheerde schijf zal worden verwijderd. Deze uitvoer is niet nauwkeurig. Beheerde schijven worden automatisch gemaakt wanneer u virtuele machines maakt. Hoewel beheerde schijven worden weergegeven in de lijst met resources die moeten worden verwijderd, voorkomt de virtuele machine dat ze worden verwijderd. Het is echter altijd raadzaam om voorzichtig te werken, dus in de volgende stappen voert u de daadwerkelijke implementatie uit in de incrementele modus om het risico te beperken dat er iets misgaat.
Met de wat-als-opdracht wordt gedetecteerd dat de eigenschap
privateIPAddress
van denetworkInterface
bron wordt verwijderd. Dit resultaat is OK, omdat u die eigenschap opzettelijk hebt verwijderd. De eigenschapprivateIPAllocationMethod
is ingesteld opDynamic
, dus het verwijderen van de eigenschapprivateIPAddress
heeft geen effect, ook al is dit een wijziging.De wat-als-opdracht detecteert dat twee eigenschappen voor de
publicIPAddress
van denetworkInterface
-bron zullen worden verwijderd. U voegt deze eigenschappen toe om het probleem op te lossen.
De sjabloon bijwerken
Werk in main.bicep-de networkInterface
-resource bij om de publicIPAddress
eigenschappen voor deleteOption
en sku
op te nemen:
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'
}
}
Voer de what-if-opdracht opnieuw uit
Voer in de Visual Studio Code-terminal de volgende opdracht uit:
az deployment group what-if \ --mode Complete \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
Wanneer u hierom wordt gevraagd, voert u een beveiligd wachtwoord in voor de parameterwaarde
virtualMachineAdminPassword
.Nadat de bewerking is voltooid, controleert u de uitvoer. De uitvoer ziet eruit als in het volgende voorbeeld. De eigenschappen
deleteOption
ensku
worden niet weergegeven in de uitvoer.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.
Voer in de Visual Studio Code-terminal de volgende opdracht uit:
New-AzResourceGroupDeployment ` -WhatIf ` -Mode Complete ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
Wanneer u hierom wordt gevraagd, voert u een beveiligd wachtwoord in voor de parameterwaarde
virtualMachineAdminPassword
.Nadat de bewerking is voltooid, controleert u de uitvoer. De uitvoer ziet eruit als in het volgende voorbeeld. De eigenschappen
deleteOption
ensku
worden niet weergegeven in de uitvoer.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.
Uw sjabloon implementeren
U weet dat uw Bicep-bestand geldig is en de wat-als-bewerking geeft aan dat uw sjabloon de verwachte resultaten levert. U bent nu klaar om uw sjabloon te implementeren. Als deze stap slaagt, ziet u geen effect.
Voer in de Visual Studio Code-terminal de volgende opdracht uit:
az deployment group create \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
Wanneer u hierom wordt gevraagd, voert u een beveiligd wachtwoord in voor de parameterwaarde
virtualMachineAdminPassword
.Binnen een paar seconden is de implementatie voltooid.
Open de resourcegroep in de Azure Portal. Selecteer 2 Geslaagd om de lijst met implementaties weer te geven:
De implementatie is voltooid:
Voer in de Visual Studio Code-terminal de volgende opdracht uit:
New-AzResourceGroupDeployment ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
Wanneer u hierom wordt gevraagd, voert u een beveiligd wachtwoord in voor de parameterwaarde
virtualMachineAdminPassword
.Binnen een paar seconden is de implementatie voltooid.
Open de resourcegroep in het Azure portal. Selecteer de link 2 Geslaagd om de lijst van implementaties te bekijken.
De implementatie is voltooid:
Fooi
In een echte migratie moet u ook rooktests uitvoeren om te controleren of uw resources nog steeds correct werken. Een smoketest is een laatste controle om ervoor te zorgen dat u geen onbedoelde wijzigingen hebt aangebracht.
De middelen opschonen
Nu u de oefening hebt voltooid, kunt u de resources verwijderen zodat u er geen kosten voor in rekening worden gebracht.
Voer in de Visual Studio Code-terminal de volgende opdracht uit:
az group delete --resource-group ToyTruck --yes --no-wait
De resourcegroep en alle bijbehorende resources worden op de achtergrond verwijderd.
Remove-AzResourceGroup -Name ToyTruck -Force