Cvičení – testování a nasazení převedené šablony
Vytvořili jste soubor Bicep, který představuje virtuální počítač, na kterém běží služby hračkového náklaďáku. Předtím, než se zavážete k použití souboru v datových potrubích, musíte ověřit, že soubor přesně představuje vaše aktuální prostředí Azure. V tomto modulu otestujete a pak nasadíte soubor Bicep přes existující prostředky Azure.
Během tohoto procesu provedete následující úlohy:
- Spuštěním příkazu what-if určete účinky nasazení.
- Nasaďte šablonu a ověřte stav nasazení.
Spustit hypotetickou simulaci
Před nasazením nového souboru Bicep spusťte příkaz what-if. Tento příkaz ověří platnost souboru Bicep. Příkaz také poskytuje seznam změn, které se projeví ve vašem prostředí Azure při nasazení souboru.
Poznámka
Při skutečné migraci byste měli spustit příkaz what-if pro produkční a neprodukční prostředí s odpovídající sadou parametrů pro každé prostředí. Tímto způsobem zjistíte případné rozdíly v konfiguraci, které jste nemuseli odhalit. V tomto příkladu použijete jedno prostředí, takže spustíte pouze operaci "co když" s tímto prostředím.
Opatrnost
Režim nasazení, který použijete pro příkaz what-if, a následné nasazení šablony může představovat riziko. Úplný režim odstraní všechny prostředky definované ve skupině prostředků, které nejsou zadané v šabloně. Často je to dobrý postup, protože vám pomůže zajistit, aby byl váš kód Bicep úplný. Tato možnost ale přináší určité riziko, protože jste při migraci mohli přehlédnout některý prostředek.
V tomto cvičení spustíte příkaz "co kdyby" v úplném režimu, abyste zjistili všechny prostředky, které jste mohli přehlédnout. Pak nasazení spustíte v přírůstkovém režimu.
V terminálu editoru Visual Studio Code spusťte následující příkaz:
az deployment group what-if \ --mode Complete \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
Po zobrazení výzvy zadejte bezpečné heslo pro hodnotu parametru
virtualMachineAdminPassword
.
V terminálu editoru Visual Studio Code spusťte následující příkaz:
New-AzResourceGroupDeployment ` -WhatIf ` -Mode Complete ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
Po zobrazení výzvy zadejte bezpečné heslo pro hodnotu parametru
virtualMachineAdminPassword
.
Kontrola výstupu z analýzy "co kdyby"
Prohlédněte si výstup analýzy "co kdyby", který vypadá, jako v následujícím příkladu:
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.
Výstup obsahuje tři důležité informace. Pojďme se na každý z nich podívat.
Příkaz "co kdyby" zjistí, že se spravovaný disk odstraní. Tento výstup není přesný. Spravované disky se vytvoří automaticky při vytváření virtuálních počítačů. I když se spravované disky zobrazují v seznamu prostředků, které se mají odstranit, virtuální počítač brání jejich odstranění. Přijetí opatrného přístupu je však vždy vhodné, takže v dalších krocích spustíte skutečné nasazení v přírůstkovém režimu, abyste zmírnili riziko, že se něco pokazí.
Příkaz what-if zjistí, že je odebrána vlastnost
privateIPAddress
prostředkunetworkInterface
. Tento výsledek je v pořádku, protože jste tuto vlastnost záměrně odebrali. VlastnostprivateIPAllocationMethod
je nastavená naDynamic
, takže odebrání vlastnostiprivateIPAddress
nebude mít žádný vliv, i když se jedná o změnu.Příkaz what-if zjistí, že se odstraní dvě vlastnosti
publicIPAddress
prostředkunetworkInterface
. Tyto vlastnosti přidáte, abyste problém vyřešili.
Aktualizace šablony
V main.bicepaktualizujte prostředek networkInterface
tak, aby zahrnoval vlastnosti publicIPAddress
pro deleteOption
a 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'
}
}
Spusťte příkaz what-if znovu.
V terminálu editoru Visual Studio Code spusťte následující příkaz:
az deployment group what-if \ --mode Complete \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
Po zobrazení výzvy zadejte bezpečné heslo pro hodnotu parametru
virtualMachineAdminPassword
.Po dokončení operace zkontrolujte výstup. Výstup bude vypadat jako v následující ukázce. Ve výstupu se nezobrazují vlastnosti
deleteOption
asku
.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.
V terminálu editoru Visual Studio Code spusťte následující příkaz:
New-AzResourceGroupDeployment ` -WhatIf ` -Mode Complete ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
Po zobrazení výzvy zadejte bezpečné heslo pro hodnotu parametru
virtualMachineAdminPassword
.Po dokončení operace zkontrolujte výstup. Výstup bude vypadat jako v následující ukázce. Ve výstupu se nezobrazují vlastnosti
deleteOption
asku
.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.
Nasazení šablony
Víte, že váš soubor Bicep je platný a operace "co kdyby" indikuje, že vaše šablona poskytuje očekávané výsledky. Teď jste připraveni k nasazení šablony. Pokud tento krok proběhne úspěšně, neměl by se zobrazit žádný efekt.
V terminálu editoru Visual Studio Code spusťte následující příkaz:
az deployment group create \ --resource-group ToyTruck \ --template-file main.bicep \ --parameters main.parameters.production.json
Po zobrazení výzvy zadejte bezpečné heslo pro hodnotu parametru
virtualMachineAdminPassword
.Během několika sekund se nasazení úspěšně dokončí.
Na webu Azure Portal otevřete skupinu prostředků. Vyberte 2 Úspěšné a zobrazte seznam nasazení:
Nasazení proběhlo úspěšně:
V terminálu editoru Visual Studio Code spusťte následující příkaz:
New-AzResourceGroupDeployment ` -ResourceGroupName ToyTruck ` -TemplateFile main.bicep ` -TemplateParameterFile main.parameters.production.json
Po zobrazení výzvy zadejte bezpečné heslo pro hodnotu parametru
virtualMachineAdminPassword
.Během několika sekund se nasazení úspěšně dokončí.
Na webu Azure Portal otevřete skupinu prostředků. Výběrem odkazu 2 Úspěch zobrazte seznam nasazení:
Nasazení proběhlo úspěšně:
Spropitné
V reálné migraci byste také měli spustit kouřové testy, abyste ověřili, že vaše prostředky stále fungují správně. Kouřový test je konečná kontrola, která zajišťuje, že jste neudělali neúmyslné změny.
Vyčistěte prostředky
Teď, když jste cvičení dokončili, můžete odebrat prostředky, abyste za ně nemuseli platit.
V terminálu editoru Visual Studio Code spusťte následující příkaz:
az group delete --resource-group ToyTruck --yes --no-wait
Skupina prostředků a všechny její zdroje se odstraní na pozadí.
Remove-AzResourceGroup -Name ToyTruck -Force