Övning – Skapa och distribuera en mallspecifikation

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.

På ditt leksaksföretag har ditt team arbetat med Azure ett tag nu och du har skapat många mallar som du använder dagligen. Du bestämmer dig för att ta en mall och skapa en mallspecifikation. Du börjar med mallen som du använder för att skapa Azure Cosmos DB-konton.

Teamet beslutade att kontinuerlig säkerhetskopiering måste konfigureras på alla dina Azure Cosmos DB-konton. Du vill därför inkludera säkerhetskopior i standardkonfigurationen för Azure Cosmos DB-konton som etableras via mallspecifikationen.

I den här övningen publicerar du Azure Cosmos DB-mallen som en mallspecifikation.

Under processen gör du följande:

  • Skapa en mall som du ska använda som mallspecifikation.
  • Uppdatera mallen för att säkerställa att parametrarna är lätta att förstå och arbeta med.
  • Publicera mallspecifikationen.
  • Verifiera mallspecifikationen med hjälp av Azure-portalen.
  • Distribuera mallspecifikationen för att testa den.
  • Verifiera distributionen.

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

Skapa mallen

Du börjar med en av de mallar som ditt team har skapat. Mallen distribuerar ett Azure Cosmos DB-konto och konfigurerar det för att aktivera kontinuerlig säkerhetskopiering.

  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 sparade filen. Du kanske till exempel vill skapa en skriptmapp för att spara den.

  4. Kopiera följande kod till main.bicep:

    param location string = resourceGroup().location
    param cosmosDBAccountName string = 'toy-${uniqueString(resourceGroup().id)}'
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2021-04-15' = {
      name: cosmosDBAccountName
      kind: 'GlobalDocumentDB'
      location: location
      properties: {
        consistencyPolicy: {
          defaultConsistencyLevel: 'Session'
        }
        locations: [
          {
            locationName: location
            failoverPriority: 0
            isZoneRedundant: false
          }
        ]
        databaseAccountOfferType: 'Standard'
        enableAutomaticFailover: false
        enableMultipleWriteLocations: false
        backupPolicy: {
          type: 'Continuous'
        }
      }
    }
    

    Observera att du har angett backupPolicy till Continuous. Det här värdet konfigurerar Azure Cosmos DB att kontinuerligt göra säkerhetskopior av dina data i stället för regelbundet.

  5. Spara filen.

  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 verktyget Azure Resource Manager-mallen (ARM-mall).

    Du kan antingen välja Spara som-fil> eller välja Ctrl+S i Windows (⌘+S på macOS). Kom ihåg var du sparade 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": {
        "location": {
          "type": "string",
          "defaultValue": "[resourceGroup().location]"
        },
        "cosmosDBAccountName": {
          "type": "string",
          "defaultValue": "[concat('toy-', uniqueString(resourceGroup().id))]"
        }
      },
      "resources": [
        {
          "type": "Microsoft.DocumentDB/databaseAccounts",
          "apiVersion": "2021-04-15",
          "name": "[parameters('cosmosDBAccountName')]",
          "kind": "GlobalDocumentDB",
          "location": "[parameters('location')]",
          "properties": {
            "consistencyPolicy": {
              "defaultConsistencyLevel": "Session"
            },
            "locations": [
              {
                "locationName": "[parameters('location')]",
                "failoverPriority": 0,
                "isZoneRedundant": false
              }
            ],
            "databaseAccountOfferType": "Standard",
            "enableAutomaticFailover": false,
            "enableMultipleWriteLocations": false,
            "backupPolicy": {
              "type": "Continuous"
            }
          }
        }
      ]
    }
    

    Observera att du anger backupPolicy till Continuous. Det här värdet konfigurerar Azure Cosmos DB att kontinuerligt göra säkerhetskopior av dina data i stället för regelbundet.

  5. Spara filen.

Gör parametrarna enklare att förstå

När du arbetar med mallspecifikationer är det viktigt att tänka på hur andra använder mallen. Den här granskningen är särskilt viktig för parametrar, eftersom de är det huvudsakliga sättet för andra att interagera med din kod. Parametrarna i teamets mall innehåller inte beskrivningar eller andra tips om hur de ska användas, så du lägger till den här informationen här.

  1. Uppdatera parameterdefinitionen location genom att lägga till en beskrivning:

    @description('The Azure region into which the Cosmos DB resources should be deployed.')
    param location string = resourceGroup().location
    
  2. Uppdatera parameterdefinitionen cosmosDBAccountName för att lägga till en beskrivning och ange namnets minsta och högsta längd:

    @description('The name of the Cosmos DB account. This name must be globally unique, and it must only include lowercase letters, numbers, and hyphens.')
    @minLength(3)
    @maxLength(44)
    param cosmosDBAccountName string = 'toy-${uniqueString(resourceGroup().id)}'
    
  3. Spara filen.

  1. Uppdatera parameterdefinitionen location genom att lägga till en beskrivning:

    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The Azure region into which the Cosmos DB resources should be deployed."
      }
    },
    
  2. Uppdatera parameterdefinitionen cosmosDBAccountName för att lägga till en beskrivning och ange namnets minsta och högsta längd:

    "cosmosDBAccountName": {
      "type": "string",
      "defaultValue": "[concat('toy-', uniqueString(resourceGroup().id))]",
      "maxLength": 44,
      "minLength": 3,
      "metadata": {
        "description": "The name of the Cosmos DB account. This name must be globally unique, and it must only include lowercase letters, numbers, and hyphens."
      }
    }
    
  3. Spara filen.

Logga in på 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>"

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 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

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

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 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    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>

Publicera mallen som en mallspecifikation

Publicera mallspecifikationen med den här Azure PowerShell-cmdleten i Visual Studio Code-terminalen:

New-AzTemplateSpec `
  -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
  -Name ToyCosmosDBAccount `
  -Location westus `
  -DisplayName 'Cosmos DB account' `
  -Description "This template spec creates a Cosmos DB account that meets our company's requirements." `
  -Version '1.0' `
  -TemplateFile main.bicep
New-AzTemplateSpec `
  -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
  -Name ToyCosmosDBAccount `
  -Location westus `
  -DisplayName 'Cosmos DB account' `
  -Description "This template spec creates a Cosmos DB account that meets our company's requirements." `
  -Version '1.0' `
  -TemplateFile azuredeploy.json

Publicera mallspecifikationen med hjälp av det här Azure CLI-kommandot i Visual Studio Code-terminalen:

az ts create \
  --name ToyCosmosDBAccount \
  --location westus \
  --display-name "Cosmos DB account" \
  --description "This template spec creates a Cosmos DB account that meets our company's requirements." \
  --version 1.0 \
  --template-file main.bicep
az ts create \
  --name ToyCosmosDBAccount \
  --location westus \
  --display-name "Cosmos DB account" \
  --description "This template spec creates a Cosmos DB account that meets our company's requirements." \
  --version 1.0 \
  --template-file azuredeploy.json

Använd Azure-portalen för att verifiera mallspecifikationen

  1. Gå till Azure-portalen 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ö]. Observera att mallspecifikationen ingår i listan över resurser:

    Skärmbild av Azure Portal-gränssnittet för resursgruppens översikt, med mallspecifikationen som ingår i listan över resurser.

  4. Välj ToyCosmosDBAccount för att öppna mallspecifikationen. Versionerna och mallfilen visas.

    Skärmbild av Azure Portal-gränssnittet för mallspecifikationen.

Distribuera mallspecifikationen

För enkelhetens skull distribuerar du mallspecifikationen till samma sandbox-resursgrupp som själva mallspecifikationen lagras i. Normalt behåller du mallspecifikationer i en annan resursgrupp. Stegen är dock desamma på båda sätten.

  1. Hämta mallspecifikationsversionens resurs-ID genom att köra följande Azure PowerShell-kommando:

    $templateSpecVersionResourceId = (`
       Get-AzTemplateSpec `
          -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
          -Name ToyCosmosDBAccount `
          -Version 1.0 `
       ).Versions[0].Id
    

    Observera att du använder egenskapen Versions . När du distribuerar en mallspecifikation måste du referera till resurs-ID:t för den specifika versionen av mallspecifikationen som ska användas.

  2. Distribuera mallspecifikationen med hjälp av det här Azure PowerShell-kommandot i Visual Studio Code-terminalen:

    New-AzResourceGroupDeployment -TemplateSpecId $templateSpecVersionResourceId
    
  1. Hämta mallspecifikationsversionens resurs-ID genom att köra följande Azure CLI-kommando:

    id=$(az ts show \ 
     --name ToyCosmosDBAccount \
     --resource-group "<rgn>[sandbox resource group name]</rgn>" \
     --version "1.0" \
     --query "id")
    
  2. Distribuera mallspecifikationen med hjälp av det här Azure CLI-kommandot i Visual Studio Code-terminalen:

    az deployment group create --template-spec $id
    

Distributionen kan ta en minut eller två att slutföra.

Verifiera distributionen

  1. Gå tillbaka till Azure-portalen i webbläsaren. Gå till resursgruppen.

  2. Bredvid Distributioner väljer du länken 1 Lyckades för att se information om distributionen.

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

  3. Välj distributionen.

    Skärmbild av Azure-portalens gränssnitt för distributionerna, där den enda distributionen visas.

    Distributionens namn kan se annorlunda ut än namnet i exemplet.

  4. Välj Distributionsinformation för att expandera den. Bekräfta att ett Azure Cosmos DB-konto har distribuerats.

    Skärmbild av Azure Portal-gränssnittet för den specifika distributionen, med tre Azure Cosmos DB-resurser listade.