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 platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Uwaga
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.
Create linked templates (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.json i 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
.
Utwórz szablon główny przy użyciu następującego kodu JSON. Zapisz szablon główny jako azuredeploy.json na komputerze lokalnym. W tym samouczku założono, że zapisano ścieżkę c:\Templates\linkedTS\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", "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": "2022-09-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": "2022-09-01", "name": "createStorage", "properties": { "mode": "Incremental", "templateLink": { "relativePath": "artifacts/linkedTemplate.json" }, "parameters": { "storageAccountType": { "value": "[parameters('storageAccountType')]" } } } } ] }
Uwaga
Parametr apiVersion
Microsoft.Resources/deployments
musi mieć wartość 2020-06-01 lub nowszą.Utwórz katalog o nazwie artifacts w folderze, w którym jest zapisywany główny szablon.
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": "2022-09-01", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('storageAccountType')]" }, "kind": "StorageV2", "properties": {} } ], "outputs": { "storageAccountName": { "type": "string", "value": "[variables('storageAccountName')]" } } }
Zapisz szablon jako linkedTemplate.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
Następne 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.