Tutorial: Criar uma especificação de modelo com modelos ligados
Saiba como criar uma especificação de modelo com um modelo principal e um modelo ligado. Pode utilizar especificações de modelo para partilhar modelos do ARM com outros utilizadores na sua organização. Este artigo mostra-lhe como criar uma especificação de modelo para empacotar um modelo principal e os respetivos modelos ligados com a relativePath
propriedade do recurso de implementação.
Pré-requisitos
Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
Nota
Para utilizar especificações de modelo com Azure PowerShell, tem de instalar a versão 5.0.0 ou posterior. Para utilizá-lo com a CLI do Azure, utilize a versão 2.14.2 ou posterior.
Criar modelos ligados
Crie o modelo principal e o modelo ligado.
Para ligar um modelo, adicione um recurso de implementações ao modelo principal. templateLink
Na propriedade , especifique o caminho relativo do modelo ligado de acordo com o caminho do modelo principal.
O modelo ligado é denominado linkedTemplate.json e é armazenado numa subpasta denominada artefactos no caminho onde o modelo principal está armazenado. Pode utilizar um dos seguintes valores para o relativePath:
./artifacts/linkedTemplate.json
/artifacts/linkedTemplate.json
artifacts/linkedTemplate.json
A relativePath
propriedade é sempre relativa ao ficheiro de modelo onde relativePath
é declarado, por isso, se existir outro linkedTemplate2.json chamado de linkedTemplate.json e linkedTemplate2.json estiver armazenado na mesma subpasta de artefactos, o relativePath especificado em linkedTemplate.json é apenas linkedTemplate2.json
.
Crie o modelo principal com o seguinte JSON. Guarde o modelo principal como azuredeploy.json no seu computador local. Este tutorial pressupõe que guardou num caminho c:\Templates\linkedTS\azuredeploy.json , mas pode utilizar 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": "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')]" } } } } ] }
Nota
A apiVersion de tem de
Microsoft.Resources/deployments
ser 2020-06-01 ou posterior.Crie um diretório denominado artefactos na pasta onde o modelo principal é guardado.
Crie o modelo ligado 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": "2022-09-01", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('storageAccountType')]" }, "kind": "StorageV2", "properties": {} } ], "outputs": { "storageAccountName": { "type": "string", "value": "[variables('storageAccountName')]" } } }
Guarde o modelo como linkedTemplate.json na pasta artifacts .
Criar especificação de modelo
As especificações de modelos são armazenadas em Grupos de recursos. Crie um grupo de recursos e, em seguida, crie uma especificação de modelo com o seguinte script. 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, pode ver as especificações do modelo a partir do portal do Azure ou através do seguinte cmdlet:
Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec
Implementar especificações de modelo
Agora pode implementar a especificação de modelo. Implementar a especificação de modelo é como implementar o modelo que contém, exceto que transmite o ID de recurso da especificação de modelo. Utilize os mesmos comandos de implementação e, se necessário, transmita os valores dos parâmetros para a especificação do 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
Passos seguintes
Para saber mais sobre como implementar uma especificação de modelo como um modelo ligado, veja Tutorial: Implementar uma especificação de modelo como um modelo ligado.