Usar a CLI do Azure para exportar um modelo

Para ajudar na criação de modelos do Azure Resource Manager, você pode exportar um modelo de recursos existentes. O modelo exportado ajuda a entender a sintaxe JSON e as propriedades que implantam seus recursos. Para automatizar implantações futuras, comece com o modelo exportado e modifique-o para seu cenário. O processo de modelo de exportação tenta criar um modelo utilizável. No entanto, a maioria dos modelos exportados exige algumas modificações antes de serem usados para implantar recursos do Azure.

O Resource Manager permite que você escolha um ou mais recursos para exportar para um modelo. Você pode focar nos recursos exatos dos quais precisa no modelo.

Este artigo mostra como exportar modelos pela CLI do Azure. Para obter outras opções, confira:

Escolha a opção de exportação correta

Há duas maneiras de exportar um modelo:

  • Exportação do grupo de recursos ou do recurso. Essa opção gera um novo modelo com base nos recursos existentes. O modelo exportado é um "instantâneo" do estado atual do grupo de recursos. Você pode exportar um grupo de recursos inteiro ou recursos específicos dentro desse grupo de recursos.

  • Salvar do histórico. Essa opção recupera uma cópia exata de um modelo usado para implantação. Você especifica a implantação do histórico de implantação.

Os modelos exportados têm qualidades diferentes, dependendo da opção escolhida.

De grupo de recursos ou de recurso Do histórico
O modelo é gerado automaticamente. Você provavelmente vai querer melhorar o código antes de implantá-lo. O modelo é uma cópia exata da criada pelo autor do modelo. Ele está pronto para ser reimplantado sem nenhuma alteração.
O modelo é um instantâneo do estado atual dos recursos. Ele inclui quaisquer alterações manuais que foram feitas após a implantação. O modelo mostra apenas o estado dos recursos no momento da implantação. As alterações manuais feitas após a implantação não são incluídas.
Você pode selecionar quais recursos de um grupo de recursos para exportar. Todos os recursos de uma implantação específica estão incluídos. Você não pode escolher um subconjunto desses recursos ou incluir recursos que foram adicionados em um momento diferente.
O modelo inclui todas as propriedades para os recursos, incluindo algumas propriedades que normalmente não seriam definidas durante a implantação. Talvez você queira remover ou limpar essas propriedades antes de reutilizar o modelo. O modelo inclui apenas as propriedades necessárias para a implantação. O modelo é mais esparso e mais fácil de ler.
O modelo provavelmente não inclui todos os parâmetros necessários para reutilização. A maioria dos valores de propriedade é codificada no modelo. Para reimplantar o modelo em outros ambientes, você precisa adicionar parâmetros que aumentem a capacidade de configurar os recursos. Você pode desmarcar Incluir parâmetros para que você possa criar seus próprios parâmetros. O modelo inclui parâmetros que facilitam a reimplantação em ambientes diferentes.

Exporte o modelo de um grupo de recursos quando:

  • Você precisa capturar alterações para recursos que foram feitos após a implantação original.
  • Você vai querer escolher quais recursos são exportados.
  • Os recursos não foram criados com um modelo.

Exportar o modelo a partir do histórico de implantações quando:

  • Você vai querer um modelo fácil de reutilizar.
  • Você não precisa incluir as alterações feitas após a implantação original.

Limitações

Não há garantia de que a exportação seja bem-sucedida. A exportação não é uma maneira confiável de transformar recursos pré-existentes em modelos utilizáveis na produção. É melhor criar recursos do zero usando o arquivo Bicep escrito à mão, o modelo do ARM ou o terraform.

Ao exportar de um grupo de recursos ou recurso, o modelo exportado é gerado a partir dos esquemas publicados para cada tipo de recurso. Pode acontecer de o esquema não ter a versão mais recente para um tipo de recurso. Verifique o modelo exportado para ver se ele inclui as propriedades das quais você precisa. Se necessário, edite o modelo exportado para usar a versão da API necessária.

Alguns parâmetros de senha podem estar ausentes dos modelos exportados. Você precisa verificar a referência do modelo e adicionar manualmente esses parâmetros antes de usar os modelos para implantar recursos.

O recurso de exportação de modelo não dá suporte à exportação de recursos do Azure Data Factory. Para saber mais sobre como você pode exportar recursos do Data Factory, consulte Copiar ou clonar um data factory no Azure Data Factory.

Para exportar recursos criados por meio do modelo de implantação clássico, você deve migrá-los para o modelo de implantação do Resource Manager.

Se, ao exportar um modelo, você receber um aviso dizendo que um tipo de recurso não foi exportado, você ainda poderá descobrir as propriedades desse recurso. Para propriedades de recursos, veja a referência do modelo. Você também pode dar uma olhada no API REST do Azure para o tipo de recurso específico.

O grupo de recursos para o qual você cria o modelo exportado tem um limite de 200 recursos. Se você tentar exportar um grupo de recursos que tenha mais de 200 recursos, a mensagem de erro Export template is not supported for resource groups more than 200 resources será exibida.

Exportar modelo de um grupo de recursos

Depois de definir seu grupo de recursos com êxito, você poderá exportar um modelo do Azure Resource Manager para o grupo de recursos.

Para exportar todos os recursos em um grupo de recursos, use az group export e forneça o nome do grupo de recursos.

az group export --name demoGroup

O script exibe o modelo no console. Para salvá-lo em um arquivo, use:

az group export --name demoGroup > exportedtemplate.json

Em vez de exportar todos os recursos no grupo de recursos, você pode selecionar quais exportar.

Para exportar um recurso, passe a ID do recurso.

storageAccountID=$(az resource show --resource-group demoGroup --name demostg --resource-type Microsoft.Storage/storageAccounts --query id --output tsv)
az group export --resource-group demoGroup --resource-ids $storageAccountID

Para exportar mais de um recurso, passe as IDs dos recursos separadas por espaço. Para exportar todos os recursos, não especifique este argumento ou forneça "*".

az group export --resource-group <resource-group-name> --resource-ids $storageAccountID1 $storageAccountID2

Ao exportar o modelo, você pode especificar se os parâmetros serão usados no modelo. Por padrão, os parâmetros para nomes de recursos são incluídos, mas não têm um valor padrão.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "type": "String"
  }
}

Se você usar o parâmetro --skip-resource-name-params ao exportar o modelo, os parâmetros para nomes de recursos não serão incluídos. Em vez disso, o nome é definido diretamente no recurso para o seu valor atual. Não é possível personalizar o nome durante a implantação.

"resources": [
  {
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2022-09-01",
    "name": "demoHostPlan",
    ...
  }
]

Se você usar o parâmetro --include-parameter-default-value ao exportar o modelo, o parâmetro de modelo vai incluir o valor padrão definido para o valor atual. Você pode usar o valor padrão ou substituí-lo passando um valor diferente.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "defaultValue": "demoHostPlan",
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "defaultValue": "webSite3bwt23ktvdo36",
    "type": "String"
  }
}

Salvar modelo do histórico de implantações

Você pode salvar um modelo de uma implantação no histórico de implantações. O modelo que você recebe é exatamente aquele que foi usado para implantação.

Para obter um modelo de uma implantação de grupo de recursos, use o comando az deployment group export. Especifique o nome da implantação a ser recuperada. Para obter ajuda sobre como obter o nome de uma implantação, confira Exibir o histórico de implantações com o Azure Resource Manager.

az deployment group export --resource-group demoGroup --name demoDeployment

O modelo será exibido no console. Para salvar o arquivo, use:

az deployment group export --resource-group demoGroup --name demoDeployment > demoDeployment.json

Para obter modelos implantados em outros níveis, use:

Próximas etapas