Övning – Förhandsgranska ändringar med kommandot what-if
Kommentar
Första gången du aktiverar en sandbox-miljö och godkänner villkoren associeras ditt Microsoft-konto med en ny Azure-katalog med namnet Microsoft Learn Sandbox. Du läggs också till i en särskild prenumeration med namnet Concierge-prenumeration.
Designteamet på ditt leksaksföretag har bett dig att uppdatera en mall som konfigurerar ett virtuellt nätverk. I den här lektionen använder du konsekvens för att verifiera effekterna av att distribuera den uppdaterade mallen.
Under processen gör du följande:
- Skapa och distribuera en första mall.
- Förbered för att distribuera en mall som är något annorlunda och använd konsekvensåtgärden för att granska de förväntade ändringarna.
- Använd en fullständig distribution för att distribuera en tom mall och använd konsekvensåtgärden för att granska de förväntade ändringarna.
I den här övningen använder vi Azure Resource Manager Tools for Visual Studio Code. Installera tillägget i Visual Studio Code.
Den här övningen använder Bicep-tillägget för Visual Studio Code. Installera tillägget i Visual Studio Code.
Skapa startmallen
Du börjar med en befintlig mall som ditt team har använt. Mallen skapar det virtuella nätverket.
Öppna Visual Studio Code.
Skapa en ny fil med namnet azuredeploy.json.
Spara den tomma filen så att Visual Studio Code läser in ARM-mallverktyget.
Du kan antingen välja Spara som-fil> eller välja Ctrl+S i Windows (⌘+S på macOS). Kom ihåg var du har sparat filen. Du kanske till exempel vill skapa en skriptmapp för att spara den.
Kopiera följande kod till azuredeploy.json.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "apiVersion": "2024-01-01", "type": "Microsoft.Network/virtualNetworks", "name": "vnet-001", "location": "[resourceGroup().location]", "tags": { "CostCenter": "12345", "Owner": "Team A" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Spara mallen.
Öppna Visual Studio Code.
Skapa en ny fil med namnet main.bicep.
Spara den tomma filen så att Visual Studio Code läser in Bicep-verktyget.
Du kan antingen välja Spara som-fil> eller välja Ctrl+S i Windows (⌘+S på macOS). Kom ihåg var du har sparat filen. Du kanske till exempel vill skapa en skriptmapp för att spara den.
Kopiera följande kod till main.bicep.
resource vnet 'Microsoft.Network/virtualNetworks@2024-01-01' = { name: 'vnet-001' location: resourceGroup().location tags: { 'CostCenter': '12345' 'Owner': 'Team A' } properties: { addressSpace: { addressPrefixes: [ '10.0.0.0/16' ] } enableVmProtection: false enableDdosProtection: false subnets: [ { name: 'subnet001' properties: { addressPrefix: '10.0.0.0/24' } } { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ] } }
Spara mallen.
Distribuera mallen till Azure
Om du vill distribuera den här mallen till Azure loggar du in på ditt Azure-konto från Visual Studio Code-terminalen. Se till att du har installerat Azure PowerShell och logga in på samma konto som aktiverade sandbox-miljön.
I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.
Om gränssnittet som visas till höger i terminalfönstret är powershell eller pwsh är rätt gränssnitt öppet och du kan gå vidare till nästa avsnitt.
Om ett annat gränssnitt än powershell eller pwsh visas väljer du listrutepilen för gränssnittet och väljer sedan PowerShell.
I listan över terminalgränssnitt väljer du powershell eller pwsh.
I terminalen går du till katalogen där du sparade mallen. Om du till exempel har sparat mallen i mallmappen kan du använda det här kommandot:
Set-Location -Path templates
Installera Bicep CLI
Om du vill använda Bicep från Azure PowerShell installerar du Bicep CLI.
Logga in i Azure med Azure PowerShell
Kör följande kommando i Visual Studio Code-terminalen:
Connect-AzAccount
En webbläsare öppnas så att du kan logga in på ditt Azure-konto.
När du har loggat in på Azure visar terminalen en lista över de prenumerationer som är associerade med det här kontot.
Om du har aktiverat sandbox-miljön visas en prenumeration med namnet Concierge-prenumeration . Använd den för resten av övningen.
Ange standardprenumerationen för alla Azure PowerShell-kommandon som du kör i den här sessionen.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Kommentar
Om du har använt mer än en sandbox-miljö nyligen kan terminalen visa mer än en instans av Concierge-prenumerationen. I det här fallet använder du följande två steg för att ange ett som standardprenumeration. Om föregående kommando lyckades och endast en Concierge-prenumeration visas hoppar du över de kommande två stegen.
Skaffa prenumerations-ID:t. När du kör följande kommando visas dina prenumerationer och deras ID:n.
Concierge Subscription
Leta efter och kopiera sedan ID:t från den andra kolumnen. Det ser ut ungefär somaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Ändra din aktiva prenumeration till Concierge-prenumeration. Ersätt {Ditt prenumerations-ID } med det som du kopierade.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Ange standardresursgruppen
Du kan ange standardresursgruppen och utelämna parametern från resten av Azure PowerShell-kommandona i den här övningen. Ange den här standardinställningen till den resursgrupp som skapats åt dig i sandbox-miljön.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
För att distribuera mallen till Azure behöver du logga in på ditt Azure-konto från Visual Studio Code-terminalen. Se till att du har installerat Azure CLI och kom ihåg att logga in med samma konto som du använde för att aktivera sandbox-miljön.
I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.
Om gränssnittet som visas till höger i terminalfönstret är bash är rätt gränssnitt öppet och du kan gå vidare till nästa avsnitt.
Om ett annat gränssnitt än bash visas väljer du listrutepilen för gränssnittet och väljer sedan Azure Cloud Shell (Bash).
I listan över terminalgränssnitt väljer du bash.
I terminalen går du till katalogen där du sparade mallen. Om du till exempel har sparat mallen i mallmappen kan du använda det här kommandot:
cd templates
Installera Bicep
Kör följande kommando för att se till att du har den senaste versionen av Bicep:
az bicep install && az bicep upgrade
Logga in på Azure
Logga in på Azure i Visual Studio Code-terminalen genom att köra följande kommando:
az login
Logga in på ditt Azure-konto i webbläsaren som öppnas.
Visual Studio Code-terminalen visar en lista över de prenumerationer som är associerade med det här kontot.
Ange standardprenumerationen för alla Azure CLI-kommandon som du kör i den här sessionen.
az account set --subscription "Concierge Subscription"
Kommentar
Om du har använt mer än en sandbox-miljö nyligen kan terminalen visa mer än en instans av Concierge-prenumerationen. I det här fallet använder du följande två steg för att ange ett som standardprenumeration. Om föregående kommando lyckades och endast en Concierge-prenumeration visas hoppar du över de kommande två stegen.
Hämta Concierge-prenumerationernas ID:n.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Använd prenumerations-ID:t för att ange standardprenumerationen. Ersätt {your subscription ID} med ID:t för den senaste Concierge-prenumerationen.
az account set --subscription {your subscription ID}
Ange standardresursgruppen
När du använder Azure CLI kan du ange standardresursgruppen och utelämna parametern från resten av Azure CLI-kommandona i den här övningen. Ange standardvärdet för den resursgrupp som skapas åt dig i sandbox-miljön.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Om du vill distribuera den här mallen till Azure loggar du in på ditt Azure-konto från Visual Studio Code-terminalen. Se till att du har installerat Azure PowerShell och logga in på samma konto som aktiverade sandbox-miljön.
I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.
Om gränssnittet som visas till höger i terminalfönstret är powershell eller pwsh är rätt gränssnitt öppet och du kan gå vidare till nästa avsnitt.
Om ett annat gränssnitt än powershell eller pwsh visas väljer du listrutepilen för gränssnittet och väljer sedan PowerShell.
I listan över terminalgränssnitt väljer du powershell eller pwsh.
I terminalen går du till katalogen där du sparade mallen. Om du till exempel har sparat mallen i mallmappen kan du använda det här kommandot:
Set-Location -Path templates
Logga in i Azure med Azure PowerShell
Kör följande kommando i Visual Studio Code-terminalen:
Connect-AzAccount
En webbläsare öppnas så att du kan logga in på ditt Azure-konto.
När du har loggat in på Azure visar terminalen en lista över de prenumerationer som är associerade med det här kontot.
Om du har aktiverat sandbox-miljön visas en prenumeration med namnet Concierge-prenumeration . Använd den för resten av övningen.
Ange standardprenumerationen för alla Azure PowerShell-kommandon som du kör i den här sessionen.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Kommentar
Om du har använt mer än en sandbox-miljö nyligen kan terminalen visa mer än en instans av Concierge-prenumerationen. I det här fallet använder du följande två steg för att ange ett som standardprenumeration. Om föregående kommando lyckades och endast en Concierge-prenumeration visas hoppar du över de kommande två stegen.
Skaffa prenumerations-ID:t. När du kör följande kommando visas dina prenumerationer och deras ID:n.
Concierge Subscription
Leta efter och kopiera sedan ID:t från den andra kolumnen. Det ser ut ungefär somaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Ändra din aktiva prenumeration till Concierge-prenumeration. Ersätt {Ditt prenumerations-ID } med det som du kopierade.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Ange standardresursgruppen
Du kan ange standardresursgruppen och utelämna parametern från resten av Azure PowerShell-kommandona i den här övningen. Ange den här standardinställningen till den resursgrupp som skapats åt dig i sandbox-miljön.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
För att distribuera mallen till Azure behöver du logga in på ditt Azure-konto från Visual Studio Code-terminalen. Se till att du har installerat Azure CLI och kom ihåg att logga in med samma konto som du använde för att aktivera sandbox-miljön.
I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.
Om gränssnittet som visas till höger i terminalfönstret är bash är rätt gränssnitt öppet och du kan gå vidare till nästa avsnitt.
Om ett annat gränssnitt än bash visas väljer du listrutepilen för gränssnittet och väljer sedan Azure Cloud Shell (Bash).
I listan över terminalgränssnitt väljer du bash.
I terminalen går du till katalogen där du sparade mallen. Om du till exempel har sparat mallen i mallmappen kan du använda det här kommandot:
cd templates
Logga in på Azure
Logga in på Azure i Visual Studio Code-terminalen genom att köra följande kommando:
az login
Logga in på ditt Azure-konto i webbläsaren som öppnas.
Visual Studio Code-terminalen visar en lista över de prenumerationer som är associerade med det här kontot.
Ange standardprenumerationen för alla Azure CLI-kommandon som du kör i den här sessionen.
az account set --subscription "Concierge Subscription"
Kommentar
Om du har använt mer än en sandbox-miljö nyligen kan terminalen visa mer än en instans av Concierge-prenumerationen. I det här fallet använder du följande två steg för att ange ett som standardprenumeration. Om föregående kommando lyckades och endast en Concierge-prenumeration visas hoppar du över de kommande två stegen.
Hämta Concierge-prenumerationernas ID:n.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Använd prenumerations-ID:t för att ange standardprenumerationen. Ersätt {your subscription ID} med ID:t för den senaste Concierge-prenumerationen.
az account set --subscription {your subscription ID}
Ange standardresursgruppen
När du använder Azure CLI kan du ange standardresursgruppen och utelämna parametern från resten av Azure CLI-kommandona i den här övningen. Ange standardvärdet för den resursgrupp som skapas åt dig i sandbox-miljön.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Distribuera mallen med hjälp av Azure PowerShell
Distribuera mallen genom att köra New-AzResourceGroupDeployment
.
New-AzResourceGroupDeployment -TemplateFile main.bicep
Texten Körs... visas i terminalen. Distributionen tar en minut eller två att slutföra.
Distribuera mallen med hjälp av Azure PowerShell
Distribuera mallen genom att köra New-AzResourceGroupDeployment
.
New-AzResourceGroupDeployment -TemplateFile azuredeploy.json
Texten Körs... visas i terminalen. Distributionen tar en minut eller två att slutföra.
Distribuera mallen med hjälp av Azure CLI
Distribuera mallen genom att köra az deployment group create
.
az deployment group create --template-file main.bicep
Distributionen tar en minut eller två att slutföra.
Distribuera mallen med hjälp av Azure CLI
Distribuera mallen genom att köra az deployment group create
.
az deployment group create --template-file azuredeploy.json
Distributionen tar en minut eller två att slutföra.
Verifiera distributionen
Om du vill verifiera att distributionen har skapats och skickats till Azure går du till Azure Portal och kontrollerar att du är i sandbox-prenumerationen:
Välj din avatar uppe till höger på sidan.
Välj Växla katalog. Välj katalogen Sandbox-miljö för Microsoft Learn i listan.
Välj Resursgrupper.
Välj
[resursgruppsnamn för sandbox-miljö] .I översikten ser du att en distribution lyckades.
Välj 1 lyckades för att visa information om distributionen.
Välj huvuddistributionen för att se vilka resurser som har distribuerats. I det här fallet distribuerades ett virtuellt nätverk (adressutrymme 10.0.0.0/16) med två undernät.
Låt sidan vara öppen i webbläsaren så att du kan kontrollera distributionerna igen senare.
Ändra mallen
I filen azuredeploy.json i Visual Studio Code tar du bort taggen med namnet
Owner
och dess värde. När du är klartags
bör egenskapen för det virtuella nätverket se ut så här:"tags": { "CostCenter": "12345" },
Uppdatera för
addressPrefixes
att ändra/16
till/15
. När du är klaraddressSpace
bör egenskapen för det virtuella nätverket se ut så här:"addressSpace": { "addressPrefixes": [ "10.0.0.0/15" ] },
Ta bort undernätet med namnet
subnet001
. Se till att ta bort hela undernätsobjektet. När du är klarsubnets
bör egenskapen för det virtuella nätverket se ut så här:"subnets": [ { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ]
Spara mallen.
I filen main.bicep i Visual Studio Code tar du bort taggen med namnet
Owner
och dess värde. När du är klartags
bör egenskapen för det virtuella nätverket se ut så här:tags: { 'CostCenter': '12345' }
addressPrefixes
Uppdatera för att ändra/16
till/15
. När du är klaraddressSpace
bör egenskapen för det virtuella nätverket se ut så här:addressSpace: { addressPrefixes: [ '10.0.0.0/15' ] }
Ta bort undernätet med namnet
subnet001
. Se till att ta bort hela undernätsobjektet. När du är klarsubnets
bör egenskapen för det virtuella nätverket se ut så här:subnets: [ { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ]
Spara mallen.
Kör konsekvenskommandot med den ändrade mallen
Kör New-AzResourceGroupDeployment
med flaggan -WhatIf
för att utföra åtgärden what-if.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile main.bicep
Kör New-AzResourceGroupDeployment
med flaggan -WhatIf
för att utföra åtgärden what-if.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile azuredeploy.json
Kör az deployment group what-if
för att utföra konsekvensåtgärden:
az deployment group what-if \
--template-file main.bicep
Kör az deployment group what-if
för att utföra konsekvensåtgärden:
az deployment group what-if \
--template-file azuredeploy.json
Konsekvensutdata liknar följande:
Observera att resultatet är färgkodat förutom att ha ett prefix:
- Lila och ~ för eventuella ändringar
- Grönt och + för nya resurser som skapas
- Orange och - för borttagningar
Ta bort resurserna i mallen
Uppdatera filen azuredeploy.json i Visual Studio Code och ta bort allt innehåll i matrisen
resources
. När du är klar bör mallen se ut så här:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ ] }
Spara mallen.
I filen main.bicep i Visual Studio Code tar du bort allt innehåll i filen men tar inte bort själva filen.
Spara mallen.
Distribuera med hjälp av fullständigt läge och bekräftelsealternativet
I följande steg distribuerar du en tom mall i din befintliga miljö.
Varning
Om du gör det i verkligheten tar du bort allt du har i molnet. Följande kod kan vara teoretiskt intressant, men var försiktig med att använda det här läget. Använd som minimum flaggan -Confirm
så att du kan avbryta den här åtgärden om du inte gillar de föreslagna ändringarna.
Varning
Om du gör det i verkligheten tar du bort allt du har i molnet. Följande kod kan vara teoretiskt intressant, men var försiktig med att använda det här läget. Använd som minimum flaggan --confirm-with-what-if
så att du kan avbryta den här åtgärden om du inte gillar de föreslagna ändringarna.
Kör
New-AzResourceGroupDeployment
med-Mode Complete
flaggan för att köra distributionen i fullständigt läge:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile main.bicep
Dina utdata ser ut ungefär så här:
Observera att den sista raden i utdata är en bekräftelse. Du uppmanas att välja y eller n (ja eller nej) för att gå vidare.
För [A] Ja till Alla anger du A för att köra distributionen och rensa miljön.
Kör
New-AzResourceGroupDeployment
med-Mode Complete
flaggan för att köra distributionen i fullständigt läge:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile azuredeploy.json
Dina utdata ser ut ungefär så här:
Observera att den sista raden i utdata är en bekräftelse. Du uppmanas att välja y eller n (ja eller nej) för att gå vidare.
För [A] Ja till Alla anger du A för att köra distributionen och rensa miljön.
Kör
az deployment group create
med flaggan--mode Complete
för att skapa en distribution i fullständigt läge:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file main.bicep
Dina utdata ser ut ungefär så här:
Observera att den sista raden i utdata är en bekräftelse. Du uppmanas att välja y eller n (ja eller nej) för att gå vidare.
Ange y (för "ja") för att köra distributionen och rensa miljön.
Kör
az deployment group create
med flaggan--mode Complete
för att skapa en distribution i fullständigt läge:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file azuredeploy.json
Dina utdata ser ut ungefär så här:
Observera att den sista raden i utdata är en bekräftelse. Du uppmanas att välja y eller n (ja eller nej) för att gå vidare.
Ange y (för "ja") för att köra distributionen och rensa miljön.
Verifiera distributionen
Gå tillbaka till den öppna webbläsaren som du använde tidigare. Kontrollera att det virtuella nätverket inte längre finns där, som i den här skärmbilden: