Dela via


Snabbstart: Skapa och distribuera mallspecifikation

Den här snabbstarten visar hur du paketera en Azure Resource Manager-mall (ARM-mall) i en mallspecifikation. Sedan distribuerar du mallspecifikationen. Mallspecifikationen innehåller en ARM-mall som distribuerar ett lagringskonto.

Dricks

Vi rekommenderar Bicep eftersom det erbjuder samma funktioner som ARM-mallar och syntaxen är enklare att använda. Mer information finns i Snabbstart: Skapa och distribuera en mallspecifikation med Bicep.

Förutsättningar

Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.

Kommentar

Om du vill använda mallspecifikation med Azure PowerShell måste du installera version 5.0.0 eller senare. Om du vill använda det med Azure CLI använder du version 2.14.2 eller senare.

Skapa mallen

Du skapar en mallspecifikation från en lokal mall. Kopiera följande mall och spara den lokalt i en fil med namnet azuredeploy.json. Den här snabbstarten förutsätter att du har sparat till en sökväg c:\Templates\azuredeploy.json , men du kan använda valfri sökväg.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.13.1.58284",
      "templateHash": "13120038605368246703"
    }
  },
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GRS",
        "Standard_GZRS",
        "Standard_LRS",
        "Standard_RAGRS",
        "Standard_RAGZRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The storage account location."
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the storage account"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[parameters('storageAccountName')]"
    },
    "storageAccountId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
    }
  }
}

Skapa mallspecifikation

Mallspecifikationen är en resurstyp med namnet Microsoft.Resources/templateSpecs. Om du vill skapa en mallspecifikation använder du PowerShell, Azure CLI, portalen eller en ARM-mall.

  1. Skapa en ny resursgrupp som ska innehålla mallspecifikationen.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. Skapa mallspecifikationen i resursgruppen. Ge den nya mallspecifikationen namnet storageSpec.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "1.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    

Distribuera mallspecifikation

Om du vill distribuera en mallspecifikation använder du samma distributionskommandon som du skulle använda för att distribuera en mall. Skicka in resurs-ID:t för mallspecifikationen som ska distribueras.

  1. Skapa en resursgrupp som ska innehålla det nya lagringskontot.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Hämta resurs-ID för mallspecifikationen.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Distribuera mallspecifikationen.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Du anger parametrar exakt som för en ARM-mall. Distribuera om mallspecifikationen med en parameter för lagringskontotypen.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageAccountType Standard_GRS
    

Bevilja åtkomst

Om du vill låta andra användare i din organisation distribuera mallspecifikationen måste du ge dem läsbehörighet. Du kan tilldela rollen Läsare till en Microsoft Entra-grupp för resursgruppen som innehåller mallspecifikationer som du vill dela. Mer information finns i Självstudie: Bevilja en grupp åtkomst till Azure-resurser med hjälp av Azure PowerShell.

Uppdatera mall

Anta att du har identifierat en ändring som du vill göra i mallen i mallspecifikationen. Följande mall liknar den tidigare mallen, förutom att den lägger till ett prefix för lagringskontots namn. Kopiera följande mall och uppdatera filen azuredeploy.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS",
        "Premium_LRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "namePrefix": {
      "type": "string",
      "maxLength": 11,
      "defaultValue": "store",
      "metadata": {
        "description": "Prefix for storage account name"
      }
    }
  },
  "variables": {
    "storageAccountName": "[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

Uppdatera mallspecifikationsversion

I stället för att skapa en ny mallspecifikation för den ändrade mallen lägger du till en ny version med namnet 2.0 i den befintliga mallspecifikationen. Användarna kan välja vilken version som ska distribueras.

  1. Skapa en ny version för mallspecifikationen.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    
  2. Om du vill distribuera den nya versionen hämtar du resurs-ID:t för 2.0 versionen.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. Distribuera den versionen. Ange ett prefix för lagringskontots namn.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -namePrefix "demoaccount"
    

Rensa resurser

Om du vill rensa den resurs som du distribuerade i den här snabbstarten tar du bort båda resursgrupperna som du skapade.

  1. Från Azure-portalen väljer du Resursgrupp från den vänstra menyn.

  2. Ange resursgruppens namn (templateSpecRG och storageRG) i fältet Filtrera efter namn.

  3. Välj resursgruppens namn.

  4. Välj Ta bort resursgrupp från menyn längst upp.

Nästa steg

Mer information om hur du skapar en mallspecifikation som innehåller länkade mallar finns i Skapa en mallspecifikation för en länkad mall.