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

Concluído

Nota

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

Na sua empresa de brinquedos, a sua equipa trabalha com o Azure há algum tempo e criou muitos modelos que utiliza diariamente. Você decide pegar um modelo e criar uma especificação de modelo. Você está começando com o modelo que usa para criar contas 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 que são provisionadas por meio da especificação de modelo.

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

Durante o processo, você:

  • 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 do modelo.
  • Verifique a especificação do modelo usando o portal do Azure.
  • Implante a especificação do modelo para testá-lo.
  • Verifique a implantação.

Este exercício usa a extensão Bicep para Visual Studio Code. Certifique-se de que instala esta extensão no Visual Studio Code.

Criar o modelo

Você começa 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 novo arquivo chamado main.bicep.

  3. Salve o arquivo vazio para que o Visual Studio Code carregue as ferramentas do Bíceps.

    Você pode selecionar Arquivo>Salvar como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, talvez você queira criar uma pasta de scripts para salvá-la.

  4. Copie o seguinte código 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 de forma contínua, em vez de periodicamente.

  5. Guarde o ficheiro.

  1. Abra o Visual Studio Code.

  2. Crie um novo arquivo chamado azuredeploy.json.

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

    Você pode selecionar Arquivo>Salvar como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, talvez você queira criar uma pasta de scripts para salvá-la.

  4. Copie o seguinte código para 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ê define o backupPolicy como Continuous. Esse valor configura o Azure Cosmos DB para fazer backups de seus dados de forma contínua, em vez de periodicamente.

  5. Guarde o ficheiro.

Tornar os parâmetros mais fáceis de entender

Quando você trabalha com especificações de modelo, é importante considerar como outras pessoas usam seu modelo. Esta revisão é especialmente importante para parâmetros, porque eles são a principal maneira pela qual outras pessoas interagem 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, então você adiciona essas informações aqui.

  1. Atualize a definição de location parâmetro 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 cosmosDBAccountName definição de parâmetro para adicionar uma descrição e 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. Guarde o ficheiro.

  1. Atualize a definição de location parâmetro 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 cosmosDBAccountName definição de parâmetro para adicionar uma descrição e 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. Guarde o ficheiro.

Iniciar sessão no Azure

Para implementar este modelo no Azure, tem de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou a CLI do Azure e lembre-se de iniciar sessão com a mesma conta que utilizou para ativar a sandbox.

  1. No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for bash, o shell correto estará aberto e você poderá pular 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 a lista suspensa do shell do terminal mostrada e Git Bash Default selecionado.

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

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

  5. No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:

    cd templates
    

Instalar o Bicep

Execute o seguinte comando para garantir que você tenha a versão mais recente do Bicep:

az bicep install && az bicep upgrade

Iniciar sessão no Azure

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

    az login
    
  2. No browser que se abre, inicie sessão na sua conta do Azure.

    O terminal de código do Visual Studio exibe uma lista das assinaturas associadas a essa conta.

  3. Defina a assinatura padrão para todos os comandos da CLI do Azure executados nesta sessão.

    az account set --subscription "Concierge Subscription"
    

    Nota

    Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma 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 os IDs da Subscrição de Assistente.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Predefina a subscrição através do ID da subscrição. Substitua {o ID da subscrição} pelo ID da Subscrição da Assistente mais recente.

    az account set --subscription {your subscription ID}
    

Definir o grupo de recursos predefinido

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 o padrão para o grupo de recursos criado para você no ambiente de área restrita.

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

Para implantar esse modelo no Azure, entre em sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou o Azure PowerShell e inicie sessão na mesma conta que ativou a sandbox.

  1. No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for powershell ou pwsh, o shell correto estará aberto e você poderá pular 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 um shell diferente de powershell ou pwsh for exibido, selecione a seta suspensa do shell e selecione PowerShell.

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal mostrada 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á para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:

    Set-Location -Path templates
    

Instalar a CLI do Bíceps

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

Iniciar sessão no Azure com o Azure PowerShell

  1. No terminal de código do Visual Studio, execute o seguinte comando:

    Connect-AzAccount
    

    Um navegador é aberto para que você possa entrar em sua conta do Azure.

  2. Depois de iniciar sessão no Azure, o terminal apresenta uma lista das subscrições associadas a esta conta.

    Se você ativou a área restrita, uma assinatura chamada Assinatura do concierge será exibida. Use-o para o resto do exercício.

  3. Defina a assinatura padrão para todos os comandos do Azure PowerShell executados nesta sessão.

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

    Nota

    Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma 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 o ID de subscrição. A execução do comando a seguir lista suas assinaturas e suas IDs. Concierge SubscriptionProcure e, em seguida, copie o ID da segunda coluna. Parece algo como aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  5. Altere sua assinatura ativa para a Assinatura do Concierge. Certifique-se de que substitui {O seu ID de subscrição} pelo que copiou.

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

Definir o grupo de recursos predefinido

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 para o grupo de recursos criado para você no ambiente de área restrita.

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

Para implementar este modelo no Azure, tem de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou a CLI do Azure e lembre-se de iniciar sessão com a mesma conta que utilizou para ativar a sandbox.

  1. No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for bash, o shell correto estará aberto e você poderá pular 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 a lista suspensa do shell do terminal mostrada e Git Bash Default selecionado.

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

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

  5. No terminal, vá para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:

    cd templates
    

Iniciar sessão no Azure

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

    az login
    
  2. No browser que se abre, inicie sessão na sua conta do Azure.

    O terminal de código do Visual Studio exibe uma lista das assinaturas associadas a essa conta.

  3. Defina a assinatura padrão para todos os comandos da CLI do Azure executados nesta sessão.

    az account set --subscription "Concierge Subscription"
    

    Nota

    Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma 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 os IDs da Subscrição de Assistente.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Predefina a subscrição através do ID da subscrição. Substitua {o ID da subscrição} pelo ID da Subscrição da Assistente mais recente.

    az account set --subscription {your subscription ID}
    

Definir o grupo de recursos predefinido

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 o padrão para o grupo de recursos criado para você no ambiente de área restrita.

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

Para implantar esse modelo no Azure, entre em sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que instalou o Azure PowerShell e inicie sessão na mesma conta que ativou a sandbox.

  1. No menu Terminal, selecione New Terminal (Novo Terminal). A janela do terminal geralmente abre na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for powershell ou pwsh, o shell correto estará aberto e você poderá pular 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 um shell diferente de powershell ou pwsh for exibido, selecione a seta suspensa do shell e selecione PowerShell.

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal mostrada 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á para o diretório onde você salvou seu modelo. Por exemplo, se você salvou seu modelo na pasta de modelos , poderá usar este comando:

    Set-Location -Path templates
    

Iniciar sessão no Azure com o Azure PowerShell

  1. No terminal de código do Visual Studio, execute o seguinte comando:

    Connect-AzAccount
    

    Um navegador é aberto para que você possa entrar em sua conta do Azure.

  2. Depois de iniciar sessão no Azure, o terminal apresenta uma lista das subscrições associadas a esta conta.

    Se você ativou a área restrita, uma assinatura chamada Assinatura do concierge será exibida. Use-o para o resto do exercício.

  3. Defina a assinatura padrão para todos os comandos do Azure PowerShell executados nesta sessão.

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

    Nota

    Se você usou mais de uma área restrita recentemente, o terminal pode exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as próximas duas etapas para definir uma 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 o ID de subscrição. A execução do comando a seguir lista suas assinaturas e suas IDs. Concierge SubscriptionProcure e, em seguida, copie o ID da segunda coluna. Parece algo como aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  5. Altere sua assinatura ativa para a Assinatura do Concierge. Certifique-se de que substitui {O seu ID de subscrição} pelo que copiou.

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

Definir o grupo de recursos predefinido

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 para 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 do 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 do modelo usando este comando da 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

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

  1. Aceda ao portal do Azure e certifique-se de que está na subscrição sandbox:

    1. Selecione o seu avatar no canto superior direito da página.
    2. Selecione Trocar diretório. Na lista, selecione o diretório Sandbox do Microsoft Learn.
  2. No painel esquerdo, selecione Grupos de recursos.

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

    Captura de ecrã da interface do portal do Azure para a visão geral do grupo de recursos, com a especificação do 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 são visíveis.

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

Implantar a especificação do modelo

Para simplificar, você implanta 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 do modelo em um grupo de recursos diferente. No entanto, os passos são os mesmos nos dois sentidos.

  1. Obtenha a ID de recurso da versão da especificação do 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 Versions propriedade. Ao implantar uma especificação de modelo, você precisa fazer referência à 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 de código do Visual Studio:

    New-AzResourceGroupDeployment -TemplateSpecId $templateSpecVersionResourceId
    
  1. Obtenha a ID de recurso da versão da especificação do modelo executando o seguinte comando da 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 do modelo usando este comando da CLI do Azure no terminal do Visual Studio Code:

    az deployment group create --template-spec $id
    

A implantação pode levar um ou dois minutos para ser concluída.

Verificar sua implantação

  1. No navegador, volte para o portal do Azure. Vá para o seu 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 que uma foi bem-sucedida.

  3. Selecione a implantação.

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

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

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

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