Exercício – Criar e implantar uma especificação de modelo

Concluído

Observação

Na primeira vez que você ativar uma área restrita e aceitar os termos, sua conta Microsoft será associada a um novo diretório do Azure chamado Área Restrita do Microsoft Learn. Você também será adicionado a uma assinatura especial chamada Assinatura do Concierge.

Na sua empresa de brinquedos, sua equipe já trabalha com o Azure há algum tempo e você criou vários modelos que usa diariamente. Você decide usar um modelo e criar uma especificação de modelo. Você está começando com o modelo usado para criar contas de banco de dados do Azure Cosmos DB.

Sua equipe decidiu que o backup contínuo precisa ser configurado em todas as suas contas do Azure Cosmos DB. Portanto, você deseja incluir backups na configuração padrão das contas do Azure Cosmos DB provisionadas por meio da especificação de modelo.

Neste exercício, você publicará o modelo do Azure Cosmos DB como uma especificação de modelo.

Durante o processo, você vai:

  • Crie um modelo que você usará como a especificação do modelo.
  • Atualize o modelo para garantir que os parâmetros sejam fáceis de entender e trabalhar.
  • Publique a especificação de modelo.
  • Verifique a especificação do modelo usando o portal do Azure.
  • Implante a especificação de modelo para testá-la.
  • Verifique a implantação.

Este exercício usa a extensão Bicep para Visual Studio Code. É necessário que você instale essa extensão no Visual Studio Code.

Criar o modelo

Comece com um dos modelos que sua equipe criou. O modelo implanta uma conta do Azure Cosmos DB e a configura para habilitar o backup contínuo.

  1. Abra o Visual Studio Code.

  2. Crie um arquivo chamado main.bicep.

  3. Salve o arquivo vazio para que Visual Studio Code carregue as ferramentas Bicep.

    Você pode selecionar Arquivo>Salvar Como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se do local em que salvou o arquivo. Por exemplo, você pode criar uma pasta scripts para salvá-lo.

  4. Copie o código a seguir para main.bicep:

    param location string = resourceGroup().location
    param cosmosDBAccountName string = 'toy-${uniqueString(resourceGroup().id)}'
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2021-04-15' = {
      name: cosmosDBAccountName
      kind: 'GlobalDocumentDB'
      location: location
      properties: {
        consistencyPolicy: {
          defaultConsistencyLevel: 'Session'
        }
        locations: [
          {
            locationName: location
            failoverPriority: 0
            isZoneRedundant: false
          }
        ]
        databaseAccountOfferType: 'Standard'
        enableAutomaticFailover: false
        enableMultipleWriteLocations: false
        backupPolicy: {
          type: 'Continuous'
        }
      }
    }
    

    Observe que você definiu backupPolicy como Continuous. Esse valor configura o Azure Cosmos DB para fazer backups de seus dados continuamente em vez de periodicamente.

  5. Salve o arquivo.

  1. Abra o Visual Studio Code.

  2. Crie um arquivo chamado azuredeploy.json.

  3. Salve o arquivo vazio para que o Visual Studio Code carregue as ferramentas do modelo do Azure Resource Manager (modelo do ARM).

    Você pode selecionar Arquivo>Salvar Como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se do local em que salvou o arquivo. Por exemplo, você pode criar uma pasta scripts para salvá-lo.

  4. Copie o código a seguir no azuredeploy.json:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "location": {
          "type": "string",
          "defaultValue": "[resourceGroup().location]"
        },
        "cosmosDBAccountName": {
          "type": "string",
          "defaultValue": "[concat('toy-', uniqueString(resourceGroup().id))]"
        }
      },
      "resources": [
        {
          "type": "Microsoft.DocumentDB/databaseAccounts",
          "apiVersion": "2021-04-15",
          "name": "[parameters('cosmosDBAccountName')]",
          "kind": "GlobalDocumentDB",
          "location": "[parameters('location')]",
          "properties": {
            "consistencyPolicy": {
              "defaultConsistencyLevel": "Session"
            },
            "locations": [
              {
                "locationName": "[parameters('location')]",
                "failoverPriority": 0,
                "isZoneRedundant": false
              }
            ],
            "databaseAccountOfferType": "Standard",
            "enableAutomaticFailover": false,
            "enableMultipleWriteLocations": false,
            "backupPolicy": {
              "type": "Continuous"
            }
          }
        }
      ]
    }
    

    Observe que você definiu o backupPolicy como Continuous. Esse valor configura o Azure Cosmos DB para fazer backups de seus dados continuamente em vez de periodicamente.

  5. Salve o arquivo.

Tornar os parâmetros mais fáceis de entender

Quando você trabalha com especificações de modelos, é importante considerar como os outros usam seu modelo. Essa revisão é especialmente importante para os parâmetros, pois eles são a principal forma de interação de outras pessoas com seu código. Os parâmetros no modelo da sua equipe não incluem descrições ou outras dicas sobre como eles devem ser usados, portanto, adicione essas informações aqui.

  1. Atualize a definição do parâmetro location adicionando uma descrição:

    @description('The Azure region into which the Cosmos DB resources should be deployed.')
    param location string = resourceGroup().location
    
  2. Atualize a definição de parâmetro cosmosDBAccountName para adicionar uma descrição e para especificar o comprimento mínimo e máximo do nome:

    @description('The name of the Cosmos DB account. This name must be globally unique, and it must only include lowercase letters, numbers, and hyphens.')
    @minLength(3)
    @maxLength(44)
    param cosmosDBAccountName string = 'toy-${uniqueString(resourceGroup().id)}'
    
  3. Salve o arquivo.

  1. Atualize a definição do parâmetro location adicionando uma descrição:

    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The Azure region into which the Cosmos DB resources should be deployed."
      }
    },
    
  2. Atualize a definição de parâmetro cosmosDBAccountName para adicionar uma descrição e para especificar o comprimento mínimo e máximo do nome:

    "cosmosDBAccountName": {
      "type": "string",
      "defaultValue": "[concat('toy-', uniqueString(resourceGroup().id))]",
      "maxLength": 44,
      "minLength": 3,
      "metadata": {
        "description": "The name of the Cosmos DB account. This name must be globally unique, and it must only include lowercase letters, numbers, and hyphens."
      }
    }
    
  3. Salve o arquivo.

Entrar no Azure

Para implantar esse modelo no Azure, será necessário entrar em sua conta do Azure do terminal do Visual Studio Code. Verifique se você tem a CLI do Azure instalada e lembre-se de entrar com a mesma conta que usou para ativar a área restrita.

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o bash, o shell correto será aberto e você poderá passar para a próxima seção.

    Captura de tela da janela do terminal do Visual Studio Code com a opção bash mostrada.

  3. Se um shell diferente de bash for exibido, selecione a seta suspensa do shell e selecione Azure Cloud Shell (Bash).

    Captura de tela da janela do terminal do Visual Studio Code, com o menu suspenso do shell do terminal mostrado e o Padrão Git Bash selecionado.

  4. Na lista de shells de terminal, selecione bash.

    Captura de tela da janela do terminal do Visual Studio Code com o terminal do bash selecionado.

  5. No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:

    cd templates
    

Instalar o Bicep

Veja se você tem a versão mais recente do Bicep executando o seguinte comando:

az bicep install && az bicep upgrade

Entrar no Azure

  1. No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:

    az login
    
  2. No navegador que é aberto, entre em sua conta do Azure.

    O terminal do Visual Studio Code exibe uma lista das assinaturas associadas a essa conta.

  3. Defina a assinatura padrão para todos os comandos da CLI do Azure que você executar nesta sessão.

    az account set --subscription "Concierge Subscription"
    

    Observação

    Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. Obtenha as IDs da Assinatura do Concierge.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Defina a assinatura padrão usando a ID da assinatura. Substitua {sua ID da assinatura} pela ID da Assinatura de Concierge mais recente.

    az account set --subscription {your subscription ID}
    

Definir o grupo de recursos padrão

Ao usar a CLI do Azure, você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos da CLI do Azure neste exercício. Defina como padrão o grupo de recursos criado para você no ambiente de área restrita.

az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"

Para implantar este modelo no Azure, entre na sua conta do Azure no terminal do Visual Studio Code. Verifique se você instalou o Azure PowerShell e entre na mesma conta que ativou a área restrita.

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o powershell ou o pwsh, o shell correto será aberto e você poderá passar para a próxima seção.

    Captura de tela da janela do terminal do Visual Studio Code, com a opção pwsh exibida na lista suspensa do shell.

  3. Se aparecer um shell diferente do powershell ou pwsh, selecione a seta da lista de seleção do shell e escolha PowerShell.

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal exibida e o PowerShell selecionado.

  4. Na lista de shells de terminal, selecione powershell ou pwsh.

    Captura de tela da janela do terminal do Visual Studio Code com o terminal do PowerShell selecionado.

  5. No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:

    Set-Location -Path templates
    

Instalar a CLI do Bicep

Para usar o Bicep no Azure PowerShell, instale a CLI do Bicep.

Entrar no Azure usando o Azure PowerShell

  1. No terminal do Visual Studio Code, execute o seguinte comando:

    Connect-AzAccount
    

    Um navegador será aberto para que seja possível entrar na sua conta do Azure.

  2. Após entrar no Azure, o terminal exibirá uma lista das assinaturas associadas a essa conta.

    Se você ativou a área restrita, será exibida uma assinatura chamada Assinatura do Concierge. Use-a no restante do exercício.

  3. Defina a assinatura padrão para todos os comandos do Azure PowerShell que você executar nesta sessão.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Observação

    Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. Obtenha a ID da assinatura. Executar o comando a seguir lista as suas assinaturas e as respectivas IDs. Procure Concierge Subscription e copie a ID da segunda coluna. É algo semelhante a aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  5. Altere a sua assinatura ativa para Assinatura de Concierge. Lembre-se de substituir {Sua ID da assinatura} por aquela que você copiou.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

Definir o grupo de recursos padrão

Você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos do Azure PowerShell neste exercício. Defina esse padrão como o grupo de recursos criado para você no ambiente de área restrita.

Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>

Para implantar esse modelo no Azure, será necessário entrar em sua conta do Azure do terminal do Visual Studio Code. Verifique se você tem a CLI do Azure instalada e lembre-se de entrar com a mesma conta que usou para ativar a área restrita.

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o bash, o shell correto será aberto e você poderá passar para a próxima seção.

    Captura de tela da janela do terminal do Visual Studio Code com a opção bash mostrada.

  3. Se um shell diferente de bash for exibido, selecione a seta suspensa do shell e selecione Azure Cloud Shell (Bash).

    Captura de tela da janela do terminal do Visual Studio Code, com o menu suspenso do shell do terminal mostrado e o Padrão Git Bash selecionado.

  4. Na lista de shells de terminal, selecione bash.

    Captura de tela da janela do terminal do Visual Studio Code com o terminal do bash selecionado.

  5. No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:

    cd templates
    

Entrar no Azure

  1. No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:

    az login
    
  2. No navegador que é aberto, entre em sua conta do Azure.

    O terminal do Visual Studio Code exibe uma lista das assinaturas associadas a essa conta.

  3. Defina a assinatura padrão para todos os comandos da CLI do Azure que você executar nesta sessão.

    az account set --subscription "Concierge Subscription"
    

    Observação

    Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. Obtenha as IDs da Assinatura do Concierge.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Defina a assinatura padrão usando a ID da assinatura. Substitua {sua ID da assinatura} pela ID da Assinatura de Concierge mais recente.

    az account set --subscription {your subscription ID}
    

Definir o grupo de recursos padrão

Ao usar a CLI do Azure, você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos da CLI do Azure neste exercício. Defina como padrão o grupo de recursos criado para você no ambiente de área restrita.

az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"

Para implantar este modelo no Azure, entre na sua conta do Azure no terminal do Visual Studio Code. Verifique se você instalou o Azure PowerShell e entre na mesma conta que ativou a área restrita.

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o powershell ou o pwsh, o shell correto será aberto e você poderá passar para a próxima seção.

    Captura de tela da janela do terminal do Visual Studio Code, com a opção pwsh exibida na lista suspensa do shell.

  3. Se aparecer um shell diferente do powershell ou pwsh, selecione a seta da lista de seleção do shell e escolha PowerShell.

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal exibida e o PowerShell selecionado.

  4. Na lista de shells de terminal, selecione powershell ou pwsh.

    Captura de tela da janela do terminal do Visual Studio Code com o terminal do PowerShell selecionado.

  5. No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:

    Set-Location -Path templates
    

Entrar no Azure usando o Azure PowerShell

  1. No terminal do Visual Studio Code, execute o seguinte comando:

    Connect-AzAccount
    

    Um navegador será aberto para que seja possível entrar na sua conta do Azure.

  2. Após entrar no Azure, o terminal exibirá uma lista das assinaturas associadas a essa conta.

    Se você ativou a área restrita, será exibida uma assinatura chamada Assinatura do Concierge. Use-a no restante do exercício.

  3. Defina a assinatura padrão para todos os comandos do Azure PowerShell que você executar nesta sessão.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Observação

    Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. Obtenha a ID da assinatura. Executar o comando a seguir lista as suas assinaturas e as respectivas IDs. Procure Concierge Subscription e copie a ID da segunda coluna. É algo semelhante a aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  5. Altere a sua assinatura ativa para Assinatura de Concierge. Lembre-se de substituir {Sua ID da assinatura} por aquela que você copiou.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

Definir o grupo de recursos padrão

Você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos do Azure PowerShell neste exercício. Defina esse padrão como o grupo de recursos criado para você no ambiente de área restrita.

Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>

Publicar o modelo como uma especificação de modelo

Publique a especificação de modelo usando este cmdlet do Azure PowerShell no terminal do Visual Studio Code:

New-AzTemplateSpec `
  -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
  -Name ToyCosmosDBAccount `
  -Location westus `
  -DisplayName 'Cosmos DB account' `
  -Description "This template spec creates a Cosmos DB account that meets our company's requirements." `
  -Version '1.0' `
  -TemplateFile main.bicep
New-AzTemplateSpec `
  -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
  -Name ToyCosmosDBAccount `
  -Location westus `
  -DisplayName 'Cosmos DB account' `
  -Description "This template spec creates a Cosmos DB account that meets our company's requirements." `
  -Version '1.0' `
  -TemplateFile azuredeploy.json

Publique a especificação de modelo usando este comando do CLI do Azure no terminal do Visual Studio Code:

az ts create \
  --name ToyCosmosDBAccount \
  --location westus \
  --display-name "Cosmos DB account" \
  --description "This template spec creates a Cosmos DB account that meets our company's requirements." \
  --version 1.0 \
  --template-file main.bicep
az ts create \
  --name ToyCosmosDBAccount \
  --location westus \
  --display-name "Cosmos DB account" \
  --description "This template spec creates a Cosmos DB account that meets our company's requirements." \
  --version 1.0 \
  --template-file azuredeploy.json

Use o portal do Azure para verificar a especificação do modelo

  1. Vá para o portal do Azure e verifique se você está na assinatura da área restrita:

    1. Selecione seu avatar no canto superior direito da página.
    2. Selecione Mudar diretório. Na lista, escolha o diretório Área restrita do Microsoft Learn.
  2. No painel do lado esquerdo, selecione Grupos de recursos.

  3. Selecione [nome do grupo de recursos de área restrita]. Observe que a especificação de modelo está incluída na lista de recursos:

    Captura de tela da interface do portal do Azure para a visão geral do grupo de recursos, com a especificação de modelo incluída na lista de recursos.

  4. Selecione ToyCosmosDBAccount para abrir a especificação do modelo. As versões e o arquivo de modelo estão visíveis.

    Captura de tela da interface do portal do Azure para a especificação de modelo.

Implantar a especificação de modelo

Para simplificar, implemente a especificação de modelo no mesmo grupo de recursos de área restrita em que a própria especificação de modelo está armazenada. Normalmente, você mantém as especificações de modelo em um grupo de recursos diferente. No entanto, as etapas são as mesmas das duas maneiras.

  1. Obtenha a ID de recurso da versão da especificação de modelo executando o seguinte comando do Azure PowerShell:

    $templateSpecVersionResourceId = (`
       Get-AzTemplateSpec `
          -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
          -Name ToyCosmosDBAccount `
          -Version 1.0 `
       ).Versions[0].Id
    

    Observe que você usa a propriedade Versions. Ao implantar uma especificação de modelo, você precisa referenciar a ID do recurso da versão específica da especificação de modelo a ser usada.

  2. Implante a especificação de modelo usando este comando do Azure PowerShell no terminal do Visual Studio Code:

    New-AzResourceGroupDeployment -TemplateSpecId $templateSpecVersionResourceId
    
  1. Obtenha a ID de recurso da versão da especificação de modelo executando o seguinte comando do CLI do Azure:

    id=$(az ts show \ 
     --name ToyCosmosDBAccount \
     --resource-group "<rgn>[sandbox resource group name]</rgn>" \
     --version "1.0" \
     --query "id")
    
  2. Implante a especificação de modelo usando este comando do CLI do Azure no terminal do Visual Studio Code:

    az deployment group create --template-spec $id
    

A implantação poderá levar alguns minutos para ser concluída.

Verificar a implantação

  1. No navegador, retorne ao portal do Azure. Vá para o grupo de recursos.

  2. Ao lado de Implantações, selecione o link 1 Êxito para ver os detalhes da implantação.

    Captura de tela da interface do portal do Azure para a visão geral do grupo de recursos com a seção de implantações mostrando uma implantação bem-sucedida.

  3. Selecione a implantação.

    Captura de tela da interface do portal do Azure para as implantações, com uma implantação listada.

    O nome da implantação pode parecer diferente do nome no exemplo.

  4. Selecione Detalhes da implantação para expandi-lo. Confirme se uma conta do Azure Cosmos DB foi implantada.

    Captura de tela da interface do portal do Microsoft Azure para a implantação específica, com três recursos do Azure Cosmos DB listados.