Övning – Lägga till parametrar och dekoratörer

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.

Som en del av hr-programmigreringen skapar du en Bicep-mall för att distribuera Azure-resurser. I den här övningen skapar du en Azure App Service-plan och En App Service-app. Du använder dekoratörer för varje parameter för att säkerställa att de alltid innehåller de värden som du förväntar dig.

Under processen utför du följande uppgifter:

  • Skapa en Bicep-fil som innehåller parametrar och variabler.
  • Lägg till dekoratörer i parametrarna.
  • Testa distributionen för att säkerställa att mallen är giltig.

Den här övningen använder Bicep-tillägget för Visual Studio Code. Installera tillägget i Visual Studio Code.

Skapa en Bicep-mall med parametrar

  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. Lägg till följande innehåll i filen. Du kommer snart att distribuera mallen. Ange innehållet själv i stället för att kopiera och klistra in så att du kan se hur verktygen hjälper dig att skriva dina Bicep-filer.

    param environmentName string = 'dev'
    param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
    param appServicePlanInstanceCount int = 1
    param appServicePlanSku object = {
      name: 'F1'
      tier: 'Free'
    }
    param location string = 'eastus'
    
    var appServicePlanName = '${environmentName}-${solutionName}-plan'
    var appServiceAppName = '${environmentName}-${solutionName}-app'
    

    Du skapar flera parametrar här och de använder en blandning av typer. Du definierar standardvärden för varje parameter. Några av standardvärdena är stränginterpolation och uniqueString() funktionen.

    Dricks

    Funktionen uniqueString() är användbar för att skapa globalt unika resursnamn. Den returnerar en sträng som är densamma för varje distribution till samma resursgrupp, men som skiljer sig när du distribuerar till olika resursgrupper eller prenumerationer.

    Du definierar också variabler som konstruerar namnen på Azure App Service-planen och App Service-appen. Deras värden innehåller några av de parametrar som du har angett. Parametervärden kan åsidosättas av användaren som kör distributionen, men värdena för variablerna kan inte åsidosättas.

    Dricks

    Du anger att parametern location ska vara inställd på westus3. Normalt skapar du resurser på samma plats som resursgruppen med hjälp resourceGroup().location av egenskapen . Men när du arbetar med sandbox-miljön i Microsoft Learn måste du använda vissa Azure-regioner som inte matchar resursgruppens plats.

  5. I filen main.bicep i Visual Studio Code lägger du till följande kod längst ned i filen:

    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSku.name
        tier: appServicePlanSku.tier
        capacity: appServicePlanInstanceCount
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    

    Observera att resurserna använder värdena för de parametrar som du definierade.

  6. Spara ändringarna i filen.

Lägga till parameterbeskrivningar

  1. I filen main.bicep i Visual Studio Code lägger du till dekoratören @description direkt ovanför varje parameter som du skapade i föregående uppgift. Parametrarna bör se ut ungefär som i det här exemplet:

    @description('The name of the environment. This must be dev, test, or prod.')
    param environmentName string = 'dev'
    
    @description('The unique name of the solution. This is used to ensure that resource names are unique.')
    param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
    
    @description('The number of App Service plan instances.')
    param appServicePlanInstanceCount int = 1
    
    @description('The name and tier of the App Service plan SKU.')
    param appServicePlanSku object = {
      name: 'F1'
      tier: 'Free'
    }
    
    @description('The Azure region into which the resources should be deployed.')
    param location string = 'eastus'
    
  2. Spara ändringarna i filen.

Begränsa indatavärden

Leksaksföretaget distribuerar HR-programmet till tre miljöer: dev, testoch prod. Du begränsar parametern environmentName till att endast tillåta dessa tre värden.

  1. Leta reda environmentName på parametern i filen main.bicep i Visual Studio Code. Infoga en @allowed dekoratör under dess @description dekoratör. När du är klar bör parametern se ut så här:

    @description('The name of the environment. This must be dev, test, or prod.')
    @allowed([
      'dev'
      'test'
      'prod'
    ])
    param environmentName string = 'dev'
    

    Observera att du begränsar parametervärdet för environmentName parametern till endast dev, testoch prod. Om fler miljöer läggs till i framtiden måste du uppdatera den här listan.

  2. Spara ändringarna i filen.

Begränsa indatalängder

Parametern solutionName används för att generera namnen på resurser. Du vill framtvinga en minsta längd på 5 tecken och en maximal längd på 30 tecken.

  1. Leta reda solutionName på parametern i filen main.bicep i Visual Studio Code. Lägg till @minLength och @maxLength dekoratörer under dekoratören @description . När du är klar bör parametern se ut så här:

    @description('The unique name of the solution. This is used to ensure that resource names are unique.')
    @minLength(5)
    @maxLength(30)
    param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
    
  2. Spara ändringarna i filen.

Begränsa numeriska värden

Därefter ser du till att parametern appServicePlanInstanceCount endast tillåter värden mellan 1 och 10.

  1. Leta reda appServicePlanInstanceCount på parametern i filen main.bicep i Visual Studio Code. Lägg till @minValue och @maxValue dekoratörer under dekoratören @description . När du är klar bör parametern se ut så här:

    @description('The number of App Service plan instances.')
    @minValue(1)
    @maxValue(10)
    param appServicePlanInstanceCount int = 1
    
  2. Spara ändringarna i filen.

Verifiera Bicep-filen

När du har slutfört alla föregående ändringar bör Bicep-filen se ut så här:

@description('The name of the environment. This must be dev, test, or prod.')
@allowed([
  'dev'
  'test'
  'prod'
])
param environmentName string = 'dev'

@description('The unique name of the solution. This is used to ensure that resource names are unique.')
@minLength(5)
@maxLength(30)
param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'

@description('The number of App Service plan instances.')
@minValue(1)
@maxValue(10)
param appServicePlanInstanceCount int = 1

@description('The name and tier of the App Service plan SKU.')
param appServicePlanSku object = {
  name: 'F1'
  tier: 'Free'
}

@description('The Azure region into which the resources should be deployed.')
param location string = 'eastus'

var appServicePlanName = '${environmentName}-${solutionName}-plan'
var appServiceAppName = '${environmentName}-${solutionName}-app'

resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: appServicePlanSku.name
    tier: appServicePlanSku.tier
    capacity: appServicePlanInstanceCount
  }
}

resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
  name: appServiceAppName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
    httpsOnly: true
  }
}

Om den inte gör det kopierar du antingen exemplet eller justerar mallen så att den matchar exemplet.

Distribuera Bicep-mallen till Azure

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

Distribuera mallen till Azure med hjälp av Azure CLI

Kör följande kod från terminalen i Visual Studio Code för att distribuera Bicep-mallen till Azure. Du behöver inte ange parametervärdena eftersom standardvärdena har angetts. Den här processen kan ta en minut eller två att slutföra och sedan visas en lyckad distribution.

az deployment group create --template-file main.bicep

Du ser Running... i terminalen.

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>

Distribuera mallen till Azure med hjälp av PowerShell

Distribuera mallen till Azure med hjälp av följande Azure PowerShell-kommando i terminalen. Du behöver inte ange parametervärdena eftersom standardvärdena har angetts. Den här processen kan ta en minut eller två att slutföra och sedan visas en lyckad distribution.

New-AzResourceGroupDeployment -TemplateFile main.bicep

Verifiera distributionen

  1. Gå till Azure Portal och kontrollera att du är i sandbox-prenumerationen:

    1. Välj din avatar i det övre högra hörnet på sidan.
    2. Välj Växla katalog. Välj katalogen Sandbox-miljö för Microsoft Learn i listan.
  2. På den vänstra panelen väljer du Resursgrupper.

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

  4. I Översikt kan du se att en distribution lyckades.

    Skärmbild av Azure Portal-gränssnittet för resursgruppens översikt, där distributionsavsnittet visar att en lyckades.

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

  6. Välj den distribution som kallas main för att se vilka resurser som har distribuerats och välj sedan Distributionsinformation för att expandera den. I det här fallet finns det en App Service-plan och app.

    Skärmbild av Azure Portal-gränssnittet för den specifika distributionen, med en App Service-plan och en app i listan.

  7. Välj Indata på den vänstra menyn.

    Skärmbild av Azure Portal-gränssnittet för den specifika distributionen med menyalternativet

  8. Observera att parametrarna och deras värden visas.

    Skärmbild av Azure Portal-gränssnittet för den specifika distributionen som visar parametervärdena.

  9. Lämna sidan öppen i webbläsaren. Du går tillbaka till distributionerna senare.