Övning – Förhandsgranska ändringar med kommandot what-if

Slutförd

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.

  1. Öppna Visual Studio Code.

  2. Skapa en ny fil med namnet azuredeploy.json.

  3. 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.

  4. 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"
                }
              }
            ]
          }
        }
      ]
    }
    
  5. Spara mallen.

  1. Öppna Visual Studio Code.

  2. Skapa en ny fil med namnet main.bicep.

  3. 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.

  4. 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'
            }
          }
        ]
      }
    }
    
  5. 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.

  1. I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.

  2. 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.

    Skärmbild av terminalfönstret i Visual Studio Code med pwsh-alternativet som visas i listrutan shell.

  3. Om ett annat gränssnitt än powershell eller pwsh visas väljer du listrutepilen för gränssnittet och väljer sedan PowerShell.

    Skärmbild av Terminalfönstret i Visual Studio Code, med listrutan terminalgränssnitt som visas och PowerShell valt.

  4. I listan över terminalgränssnitt väljer du powershell eller pwsh.

    Skärmbild av terminalfönstret i Visual Studio Code med PowerShell-terminalen markerad.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. Skaffa prenumerations-ID:t. När du kör följande kommando visas dina prenumerationer och deras ID:n. Concierge SubscriptionLeta efter och kopiera sedan ID:t från den andra kolumnen. Det ser ut ungefär som aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  5. Ä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.

  1. I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.

  2. 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.

    Skärmbild av terminalfönstret i Visual Studio Code, där bash-alternativet visas.

  3. Om ett annat gränssnitt än bash visas väljer du listrutepilen för gränssnittet och väljer sedan Azure Cloud Shell (Bash).

    Skärmbild av terminalfönstret i Visual Studio Code, där listrutan terminalgränssnitt visas och Git Bash Default har valts.

  4. I listan över terminalgränssnitt väljer du bash.

    Skärmbild av terminalfönstret i Visual Studio Code med bash-terminalen markerad.

  5. 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

  1. Logga in på Azure i Visual Studio Code-terminalen genom att köra följande kommando:

    az login
    
  2. 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.

  3. 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.

  4. Hämta Concierge-prenumerationernas ID:n.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 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.

  1. I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.

  2. 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.

    Skärmbild av terminalfönstret i Visual Studio Code med pwsh-alternativet som visas i listrutan shell.

  3. Om ett annat gränssnitt än powershell eller pwsh visas väljer du listrutepilen för gränssnittet och väljer sedan PowerShell.

    Skärmbild av Terminalfönstret i Visual Studio Code, med listrutan terminalgränssnitt som visas och PowerShell valt.

  4. I listan över terminalgränssnitt väljer du powershell eller pwsh.

    Skärmbild av terminalfönstret i Visual Studio Code med PowerShell-terminalen markerad.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. Skaffa prenumerations-ID:t. När du kör följande kommando visas dina prenumerationer och deras ID:n. Concierge SubscriptionLeta efter och kopiera sedan ID:t från den andra kolumnen. Det ser ut ungefär som aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  5. Ä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.

  1. I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.

  2. 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.

    Skärmbild av terminalfönstret i Visual Studio Code, där bash-alternativet visas.

  3. Om ett annat gränssnitt än bash visas väljer du listrutepilen för gränssnittet och väljer sedan Azure Cloud Shell (Bash).

    Skärmbild av terminalfönstret i Visual Studio Code, där listrutan terminalgränssnitt visas och Git Bash Default har valts.

  4. I listan över terminalgränssnitt väljer du bash.

    Skärmbild av terminalfönstret i Visual Studio Code med bash-terminalen markerad.

  5. 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

  1. Logga in på Azure i Visual Studio Code-terminalen genom att köra följande kommando:

    az login
    
  2. 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.

  3. 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.

  4. Hämta Concierge-prenumerationernas ID:n.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 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:

  1. Välj din avatar uppe till höger på sidan.

  2. Välj Växla katalog. Välj katalogen Sandbox-miljö för Microsoft Learn i listan.

  3. Välj Resursgrupper.

  4. Välj [resursgruppsnamn för sandbox-miljö].

  5. I översikten ser du att en distribution lyckades.

  6. Välj 1 lyckades för att visa information om distributionen.

    Skärmbild av Azure Portal-gränssnittet för distributionerna, där den enda distributionen visas och statusen lyckades.

  7. 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.

    Skärmbild av Azure Portal-gränssnittet för den specifika distributionen, utan några resurser i listan.

    Skärmbild av Azure Portal-gränssnittet för den specifika distributionen med en virtuell nätverksresurs i listan.

    Låt sidan vara öppen i webbläsaren så att du kan kontrollera distributionerna igen senare.

Ändra mallen

  1. I filen azuredeploy.json i Visual Studio Code tar du bort taggen med namnet Owner och dess värde. När du är klar tags bör egenskapen för det virtuella nätverket se ut så här:

    "tags": {
      "CostCenter": "12345"
    },
    
  2. Uppdatera för addressPrefixes att ändra /16 till /15. När du är klar addressSpace bör egenskapen för det virtuella nätverket se ut så här:

    "addressSpace": {
      "addressPrefixes": [
        "10.0.0.0/15"
      ]
    },
    
  3. Ta bort undernätet med namnet subnet001. Se till att ta bort hela undernätsobjektet. När du är klar subnets bör egenskapen för det virtuella nätverket se ut så här:

    "subnets": [
      {
        "name": "subnet002",
        "properties": {
          "addressPrefix": "10.0.1.0/24"
        }
      }
    ]
    
  4. Spara mallen.

  1. I filen main.bicep i Visual Studio Code tar du bort taggen med namnet Owner och dess värde. När du är klar tags bör egenskapen för det virtuella nätverket se ut så här:

    tags: {
      'CostCenter': '12345'
    }
    
  2. addressPrefixes Uppdatera för att ändra /16 till /15. När du är klar addressSpace bör egenskapen för det virtuella nätverket se ut så här:

    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/15'
      ]
    }
    
  3. Ta bort undernätet med namnet subnet001. Se till att ta bort hela undernätsobjektet. När du är klar subnets bör egenskapen för det virtuella nätverket se ut så här:

    subnets: [
      {
        name: 'subnet002'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
    
  4. 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:

Skärmbild av Azure CLI som visar utdata från konsekvensåtgärden.

Skärmbild av Azure PowerShell som visar utdata från konsekvensåtgärden.

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

  1. 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": [
      ]
    }
    
  2. Spara mallen.

  1. I filen main.bicep i Visual Studio Code tar du bort allt innehåll i filen men tar inte bort själva filen.

  2. 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.

  1. 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:

    Skärmbild av Azure PowerShell som visar utdata från distributionens bekräftelseåtgärd.

    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.

  2. För [A] Ja till Alla anger du A för att köra distributionen och rensa miljön.

  1. 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:

    Skärmbild av Azure PowerShell som visar utdata från distributionens bekräftelseåtgärd.

    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.

  2. För [A] Ja till Alla anger du A för att köra distributionen och rensa miljön.

  1. 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:

    Skärmbild av Azure CLI som visar utdata från distributionens bekräftelseåtgärd.

    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.

  2. Ange y (för "ja") för att köra distributionen och rensa miljön.

  1. 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:

    Skärmbild av Azure CLI som visar utdata från distributionens bekräftelseåtgärd.

    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.

  2. 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:

Skärmbild av Azure Portal-gränssnittet för den fullständiga distributionen, där den virtuella nätverksresursen inte längre visas.