Este guia de início rápido mostra como empacotar um modelo do Azure Resource Manager (modelo ARM) em uma especificação de modelo. Em seguida, você implanta essa especificação de modelo. Sua especificação de modelo contém um modelo ARM que implanta uma conta de armazenamento.
Prerequisites
Uma conta do Azure com uma subscrição ativa.
Crie uma conta gratuitamente.
Criar modelo
Você cria uma especificação de modelo a partir de um modelo ARM. Copie o modelo a seguir e salve como C:\Templates\createStorageV1.jsem.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Criar especificação de modelo
A especificação do modelo é um tipo de recurso chamado Microsoft.Resources/templateSpecs. Para criar uma especificação de modelo, use o PowerShell, a CLI do Azure, o portal do Azure ou um modelo ARM.
Crie um novo grupo de recursos para conter a especificação do modelo.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
Crie a especificação do modelo nesse grupo de recursos. Dê à nova especificação de modelo o nome storageSpec.
New-AzTemplateSpec `
-Name storageSpec `
-Version "1.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\Templates\createStorageV1.json"
Crie um novo grupo de recursos para conter a especificação do modelo.
az group create \
--name templateSpecRG \
--location westus2
Crie a especificação do modelo nesse grupo de recursos. Dê à nova especificação de modelo o nome storageSpec.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "C:\Templates\createStorageV1.json"
Inicie sessão no portal do Azure.
Pesquise as especificações do modelo. Selecione Especificações do modelo nas opções disponíveis.
Selecione Importar modelo e siga as instruções para importar C:\Templates\createStorageV1.json que guardou anteriormente.
Forneça os seguintes valores:
-
Nome: insira um nome para a especificação do modelo. Por exemplo, storageSpec.
-
Assinatura: selecione uma assinatura do Azure usada para criar a especificação do modelo.
-
Grupo de Recursos: selecione Criar novo e insira um novo nome de grupo de recursos. Por exemplo, templateSpecRG.
-
Localização: selecione uma localização para o grupo de recursos. Por exemplo, West US 2.
-
Versão: insira uma versão para a especificação do modelo.
Selecione Rever + Criar e, depois selecione Criar.
Note
Recomendamos usar o PowerShell ou a CLI em vez de um modelo ARM para criar sua especificação de modelo. Essas ferramentas convertem automaticamente modelos vinculados em artefatos associados ao modelo principal. Se você usar um modelo ARM, precisará adicionar manualmente modelos vinculados como artefatos, o que pode ser mais complexo.
Quando você usa um modelo ARM para criar a especificação de modelo, o modelo é incorporado na definição de recurso. Copie o seguinte modelo e salve-o localmente como createTemplateSpec.json:
Note
No modelo incorporado, todas as expressões de modelo devem ser escapadas com um segundo colchete esquerdo. Use "[[ em vez de "[. As matrizes JSON ainda usam um único colchete esquerdo. Veja as propriedades de nome e localização no exemplo abaixo:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2022-02-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
}
},
{
"type": "Microsoft.Resources/templateSpecs/versions",
"apiVersion": "2022-02-01",
"name": "[format('{0}/{1}', 'storageSpec', '1.0')]",
"location": "westus2",
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[[parameters('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
},
"dependsOn": [
"storageSpec"
]
}
]
}
Use a CLI do Azure ou o PowerShell para criar um novo grupo de recursos.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
az group create \
--name templateSpecRG \
--location westus2
Implante seu modelo com a CLI do Azure ou o PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "C:\Templates\createTemplateSpec.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "C:\Templates\createTemplateSepc.json"
Verifique a implantação com a CLI do Azure ou o PowerShell.
Get-AzTemplateSpec `
-ResourceGroupName templateSpecRG `
-Name storageSpec
az ts show \
--resource-group templateSpecRG \
--name storageSpec
Implantar especificação de modelo
Para implantar uma especificação de modelo, use os mesmos comandos de implantação que você usaria para implantar um modelo. Passe a ID do recurso da especificação de modelo a ser implantada.
Crie um grupo de recursos para conter a nova conta de armazenamento.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
Obtenha a ID do recurso da especificação do modelo.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
Implante a especificação do modelo.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG
Forneça parâmetros exatamente como faria para um modelo ARM. Reimplante a especificação do modelo com um parâmetro para o tipo de conta de armazenamento.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-storageAccountType Standard_GRS
Crie um grupo de recursos para conter a nova conta de armazenamento.
az group create \
--name storageRG \
--location westus2
Obtenha a ID do recurso da especificação do modelo.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
Note
Há um problema conhecido ao obter uma ID de especificação de modelo e atribuí-la a uma variável no Windows PowerShell.
Implante a especificação do modelo.
az deployment group create \
--resource-group storageRG \
--template-spec $id
Forneça parâmetros exatamente como faria para um modelo ARM. Reimplante a especificação do modelo com um parâmetro para o tipo de conta de armazenamento.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters storageAccountType='Standard_GRS'
Selecione a especificação do modelo que você criou. Use a caixa de pesquisa para encontrar as especificações do modelo, se houver muitas.
Selecione Implantar.
Forneça os seguintes valores:
-
Assinatura: selecione uma assinatura do Azure para criar o recurso.
-
Grupo de recursos: selecione Criar novo e, em seguida, insira storageRG.
Selecione Rever + criar e, em seguida, selecione Criar.
Copie o seguinte modelo e salve-o localmente como deployTemplateSpecV1.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '1.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
]
}
No modelo, templateSpecRG é o nome do grupo de recursos que contém a especificação do modelo, storageSpec é o nome da especificação do modelo e 1.0 é a versão da especificação do modelo.
Use a CLI do Azure ou o PowerShell para criar um novo grupo de recursos para a conta de armazenamento.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
az group create \
--name storageRG \
--location westus2
Implante seu modelo com a CLI do Azure ou o PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "C:\Templates\deployTemplateSpecV1.json"
az deployment group create \
--resource-group storageRG \
--template-file "C:\Templates\deployTemplateSpecV1.json"
Verifique a implantação com a CLI do Azure ou o PowerShell.
Get-AzResource `
-ResourceGroupName storageRG
az resource list \
--resource-group storageRG
Conceder acesso
Para permitir que outros usuários em sua organização implantem sua especificação de modelo, conceda-lhes acesso de leitura. Atribua a função Leitor a um grupo do Microsoft Entra para o grupo de recursos que contém as especificações de modelo que você deseja compartilhar. Para obter mais informações, consulte Tutorial: Conceder a um grupo acesso aos recursos do Azure usando o Azure PowerShell.
Atualizar modelo
Para fazer uma alteração no modelo em sua especificação de modelo, revise o modelo. O modelo a seguir é semelhante ao modelo anterior, exceto que adiciona um prefixo para o nome da conta de armazenamento. Copie o modelo a seguir e salve-o como createStorageV2.json arquivo.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Atualizar versão de especificação do modelo
Em vez de criar uma nova especificação de modelo para o modelo revisado, adicione uma nova versão nomeada 2.0 à especificação de modelo existente. Você pode implantar qualquer uma das versões.
Crie uma nova versão para a especificação do modelo.
New-AzTemplateSpec `
-Name storageSpec `
-Version "2.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\Templates\createStorageV2.json"
Para implantar a nova versão, obtenha o ID do recurso para a 2.0 versão.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
Implante essa versão. Forneça um prefixo para o nome da conta de armazenamento.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-namePrefix "demoaccount"
Crie uma nova versão para a especificação do modelo.
az ts create \
--name storageSpec \
--version "2.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "C:\Templates\createStorageV2.json"
Para implantar a nova versão, obtenha o ID do recurso para a 2.0 versão.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "2.0" --query "id")
Implante essa versão. Forneça um prefixo para o nome da conta de armazenamento.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters namePrefix='demoaccount'
Abra o modelo spec storageSpec e selecione Create new version.
Selecione 1.0 como o modelo base e, em seguida, selecione Criar.
Nomeie a nova versão 2.0 e, opcionalmente, adicione notas. Selecione Editar modelo.
Substitua o conteúdo do modelo pelo modelo atualizado. Selecione Rever + Guardar.
Selecione Guardar alterações.
Para implantar a nova versão, selecione Versões.
Abra a nova versão e selecione Implantar.
Preencha os campos como fez ao implantar a versão anterior.
Selecione Rever + criar e, em seguida, selecione Criar.
Novamente, você deve fazer algumas alterações no seu modelo local para fazê-lo funcionar com as especificações do modelo. Copie o seguinte modelo e salve-o localmente como createTemplateSpec.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2022-02-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
}
},
{
"type": "Microsoft.Resources/templateSpecs/versions",
"apiVersion": "2022-02-01",
"name": "[format('{0}/{1}', 'storageSpec', '2.0')]",
"location": "westus2",
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[[parameters('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
},
"dependsOn": [
"storageSpec"
]
}
]
}
Para adicionar a nova versão à sua especificação de modelo, implante seu modelo com a CLI do Azure ou o PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "C:\Templates\createTemplateSpec.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "C:\Templates\createTemplateSpec.json"
verifique a implantação com a CLI do Azure ou o PowerShell.
Get-AzTemplateSpec `
-ResourceGroupName templateSpecRG `
-Name storageSpec
az ts show \
--resource-group templateSpecRG \
--name storageSpec
Você deve ver a nova versão 2.0 na lista de versões.
Copie o seguinte modelo e salve-o localmente como deployTemplateSpecV2.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '2.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
]
}
Implante seu modelo com a CLI do Azure ou o PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "C:\Templates\deployTemplateSpecV2.json"
az deployment group create \
--resource-group storageRG \
--template-file "C:\Templates\deployTemplateSpecV2.json"
Verifique a implantação com a CLI do Azure ou o PowerShell.
Get-AzResource `
-ResourceGroupName storageRG
az resource list \
--resource-group storageRG
Você verá a nova conta de armazenamento com um nome que começa com store e uma cadeia de caracteres exclusiva com base na ID do grupo de recursos.
Clean up resources (Limpar recursos)
Para limpar o recurso implantado neste início rápido, exclua os dois grupos de recursos criados.
- No portal do Azure, selecione Grupo de recursos no menu à esquerda.
- Insira o nome do grupo de recursos (templateSpecRG e storageRG) no campo Filtrar por nome.
- Selecione o nome do grupo de recursos.
- Selecione Eliminar grupo de recursos no menu superior.
Próximos passos
Para saber mais sobre como criar uma especificação de modelo que inclui modelos vinculados, consulte como criar uma especificação de modelo de um modelo vinculado.