Szybki start: tworzenie i wdrażanie specyfikacji szablonu

W tym przewodniku Szybki start pokazano, jak spakować szablon usługi Azure Resource Manager (szablon arm) do specyfikacji szablonu. Następnie wdrożysz specyfikację tego szablonu. Specyfikacja szablonu zawiera szablon usługi ARM, który wdraża konto magazynu.

Napiwek

Zalecamy Bicep , ponieważ oferuje te same możliwości co szablony usługi ARM, a składnia jest łatwiejsza w użyciu. Aby dowiedzieć się więcej, zobacz Szybki start: tworzenie i wdrażanie specyfikacji szablonu przy użyciu aplikacji Bicep.

Wymagania wstępne

Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.

Uwaga

Aby użyć specyfikacji szablonu w programie Azure PowerShell, musisz zainstalować wersję 5.0.0 lub nowszą. Aby używać go z interfejsem wiersza polecenia platformy Azure, użyj wersji 2.14.2 lub nowszej.

Tworzenie szablonu

Specyfikację szablonu można utworzyć na podstawie szablonu lokalnego. Skopiuj poniższy szablon i zapisz go lokalnie w pliku o nazwie azuredeploy.json. W tym przewodniku Szybki start założono, że zapisano ścieżkę c:\Templates\azuredeploy.json , ale możesz użyć dowolnej ścieżki.

{
  "$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'))]"
    }
  }
}

Tworzenie specyfikacji szablonu

Specyfikacja szablonu to typ zasobu o nazwie Microsoft.Resources/templateSpecs. Aby utworzyć specyfikację szablonu, użyj programu PowerShell, interfejsu wiersza polecenia platformy Azure, portalu lub szablonu usługi ARM.

  1. Utwórz nową grupę zasobów, aby zawierała specyfikację szablonu.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. Utwórz specyfikację szablonu w tej grupie zasobów. Nadaj nowemu szablonowi nazwę storageSpec.

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

Wdrażanie specyfikacji szablonu

Aby wdrożyć specyfikację szablonu, użyj tych samych poleceń wdrażania, których można użyć do wdrożenia szablonu. Przekaż identyfikator zasobu specyfikacji szablonu do wdrożenia.

  1. Utwórz grupę zasobów zawierającą nowe konto magazynu.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Pobierz identyfikator zasobu specyfikacji szablonu.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Wdróż specyfikację szablonu.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Parametry są podane dokładnie tak, jak w przypadku szablonu usługi ARM. Ponownie wdróż specyfikację szablonu przy użyciu parametru dla typu konta magazynu.

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

Udzielanie dostępu

Jeśli chcesz zezwolić innym użytkownikom w organizacji na wdrożenie specyfikacji szablonu, musisz udzielić im dostępu do odczytu. Rolę Czytelnik można przypisać do grupy Microsoft Entra dla grupy zasobów zawierającej specyfikacje szablonu, które chcesz udostępnić. Aby uzyskać więcej informacji, zobacz Samouczek: udzielanie grupie dostępu do zasobów platformy Azure przy użyciu programu Azure PowerShell.

Aktualizowanie szablonu

Załóżmy, że zidentyfikowano zmianę, którą chcesz wprowadzić do szablonu w specyfikacji szablonu. Poniższy szablon jest podobny do poprzedniego szablonu, z wyjątkiem tego, że dodaje prefiks nazwy konta magazynu. Skopiuj poniższy szablon i zaktualizuj plik 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')]"
    }
  }
}

Aktualizowanie wersji specyfikacji szablonu

Zamiast tworzyć nową specyfikację szablonu dla poprawionego szablonu, dodaj nową wersję o nazwie 2.0 do istniejącej specyfikacji szablonu. Użytkownicy mogą wybrać wersję do wdrożenia.

  1. Utwórz nową wersję specyfikacji szablonu.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    
  2. Aby wdrożyć nową wersję, pobierz identyfikator zasobu dla 2.0 wersji.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. Wdróż wersję. Podaj prefiks nazwy konta magazynu.

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

Czyszczenie zasobów

Aby wyczyścić zasób wdrożony w tym przewodniku Szybki start, usuń obie utworzone grupy zasobów.

  1. W witrynie Azure Portal wybierz pozycję Grupa zasobów z menu po lewej stronie.

  2. Wprowadź nazwę grupy zasobów (templateSpecRG i storageRG) w polu Filtruj według nazwy.

  3. Wybierz nazwę grupy zasobów.

  4. Z górnego menu wybierz pozycję Usuń grupę zasobów.

Następne kroki

Aby dowiedzieć się więcej o tworzeniu specyfikacji szablonu zawierającej połączone szablony, zobacz Tworzenie specyfikacji szablonu połączonego szablonu.