Partilhar via


Tutorial: Implantar uma especificação de modelo como um modelo vinculado

Saiba como implantar uma especificação de modelo existente usando uma implantação vinculada. Você usa especificações de modelo para compartilhar modelos ARM com outros usuários em sua organização. Depois de criar uma especificação de modelo, você pode implantá-la usando o Azure PowerShell ou a CLI do Azure. Você também pode implantar a especificação de modelo como parte de sua solução usando um modelo vinculado.

Pré-requisitos

Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.

Nota

Para usar a especificação 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 uma especificação de modelo

Siga Guia de início rápido: crie e implante especificações de modelo para criar uma especificação de modelo para implantar uma conta de armazenamento. Você precisa do nome do grupo de recursos da especificação do modelo, do nome da especificação do modelo e da versão da especificação do modelo na próxima seção.

Criar o modelo principal

Para implantar uma especificação de modelo em um modelo ARM, adicione um recurso de implantações ao seu modelo principal. templateLink Na propriedade, especifique a ID do recurso de uma especificação de modelo. Crie um modelo com o seguinte JSON chamado azuredeploy.json. Este tutorial pressupõe que você salvou em um caminho c:\Templates\deployTS\azuredeploy.json mas você pode 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": "[resourceGroup().location]"
    },
    "tsResourceGroup":{
      "type": "string",
      "metadata": {
        "Description": "Specifies the resource group name of the template spec."
      }
    },
    "tsName": {
      "type": "string",
      "metadata": {
        "Description": "Specifies the name of the template spec."
      }
    },
    "tsVersion": {
      "type": "string",
      "defaultValue": "1.0.0.0",
      "metadata": {
        "Description": "Specifies the version the template spec."
      }
    },
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "metadata": {
        "Description": "Specifies the storage account type required by the template spec."
      }
    }
  },
  "variables": {
    "appServicePlanName": "[concat('plan', uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2016-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": "2020-10-01",
      "name": "createStorage",
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "id": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
        },
        "parameters": {
          "storageAccountType": {
            "value": "[parameters('storageAccountType')]"
          }
        }
      }
    }
  ],
  "outputs": {
    "templateSpecId": {
      "type": "string",
      "value": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
    }
  }
}

O ID de especificação do modelo é gerado usando a resourceID() função. O argumento do grupo de recursos na função resourceID() será opcional se o templateSpec estiver no mesmo grupo de recursos da implantação atual. Você também pode passar diretamente o ID do recurso como um parâmetro. Para obter o ID, use:

$id = (Get-AzTemplateSpec -ResourceGroupName $resourceGroupName -Name $templateSpecName -Version $templateSpecVersion).Versions.Id

A sintaxe para passar parâmetros para a especificação do modelo é:

"parameters": {
  "storageAccountType": {
    "value": "[parameters('storageAccountType')]"
  }
}

Nota

A apiVersion do Microsoft.Resources/deployments deve ser 2020-06-01 ou posterior.

Implementar o modelo

Quando você implanta o modelo vinculado, ele implanta o aplicativo Web e a conta de armazenamento. A implantação é igual à implantação de outros modelos ARM.

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

New-AzResourceGroupDeployment `
  -ResourceGroupName webRG `
  -TemplateFile "c:\Templates\deployTS\azuredeploy.json" `
  -tsResourceGroup templateSpecRg `
  -tsName storageSpec `
  -tsVersion 1.0

Próximos passos

Para saber mais sobre como criar uma especificação de modelo que inclua modelos vinculados, consulte Criar uma especificação de modelo de um modelo vinculado.