Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Saiba como criar uma especificação de modelo com um modelo principal e um modelo vinculado. Você usa especificações de modelo para compartilhar modelos do ARM com outros usuários em sua organização. Este artigo mostra como criar uma especificação de modelo para empacotar um modelo principal e seus modelos vinculados usando a relativePath propriedade do recurso de implantação.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Observação
Para usar especificações de modelo com o Azure PowerShell, você deve instalar a versão 5.0.0 ou posterior. Para usá-lo com a CLI do Azure, use a versão 2.14.2 ou posterior.
Criar modelos vinculados
Crie o modelo principal e o modelo vinculado.
Para vincular um modelo, adicione um recurso de implantações ao modelo principal. Na propriedade templateLink, especifique o caminho relativo do modelo vinculado de acordo com o caminho do modelo pai.
O modelo vinculado é chamado linkedTemplate.jsone é armazenado em uma subpasta chamada artefatos no caminho em que o modelo principal é armazenado. Você pode usar um dos seguintes valores para o relativePath:
./artifacts/linkedTemplate.json/artifacts/linkedTemplate.jsonartifacts/linkedTemplate.json
A propriedade relativePath é sempre relativa ao arquivo de modelo onde relativePath é declarado, portanto, se houver outro linkedTemplate2.json que seja chamado a partir do linkedTemplate.json e o linkedTemplate2.json estiver armazenado na mesma subpasta de artefatos, o relativePath especificado no linkedTemplate.json será apenas linkedTemplate2.json.
Crie o modelo principal com o JSON a seguir. Salve o modelo principal como azuredeploy.json em seu computador local. Este tutorial presume que você salvou no caminho c:\Templates\linkedTS\azuredeploy.json, mas é possível usar qualquer caminho.
{ "$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')]" } } } } ] }Observação
O apiVersion de
Microsoft.Resources/deploymentsdeve ser 2020-06-01 ou posterior.Crie um diretório chamado artefatos na pasta em que o modelo principal é salvo.
Crie o modelo vinculado com o seguinte 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')]" } } }Salve o modelo como linkedTemplate.json na pasta artefatos .
Criar especificação de modelo
As especificações de modelos são armazenadas em grupos de recursos. Crie um grupo de recursos e crie uma especificação de modelo com o script a seguir. O nome da especificação do modelo é 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"
Quando terminar, você poderá exibir a especificação de modelo no portal do Azure ou usando o seguinte cmdlet:
Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec
Implantar especificação de modelo
Agora você pode implantar a especificação de modelo. Implantar a especificação de modelo é como implantar o modelo que ele contém, exceto que você passa a ID do recurso da especificação de modelo. Você usa os mesmos comandos de implantação e, se necessário, passa valores de parâmetro para a especificação de modelo.
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
Próximas etapas
Para saber mais sobre como implantar uma especificação de modelo como um modelo vinculado, veja Tutorial: Implantar uma especificação de modelo como um modelo vinculado.