Snabbstart: Skapa och distribuera mallspecifikt

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

Förutsättningar

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

Anteckning

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

Skapa mallen

Du skapar en mallspecifikt från en lokal mall. Kopiera följande mall och spara den lokalt till 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.4.1008.15138",
      "templateHash": "104821603399126558"
    }
  },
  "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": "Location for all resources."
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the Storage Account"
      }
    }
  },
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-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 mallspecifikt

Mallspecifikationen är en resurstyp med namnet Microsoft.Resources/templateSpecs . Om du vill skapa en mallspecifikhet 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 den resursgruppen. Ge den nya mallen namnet storageSpec.

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

Distribuera mallspecifikt

Om du vill distribuera en mallspecifikt använder du samma distributionskommandon som du använder 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:t 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 du skulle göra 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 att andra användare i din organisation ska kunna distribuera mallspecifikationen måste du ge dem läsbehörighet. Du kan tilldela rollen Läsare till en Azure AD-grupp för den resursgrupp som innehåller mallspecifikter 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 din tidigare mall, 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 mallspecifikt version

I stället för att skapa en ny mallspecifikt för den ändrade mallen lägger du till en ny version med namnet i den befintliga mallspecifikationen. Användarna kan välja vilken version som 2.0 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 resursen 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 mallspecifikt som innehåller länkade mallar finns i Skapa en mallspecifikt för en länkad mall.