Exercício - Criar e usar um módulo

Concluído

Você foi encarregado de adicionar uma rede de distribuição de conteúdo, ou CDN, ao site da sua empresa para o lançamento de um wombat de brinquedo. No entanto, outras equipas da sua empresa disseram-lhe que não precisam de uma CDN. Neste exercício, você criará módulos para o site e a CDN e adicionará os módulos a um modelo.

Durante o processo, você:

  • Adicione um módulo para a sua aplicação.
  • Crie um modelo Bicep que use o módulo.
  • Adicione outro módulo para a CDN.
  • Adicione o módulo CDN ao seu modelo, tornando-o opcional.
  • Implemente o modelo no Azure.
  • Revise o histórico de 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 um arquivo Bicep em branco

  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 modelos para salvá-la.

Criar um módulo para a sua aplicação

  1. Crie uma nova pasta chamada módulos na mesma pasta onde você criou o arquivo main.bicep . Na pasta modules, crie um arquivo chamado app.bicep. Guarde o ficheiro.

  2. Adicione o seguinte conteúdo ao arquivo app.bicep :

    @description('The Azure region into which the resources should be deployed.')
    param location string
    
    @description('The name of the App Service app.')
    param appServiceAppName string
    
    @description('The name of the App Service plan.')
    param appServicePlanName string
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    
    @description('The default host name of the App Service app.')
    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    

    Esse arquivo implanta um plano do Serviço de Aplicativo do Azure e um aplicativo. Observe que o módulo é bastante genérico. Ele não inclui nenhuma suposição sobre os nomes dos recursos ou a SKU do plano do Serviço de Aplicativo. Isso facilita a reutilização do módulo para diferentes implantações.

  3. Guarde as alterações ao ficheiro.

Adicione o módulo ao seu modelo Bicep

Aqui, você adiciona o módulo do aplicativo ao seu modelo Bicep como ponto de partida.

  1. Abra o arquivo main.bicep .

  2. Adicione os seguintes parâmetros e variáveis ao arquivo:

    @description('The Azure region into which the resources should be deployed.')
    param location string = 'westus3'
    
    @description('The name of the App Service app.')
    param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string = 'F1'
    
    var appServicePlanName = 'toy-product-launch-plan'
    

    Como este é o modelo que você pretende implantar para seus sites de brinquedos, ele é um pouco mais específico. O nome do plano do Serviço de Aplicativo é definido como uma variável. O parâmetro SKU tem um valor padrão que faz sentido para o site de lançamento do brinquedo.

    Gorjeta

    Você está especificando que o location parâmetro deve ser definido como westus3. Normalmente, você criaria recursos no mesmo local que o grupo de recursos usando a resourceGroup().location propriedade. Mas quando você trabalha com a área restrita do Microsoft Learn, precisa usar determinadas regiões do Azure que não correspondem ao local do grupo de recursos.

  3. Abaixo dos parâmetros, crie uma linha em branco. Agora, digite a primeira linha da definição do módulo do aplicativo:

    module app 'modules/app.bicep' = {
    

    À medida que você digita, observe que a extensão Bicep para Visual Studio Code ajuda você a organizar a declaração do módulo. Quando você digita o caminho para o módulo e digita o caractere igual (=), um menu pop-up aparece com várias opções.

  4. Selecione Propriedades necessárias no menu pop-up:

    Captura de tela do Visual Studio Code que mostra a opção de andaime de um módulo com suas propriedades necessárias.

  5. Preencha a declaração do módulo:

    module app 'modules/app.bicep' = {
      name: 'toy-launch-app'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    
  6. Na parte inferior do arquivo, defina uma saída:

    @description('The host name to use to access the website.')
    output websiteHostName string = app.outputs.appServiceAppHostName
    
  7. Guarde as alterações ao ficheiro.

Criar um módulo para a rede de distribuição de conteúdo

  1. Na pasta modules, crie um arquivo chamado cdn.bicep. Guarde o ficheiro.

  2. Adicione o seguinte conteúdo ao arquivo cdn.bicep :

    @description('The host name (address) of the origin server.')
    param originHostName string
    
    @description('The name of the CDN profile.')
    param profileName string = 'cdn-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the CDN endpoint')
    param endpointName string = 'endpoint-${uniqueString(resourceGroup().id)}'
    
    @description('Indicates whether the CDN endpoint requires HTTPS connections.')
    param httpsOnly bool
    
    var originName = 'my-origin'
    
    resource cdnProfile 'Microsoft.Cdn/profiles@2024-02-01' = {
      name: profileName
      location: 'global'
      sku: {
        name: 'Standard_Microsoft'
      }
    }
    
    resource endpoint 'Microsoft.Cdn/profiles/endpoints@2024-02-01' = {
      parent: cdnProfile
      name: endpointName
      location: 'global'
      properties: {
        originHostHeader: originHostName
        isHttpAllowed: !httpsOnly
        isHttpsAllowed: true
        queryStringCachingBehavior: 'IgnoreQueryString'
        contentTypesToCompress: [
          'text/plain'
          'text/html'
          'text/css'
          'application/x-javascript'
          'text/javascript'
        ]
        isCompressionEnabled: true
        origins: [
          {
            name: originName
            properties: {
              hostName: originHostName
            }
          }
        ]
      }
    }
    
    @description('The host name of the CDN endpoint.')
    output endpointHostName string = endpoint.properties.hostName
    

    Esse arquivo implanta dois recursos: um perfil CDN e um ponto de extremidade CDN.

  3. Guarde as alterações ao ficheiro.

Adicionar os módulos ao modelo Bicep principal

  1. Abra o arquivo main.bicep .

  2. Abaixo do appServicePlanSkuName parâmetro, adicione o seguinte parâmetro:

    @description('Indicates whether a CDN should be deployed.')
    param deployCdn bool = true
    
  3. Abaixo da definição do app módulo, defina o cdn módulo:

    module cdn 'modules/cdn.bicep' = if (deployCdn) {
      name: 'toy-launch-cdn'
      params: {
        httpsOnly: true
        originHostName: app.outputs.appServiceAppHostName
      }
    }
    

    Observe que o módulo tem uma condição para que ele seja implantado somente quando o deployCdn valor do parâmetro estiver definido como true. Além disso, observe que o parâmetro do originHostName módulo é definido para o valor da appServiceAppHostName saída do app módulo.

  4. Atualize a saída do nome do host para que ele selecione o nome de host correto. Quando uma CDN é implantada, você deseja que o nome do host seja o do ponto de extremidade CDN.

    output websiteHostName string = deployCdn ? cdn.outputs.endpointHostName : app.outputs.appServiceAppHostName
    
  5. Guarde as alterações ao ficheiro.

Implantar o modelo Bicep 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>"

Implementar o modelo no Azure

Execute o código a seguir do terminal no Visual Studio Code para implantar o modelo Bicep no Azure. Esse processo pode levar um ou dois minutos para ser concluído e, em seguida, você obterá uma implantação bem-sucedida.

az deployment group create --template-file main.bicep

O status Running... aparece no terminal.

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>

Implementar o modelo no Azure

Implante o modelo no Azure usando o seguinte comando do Azure PowerShell no terminal. Isso pode levar um ou dois minutos para ser concluído e, em seguida, você obterá uma implantação bem-sucedida.

New-AzResourceGroupDeployment -TemplateFile main.bicep

Revise o histórico de implantação

  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].

  4. No menu à esquerda, selecione Implantações.

    Captura de ecrã do portal do Azure que mostra o grupo de recursos, com o item de menu Implementações realçado.

    Três implantações são listadas.

  5. Selecione a implantação principal e expanda Detalhes da implantação.

    Observe que ambos os módulos estão listados e que seus tipos são exibidos como Microsoft.Resources/deployments. Os módulos são listados duas vezes porque suas saídas também são referenciadas dentro do modelo.

    Captura de tela do portal do Azure que mostra os detalhes da implantação principal.

  6. Selecione as implantações toy-launch-cdn e toy-launch-app e revise os recursos implantados em cada uma delas. Note-se que correspondem aos recursos definidos no respetivo módulo.

Testar o Web site

  1. Selecione a implantação do aplicativo toy-launch .

  2. Selecione Saídas.

    Captura de tela do portal do Azure que mostra a implantação, com o item de menu Saídas realçado.

  3. Selecione o botão de cópia para a appServiceAppHostName saída.

  4. Em uma nova guia do navegador, tente ir para o endereço que você copiou na etapa anterior. O endereço deve começar com https://.

    Captura de tela da página de boas-vindas do aplicativo Web, com a barra de endereço mostrando o nome do host do Serviço de Aplicativo.

    A página de boas-vindas do Serviço de Aplicativo é exibida, mostrando que você implantou o aplicativo com êxito.

  5. Vá para a implantação principal e selecione Saídas.

  6. Copie o websiteHostName valor da saída. Observe que esse nome de host é diferente, porque é um nome de host da Rede de Entrega de Conteúdo do Azure.

  7. Em uma nova guia do navegador, tente ir para o nome do host que você copiou na etapa anterior. Adicionar https:// ao início do endereço.

    Os pontos de extremidade CDN levam alguns minutos para se tornarem ativos. Se você receber um erro de Página não encontrada , aguarde alguns minutos e tente colar o link novamente. Além disso, certifique-se de adicionar https:// ao início da URL para que você esteja usando HTTPS.

    Quando o ponto de extremidade CDN estiver ativo, você receberá a mesma página de boas-vindas do Serviço de Aplicativo. Desta vez, foi servido através do serviço Azure Content Delivery Network, que ajuda a melhorar o desempenho do Web site.

    Captura de tela da página de boas-vindas do aplicativo Web, com a barra de endereço mostrando o ponto de extremidade CDN.