Este início rápido mostra como empacotar um modelo do ARM (Azure Resource Manager) em uma especificação de modelo. Então, você implanta essa especificação. A especificação de modelo contém um modelo do ARM que implanta uma conta de armazenamento.
Prerequisites
Uma conta do Azure com uma assinatura ativa.
Crie uma conta gratuitamente.
Criar modelo
Você cria uma especificação de modelo com base em um modelo do ARM. Copie o modelo a seguir e salve como C:\Templates\createStorageV1.json.
{
"$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 de 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 do ARM.
Crie um grupo de recursos para conter a especificação de modelo.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
Crie a especificação de modelo nesse grupo de recursos. Nomeie a nova especificação de modelo storageSpec.
New-AzTemplateSpec `
-Name storageSpec `
-Version "1.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\Templates\createStorageV1.json"
Crie um grupo de recursos para conter a especificação de modelo.
az group create \
--name templateSpecRG \
--location westus2
Crie a especificação de modelo nesse grupo de recursos. Nomeie a nova especificação de modelo storageSpec.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "C:\Templates\createStorageV1.json"
Entre no portal do Azure.
Procure especificações de modelo. Selecione Especificações de modelo nas opções disponíveis.
Selecione Importar modelo e siga as instruções para importar C:\Templates\createStorageV1.jsno que você salvou anteriormente.
Forneça os seguintes valores:
-
Nome: insira um nome para a especificação de modelo. Por exemplo, storageSpec.
-
Assinatura: selecione uma assinatura do Azure usada para criar a especificação de modelo.
-
Grupo de recursos: selecione Criar e insira um novo nome do grupo de recursos. Por exemplo, templateSpecRG.
-
Local: selecione um local para o grupo de recursos. Por exemplo, Oeste dos EUA 2.
-
Versão: insira uma versão para a especificação de modelo. Use 1.0.
Clique em Examinar + Criar, depois em Criar.
Note
É recomendável usar o PowerShell ou a CLI em vez de um modelo do 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 do ARM, precisará adicionar manualmente modelos vinculados como artefatos, o que pode ser mais complexo.
Quando você usa um modelo do ARM para criar a especificação de modelo, o modelo é incorporado na definição de recursos. Copie o modelo a seguir e salve-o localmente como createTemplateSpec.json:
Note
No modelo inserido, todas as expressões do modelo devem ser precedidas por um segundo colchete à esquerda. Use "[[ em vez de "[. As matrizes JSON ainda usam apenas um colchete à esquerda. 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 usaria para implantar um modelo. Transmita 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 de modelo.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
Implante a especificação de modelo.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG
Forneça parâmetros exatamente como faria para um modelo do ARM. Reimplante a especificação de 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 de modelo.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
Note
Há um problema conhecido na obtenção de uma ID de especificação de modelo e na atribuição dela a uma variável no Windows PowerShell.
Implante a especificação de modelo.
az deployment group create \
--resource-group storageRG \
--template-spec $id
Forneça parâmetros exatamente como faria para um modelo do ARM. Reimplante a especificação de 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 de modelo que você criou. Use a caixa de pesquisa para localizar a especificação do modelo se houver muitos.
Selecione Implantar.
Forneça os seguintes valores:
-
Assinatura: selecione uma assinatura do Azure usada para criar o recurso.
-
Grupo de recursos: selecione Criar e insira storageRG.
Selecione Examinar + Criar e, em seguida, selecione Criar.
Copie o modelo a seguir 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 de modelo, storageSpec é o nome da especificação de modelo e 1.0 é a versão da especificação de 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 na sua organização implantem sua especificação de modelo, conceda acesso de leitura a eles. Atribua a função Leitor a um grupo do Microsoft Entra do grupo de recursos que contém as especificações de modelo que deseja compartilhar. Para saber mais, confira Tutorial: Conceder a um grupo acesso aos recursos do Azure a um usuário 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 por adicionar 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 a versão da especificação de 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 versão para a especificação de modelo.
New-AzTemplateSpec `
-Name storageSpec `
-Version "2.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\Templates\createStorageV2.json"
Para implantar a nova versão, obtenha a ID do recurso para a versão 2.0.
$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 versão para a especificação de 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 a ID do recurso para a versão 2.0.
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 a especificação de modelo storageSpec e selecione Criar nova versão.
Selecione 1.0 como o modelo base e, em seguida, selecione Criar.
Nomeie a nova versão 2.0 e, opcionalmente, adicione observações. Selecione Editar modelo.
Substitua o conteúdo do modelo pelo modelo atualizado. Selecione Examinar + Salvar.
Selecione Salvar alterações.
Para implantar a nova versão, selecione Versões.
Abra a nova versão e selecione Implantar.
Preencha os campos como você fez ao implantar a versão anterior.
Selecione Examinar + Criar e, em seguida, selecione Criar.
Novamente, você precisará fazer algumas alterações no modelo local para que ele funcione com as especificações de modelo. Copie o modelo a seguir 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 à especificação de modelo, implante o 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 modelo a seguir 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ê deve ver a nova conta de armazenamento com um nome que começa com store uma cadeia de caracteres exclusiva com base na ID do grupo de recursos.
Limpar os recursos
Para limpar o recurso implantado neste início rápido, exclua ambos os 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 Excluir grupo de recursos no menu superior.
Próximas etapas
Para saber mais sobre como criar uma especificação de modelo que inclua modelos vinculados, veja como criar uma especificação de modelo de um modelo vinculado.