Ö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.
  • Kontrollera mallspecifikationen med hjälp av Azure Portal.
  • 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 terminalfönstret visar bash på höger sida innebär det att rätt gränssnitt redan är öppet. Om du ser en bash shell-ikon till höger kan du välja den för att starta gränssnittet.

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

    Om ett annat gränssnitt än bash visas väljer du listrutepilen för gränssnittet och väljer sedan Git Bash.

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

  3. 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. Välj prenumerationen som heter Concierge-prenumeration.

    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.

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

        az account list \
         --refresh \
         --query "[?contains(name, 'Concierge Subscription')].id" \
         --output table
      
    2. 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 terminalfönstret visar pwsh eller powershell till höger betyder det att rätt gränssnitt redan är öppet. Om du ser en PowerShell-gränssnittsikon till höger kan du också välja den för att starta gränssnittet.

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

    Om ett annat gränssnitt än pwsh eller powershell visas väljer du listrutepilen shell och väljer sedan PowerShell.

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

  3. 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. Webbläsaren kan öppnas i bakgrunden.

  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 . Välj den för resten av övningen.

    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.

    1. 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
      
    2. Ä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 terminalfönstret visar bash på höger sida innebär det att rätt gränssnitt redan är öppet. Om du ser en bash shell-ikon till höger kan du välja den för att starta gränssnittet.

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

    Om ett annat gränssnitt än bash visas väljer du listrutepilen för gränssnittet och väljer sedan Git Bash.

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

  3. 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. Välj prenumerationen som heter Concierge-prenumeration.

    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.

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

        az account list \
         --refresh \
         --query "[?contains(name, 'Concierge Subscription')].id" \
         --output table
      
    2. 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 terminalfönstret visar pwsh eller powershell till höger betyder det att rätt gränssnitt redan är öppet. Om du ser en PowerShell-gränssnittsikon till höger kan du också välja den för att starta gränssnittet.

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

    Om ett annat gränssnitt än pwsh eller powershell visas väljer du listrutepilen shell och väljer sedan PowerShell.

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

  3. 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. Webbläsaren kan öppnas i bakgrunden.

  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 . Välj den för resten av övningen.

    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.

    1. 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
      
    2. Ä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 Portal för att verifiera mallspecifikationen

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

    Skärmbild av Azure Portal-gränssnittet för resursgruppsöversikten, 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 Portal 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 distributionsavsnittet visar att en lyckades.

  3. Välj distributionen.

    Skärmbild av Azure Portal-gränssnittet 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.