Compreender as especificações do modelo

Concluído

Até agora, você está acostumado a implantar modelos do Azure Resource Manager (modelos ARM) no Azure usando Bicep ou JSON. Você cria um arquivo de modelo e, em seguida, envia-o para o Azure criando uma implantação. O Azure Resource Manager orquestra a criação ou reconfiguração dos seus recursos.

Quando você trabalha com especificações de modelo, ainda envia o modelo para o Azure. Mas, em vez de implantá-lo, o Azure o salva para você usar no futuro. Em seguida, você pode voltar mais tarde e dizer ao Azure para implantar a especificação do modelo. Você pode até usar a mesma especificação de modelo repetidamente para implantar mais ambientes.

Por que usar especificações de modelo?

Na sua empresa de brinquedos, você criou muitos modelos reutilizáveis, incluindo:

Nome do modelo Description
Storage account Implanta uma conta de armazenamento e impõe a autenticação do Microsoft Entra.
Conta do Cosmos DB Implanta uma conta do Azure Cosmos DB com backup contínuo habilitado.
Rede virtual Implanta uma rede virtual que tem a configuração certa para emparelhar com a rede de hub principal.
Site de lançamento do produto Implanta um plano, aplicativo e conta de armazenamento do Serviço de Aplicativo do Azure para sites que apresentam lançamentos de produtos de novos brinquedos.

As especificações de modelo são uma ótima maneira de criar uma biblioteca de modelos ARM reutilizáveis para cenários comuns em sua organização. Um especialista pode criar um modelo com um recurso pré-configurado ou um conjunto de recursos. Esse especialista pode então publicá-lo como uma especificação de modelo, permitindo que outras pessoas na organização o implantem.

Você pode usar especificações de modelo para garantir que os recursos criados pela sua equipe sejam configurados de acordo com suas necessidades. Por exemplo, você pode publicar uma especificação de modelo como o modelo de conta de armazenamento que descrevemos anteriormente. Em seguida, sempre que alguém em sua organização implantar sua especificação de modelo, você poderá ter certeza de que eles criarão uma conta de armazenamento com as configurações de autenticação corretas.

As especificações de modelo são armazenadas no Azure, portanto, você não precisa manter arquivos de modelo compartilhados. Você gerencia quem pode usar e modificar suas especificações de modelo com controles de acesso baseados em função do Azure. Sem especificações de modelo, você precisa escolher um local de armazenamento, como o Armazenamento do Azure, para manter seus arquivos de modelo. Você também precisa controlar o acesso por conta própria.

Como as especificações do modelo se comparam aos módulos Bicep?

Ao trabalhar com o Bicep, você pode criar módulos reutilizáveis para definir conjuntos de recursos em um único arquivo. As especificações de modelo e os módulos Bicep são duas maneiras de adicionar reutilização aos seus modelos, mas são otimizados para coisas diferentes:

  • As especificações do modelo são projetadas para serem implantadas como um modelo completo. Você pode implantar especificações de modelo usando o portal do Azure e ferramentas como a CLI do Azure e o Azure PowerShell. Os módulos Bicep devem ser combinados em uma implantação maior. No entanto, se você criar uma especificação de modelo, o Bicep também permitirá que você a use como um módulo, se desejar.
  • As especificações de modelo fornecem recursos de controle de versão e acesso. Você mesmo precisa gerenciar as versões e a segurança do seu código Bicep.
  • As especificações de modelo são armazenadas no Azure como um recurso. Você precisa armazenar módulos Bicep em algum lugar que você controla, como um sistema de controle de versão, como o Git, ou seu sistema de arquivos.
  • Os módulos Bicep mantêm todo o código Bicep original, incluindo comentários, nomes simbólicos e espaços em branco. Quando você cria uma especificação de modelo usando o Bicep, seu código Bicep é convertido em JSON e algumas dessas informações são perdidas. Então você precisa manter o arquivo Bicep de origem em outro lugar também.

Quando você está decidindo entre especificações de modelo e módulos Bicep, uma boa regra geral é: se o modelo vai ser implantado como está em toda a sua organização, as especificações de modelo provavelmente são uma boa opção. Mas se é provável que você reutilize esse modelo em vários modelos pai, os módulos Bicep podem atender melhor às suas necessidades.

Como funcionam as especificações do modelo

Uma especificação de modelo é um recurso do Azure, assim como uma conta de armazenamento ou máquina virtual. Ele deve ser criado dentro de um grupo de recursos, embora o próprio modelo possa implantar recursos em um escopo de assinatura, gerenciamento ou locatário.

Ao trabalhar com especificações de modelo, você cria dois recursos:

  • A especificação do modelo é o recurso de contêiner. Ele contém uma ou várias versões.
  • As versões de especificação de modelo contêm o modelo real a ser implantado.

Você trabalha com especificações e versões de modelo usando suas IDs de recurso. Aqui está um exemplo de ID de recurso para uma especificação de modelo:

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS

Uma versão é um recurso filho da especificação do modelo. Ele tem um ID de recurso como este exemplo:

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS/versions/1.0

Ao implantar uma especificação de modelo, você precisa especificar a ID do recurso da versão da especificação do modelo.

Aqui está uma ilustração do fluxo de trabalho que você segue quando usa especificações de modelo:

Diagram that shows the workflow for using template specs.

Você cria um modelo da maneira que está acostumado. Não há nada de especial em um modelo que você cria para uma especificação de modelo. Você declara recursos, cria parâmetros e variáveis, usa funções e assim por diante.

Quando o modelo estiver pronto, você criará um recurso de especificação de modelo. Em seguida, você publica seu modelo na especificação do modelo como uma versão. As ferramentas que você usa para criar especificações de modelo permitem que você execute essas etapas em uma única operação. Sua especificação de modelo é armazenada no Azure como um recurso, depois de publicá-la. Você pode exibi-lo, editá-lo e controlar o acesso a ele como qualquer outro recurso do Azure. Você pode publicar sua especificação de modelo de sua máquina local ou de um pipeline de implantação.

Sempre que quiser implantar sua especificação de modelo, consulte o ID de recurso da versão da especificação de modelo da implantação. Você pode implantá-lo em qualquer grupo de recursos ou até mesmo em outra assinatura ou escopo. O Azure lê a especificação do modelo e usa-a como o modelo para a implantação.