Implantar uma especificação de modelo

Concluído

Depois de criar e publicar sua especificação de modelo, você pode implantá-la. Nesta unidade, você aprenderá sobre as maneiras de implantar uma especificação de modelo.

Criar uma implantação usando uma especificação de modelo

Para implantar uma especificação de modelo em um grupo de recursos, use o mesmo New-AzResourceGroupDeployment cmdlet com o qual está familiarizado. Em vez de especificar um arquivo de modelo, especifique a ID de recurso de uma especificação de modelo, conforme mostrado neste exemplo:

New-AzResourceGroupDeployment `
  -TemplateSpecId '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS'

Embora as especificações de modelo precisem ser criadas dentro de um grupo de recursos, você pode implantá-las em assinaturas, grupos de gerenciamento ou até mesmo locatários usando estes cmdlets:

Para implantar neste escopo: Use este cmdlet do PowerShell:
Grupo de recursos New-AzResourceGroupDeployment
Subscrição New-AzSubscriptionDeployment
Grupo de gestão New-AzManagementGroupDeployment
Inquilino New-AzTenantDeployment

Cada um desses cmdlets aceita o -TemplateSpecId parâmetro para iniciar uma implantação de especificação de modelo em um desses escopos.

Para implantar uma especificação de modelo em um grupo de recursos, use o mesmo az deployment group create comando com o qual está familiarizado. Em vez de especificar um arquivo de modelo, especifique a ID de recurso de uma especificação de modelo, conforme mostrado neste exemplo:

az deployment group create \
  --template-spec "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS"

Embora as especificações de modelo precisem ser criadas dentro de um grupo de recursos, você pode implantá-las em assinaturas, grupos de gerenciamento ou até mesmo locatários usando estes comandos:

Para implantar neste escopo: Execute este comando da CLI do Azure:
Grupo de recursos az deployment group create
Subscrição az deployment sub create
Grupo de gestão az deployment mg create
Inquilino az deployment tenant create

Cada um desses comandos aceita o --template-spec argumento para iniciar uma implantação de especificação de modelo em um desses escopos.

Usar uma especificação de modelo como uma implantação vinculada

Para usar uma especificação de modelo de dentro de outro modelo do Azure Resource Manager (modelo ARM), crie uma implantação que use essa especificação de modelo. Esse tipo de implantação é chamado de implantação vinculada porque você está vinculando a um modelo de implantação especificado externamente.

No Azure, uma implantação é um recurso que tem o tipo Microsoft.Resources/deploymentsde recurso . Ao implantar um modelo ARM, você está criando um recurso de implantação. O mesmo conceito se aplica quando você implanta uma especificação de modelo, como esta:

{
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2020-10-01",
  "name": "createStorage",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
    }
  }
}

Quando você tiver parâmetros para fornecer à implantação de especificação de modelo, use a parameters propriedade:

{
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2020-10-01",
  "name": "createStorage",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
    },
    "parameters": {
      "storageAccountName": {
        "value": "[parameters('storageAccountName')]"
      }
    }
  }
}

Usar uma especificação de modelo como um módulo Bicep

Você pode usar uma especificação de modelo como um módulo dentro de um arquivo Bicep:

module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
  name: 'storageAccountTemplateSpec'
}

Observe que o caminho do módulo usa um formato especial:

Diagram showing the components of the template spec path.

Há três componentes para o caminho do módulo, separados pelo caractere dois pontos (:):

  • Esquema: O Bíceps suporta vários tipos de módulos, que são chamados de esquemas. Quando você usa uma especificação de modelo como um módulo, você usa ts como o esquema.
  • ID da assinatura, nome do grupo de recursos e nome da especificação do modelo: esses valores devem especificar o local do recurso de especificação do modelo que você publicou anteriormente. Use barras (/) para separar a ID da assinatura, o nome do grupo de recursos e o nome da especificação do modelo. Esta seção do caminho do módulo não é o ID de recurso completo da especificação do modelo - é apenas alguns dos componentes do ID do recurso.
  • Versão: A versão de especificação do modelo precisa ser incluída.

Nota

Não é possível usar variáveis, parâmetros ou interpolação de cadeia de caracteres ao especificar o caminho para um módulo. O caminho completo da especificação do modelo precisa ser salvo em seu arquivo Bicep.

Quando você tiver parâmetros para fornecer à especificação do modelo, use a params propriedade:

module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
  name: 'storageAccountTemplateSpec'
  params: {
    storageAccountName: storageAccountName
  }
}

O arquivo de especificação do modelo é baixado e copiado (transpilado) em seu modelo JSON ARM quando o arquivo Bicep é construído. Normalmente, essa operação acontece quando você implanta seu arquivo Bicep, mas você também pode usar as ferramentas Bicep para transpilar explicitamente executando o bicep build comando.