Udostępnij przez


Samouczek: tworzenie specyfikacji szablonu za pomocą połączonych szablonów

Dowiedz się, jak utworzyć specyfikację szablonu przy użyciu szablonu głównego i połączonego szablonu. Używasz specyfikacji szablonu do udostępniania szablonów usługi ARM innym użytkownikom w organizacji. W tym artykule pokazano, jak utworzyć specyfikację szablonu, aby spakować szablon główny i jego połączone szablony przy użyciu relativePath właściwości zasobu wdrożenia.

Wymagania wstępne

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

Uwaga / Notatka

Aby użyć specyfikacji szablonu w programie Azure PowerShell, należy 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 połączonych szablonów

Utwórz szablon główny i połączony szablon.

Aby połączyć szablon, dodaj zasób wdrożenia do głównego szablonu. templateLink We właściwości określ ścieżkę względną połączonego szablonu zgodnie ze ścieżką szablonu nadrzędnego.

Połączony szablon jest nazywany linkedTemplate.jsoni jest przechowywany w podfolderze nazywanym artefaktami w ścieżce, w której jest przechowywany główny szablon. Dla parametru relativePath można użyć jednej z następujących wartości:

  • ./artifacts/linkedTemplate.json
  • /artifacts/linkedTemplate.json
  • artifacts/linkedTemplate.json

Właściwość relativePath jest zawsze względna względem pliku szablonu, w którym relativePath jest zadeklarowana, więc jeśli istnieje inny linkedTemplate2.json wywoływany z linkedTemplate.json i linkedTemplate2.json jest przechowywany w tym samym podfolderze artefaktów, względna ścieżka określona w linkedTemplate.json to tylko linkedTemplate2.json.

  1. Utwórz szablon główny przy użyciu następującego kodu JSON. Zapisz szablon główny jakoazuredeploy.json na komputerze lokalnym. W tym samouczku założono, że zapisano ścieżkę c:\Templates\linkedTS\azuredeploy.js, 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",
      "parameters": {
        "location": {
          "type": "string",
          "defaultValue": "westus2",
          "metadata":{
            "description": "Specify the location for the resources."
          }
        },
        "storageAccountType": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "metadata":{
            "description": "Specify the storage account type."
          }
        }
      },
      "variables": {
        "appServicePlanName": "[format('plan{0}', uniquestring(resourceGroup().id))]"
      },
      "resources": [
        {
          "type": "Microsoft.Web/serverfarms",
          "apiVersion": "2025-03-01",
          "name": "[variables('appServicePlanName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "B1",
            "tier": "Basic",
            "size": "B1",
            "family": "B",
            "capacity": 1
          },
          "kind": "linux",
          "properties": {
            "perSiteScaling": false,
            "reserved": true,
            "targetWorkerCount": 0,
            "targetWorkerSizeId": 0
          }
        },
        {
          "type": "Microsoft.Resources/deployments",
          "apiVersion": "2025-04-01",
          "name": "createStorage",
          "properties": {
            "mode": "Incremental",
            "templateLink": {
              "relativePath": "artifacts/linkedTemplate.json"
            },
            "parameters": {
              "storageAccountType": {
                "value": "[parameters('storageAccountType')]"
              }
            }
          }
        }
      ]
    }
    

    Uwaga / Notatka

    Parametr apiVersion Microsoft.Resources/deployments musi mieć wartość 2020-06-01 lub nowszą.

  2. Utwórz katalog o nazwie artifacts w folderze, w którym jest zapisywany główny szablon.

  3. Utwórz połączony szablon z następującym kodem 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."
          }
        }
      },
      "variables": {
        "storageAccountName": "[format('store{0}', uniquestring(resourceGroup().id))]"
      },
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2025-06-01",
          "name": "[variables('storageAccountName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "[parameters('storageAccountType')]"
          },
          "kind": "StorageV2",
          "properties": {}
        }
      ],
      "outputs": {
        "storageAccountName": {
          "type": "string",
          "value": "[variables('storageAccountName')]"
        }
      }
    }
    
  4. Zapisz szablon jakolinkedTemplate.json w folderze artifacts .

Tworzenie specyfikacji szablonu

Specyfikacje szablonów są przechowywane w grupach zasobów. Utwórz grupę zasobów, a następnie utwórz specyfikację szablonu przy użyciu następującego skryptu. Nazwa specyfikacji szablonu to webSpec.

New-AzResourceGroup `
  -Name templateSpecRG `
  -Location westus2

New-AzTemplateSpec `
  -Name webSpec `
  -Version "1.0.0.0" `
  -ResourceGroupName templateSpecRG `
  -Location westus2 `
  -TemplateFile "c:\Templates\linkedTS\azuredeploy.json"

Po zakończeniu możesz wyświetlić specyfikację szablonu w witrynie Azure Portal lub za pomocą następującego polecenia cmdlet:

Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec

Wdrażanie specyfikacji szablonu

Teraz możesz wdrożyć specyfikację szablonu. Wdrażanie specyfikacji szablonu jest podobne do wdrażania zawartego w nim szablonu, z tą różnicą, że przekazano identyfikator zasobu specyfikacji szablonu. Użyj tych samych poleceń wdrażania, a w razie potrzeby przekaż wartości parametrów specyfikacji szablonu.

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name webSpec -Version "1.0.0.0").Versions.Id

New-AzResourceGroupDeployment `
  -TemplateSpecId $id `
  -ResourceGroupName webRG

Dalsze kroki

Aby dowiedzieć się więcej o wdrażaniu specyfikacji szablonu jako szablonu połączonego, zobacz Samouczek: wdrażanie specyfikacji szablonu jako szablonu połączonego.