Exercício – Usar módulos do registro

Concluído

No exercício anterior, você publicou a CDN e os módulos de site no registro da sua empresa de brinquedos. Agora, você deseja mostrar à equipe que está desenvolvendo o cachorro de brinquedo como usar os módulos para a implantação.

Neste exercício, você vai:

  • Crie um arquivo Bicep que inclua módulos de seu registro privado.
  • Adicione referências aos módulos no registro.
  • Compile e inspecione o arquivo Bicep para entender como o processo de restauração do módulo funciona.
  • Alterne para o usando um alias de registro.
  • Implante o arquivo Bicep no Azure.

Criar um arquivo Bicep

  1. No Visual Studio Code, crie um arquivo chamado main.bicep.

  2. 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). Certifique-se de lembrar onde salvou o arquivo. Por exemplo, você pode criar uma pasta modelos para salvá-lo.

Adicionar os módulos ao arquivo Bicep

  1. No arquivo main.bicep, adicione os seguintes parâmetros e variáveis:

    @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-dog-plan'
    
  2. Abaixo dos parâmetros e variáveis, use o código a seguir para adicionar o módulo de site de seu registro. Substitua YOUR_CONTAINER_REGISTRY_NAME pelo nome do registro privado.

    module website 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    Observe que o Bicep mostra linhas onduladas vermelhas abaixo do identificador do módulo quando você começa a digitar, mas as linhas onduladas desaparecem. Esse comportamento ocorre porque a extensão Bicep para Visual Studio Code lê o módulo do registro e salva-o no sistema de arquivos local.

  3. Abaixo do módulo que você criou, use o código a seguir para adicionar o módulo da CDN do registro. Substitua YOUR_CONTAINER_REGISTRY_NAME pelo nome do registro privado.

    module cdn 'br:YOUR_CONTAINER_REGISTRY_NAME.azurecr.io/cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. Salve o arquivo.

Criar e inspecionar o arquivo Bicep

Aqui, você compila o arquivo Bicep para um modelo do ARM em JSON. Normalmente, você não precisa fazer uma compilação, mas é útil quando você está aprendendo como os módulos funcionam.

  1. No terminal do Visual Studio Code, execute o seguinte comando para compilar o arquivo Bicep em um arquivo JSON:

    az bicep build --file main.bicep
    

    O Bicep cria um arquivo chamado main.json na mesma pasta que o arquivo main.bicep.

  2. Abra o arquivo main.json.

    Observe que, na seção resources do modelo do ARM do JSON, começando em torno da linha 134, alguns recursos são do tipo Microsoft.Resources/deployments. Esses recursos representam as implantações de módulo definidas no módulo que você adicionou do registro.

  1. No terminal do Visual Studio Code, execute o seguinte comando para compilar o arquivo Bicep em um arquivo JSON:

    bicep build main.bicep
    

    O Bicep cria um arquivo chamado main.json na mesma pasta que o arquivo main.bicep.

  2. Abra o arquivo main.json.

    Observe que, na seção resources do modelo do ARM do JSON, começando em torno da linha 134, alguns recursos são do tipo Microsoft.Resources/deployments. Esses recursos representam as implantações de módulo definidas no módulo que você adicionou do registro.

Criar um alias de registro

Você decide criar um alias do registro em vez de inserir a URL do registro em seu arquivo Bicep. Essa abordagem facilita a leitura do arquivo Bicep.

  1. No Visual Studio Code, crie um arquivo chamado bicepconfig.json. Crie-o na mesma pasta que o arquivo main.bicep.

  2. Cole o código a seguir no arquivo bicepconfig.json. Substitua YOUR_CONTAINER_REGISTRY_NAME pelo nome do registro privado.

    {
      "moduleAliases": {
        "br": {
          "ToyCompanyRegistry": {
            "registry": "YOUR_CONTAINER_REGISTRY_NAME.azurecr.io"
          }
        }
      }
    }
    
  3. Salve o arquivo.

Usar o alias do registro

Aqui, você atualiza seu arquivo Bicep para usar o alias do registro, em vez de se referir diretamente ao registro.

  1. Abra o arquivo main.bicep.

  2. Localize a definição do módulo website e altere a definição para incluir o alias do registro:

    module website 'br/ToyCompanyRegistry:website:v1' = {
      name: 'toy-dog-website'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    

    Dica

    Altere o início do caminho do módulo de br: para br/. Além disso, depois de ToyCompanyRegistry, altere o caractere de barra (/) para dois-pontos (:).

  3. Faça uma alteração semelhante ao módulo cdn:

    module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
      name: 'toy-dog-cdn'
      params: {
        httpsOnly: true
        originHostName: website.outputs.appServiceAppHostName
      }
    }
    
  4. Salve o arquivo.

Verificar o arquivo Bicep

Depois de concluir todas as alterações anteriores, o arquivo main.bicep deverá ser semelhante a este exemplo:

@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-dog-plan'

module website 'br/ToyCompanyRegistry:website:v1' = {
  name: 'toy-dog-website'
  params: {
    appServiceAppName: appServiceAppName
    appServicePlanName: appServicePlanName
    appServicePlanSkuName: appServicePlanSkuName
    location: location
  }
}

module cdn 'br/ToyCompanyRegistry:cdn:v1' = {
  name: 'toy-dog-cdn'
  params: {
    httpsOnly: true
    originHostName: website.outputs.appServiceAppHostName
  }
}

Se o arquivo não corresponder, copie o exemplo ou ajuste o modelo para corresponder ao exemplo.

Implantar no Azure

No terminal do Visual Studio Code, implante o modelo no Azure executando o comando a seguir. Esse processo pode levar alguns minutos para concluir uma implantação bem-sucedida.

az deployment group create \
   --template-file main.bicep
New-AzResourceGroupDeployment -TemplateFile main.bicep

Verificar a implantação

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

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

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

    Observe que três implantações são listadas:

    • main representa a implantação do arquivo Bicep pai.
    • toy-dog-cdn e toy-dog-website representam os módulos que você incluiu no arquivo main.bicep.
  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. O módulo toy-dog-website está listado duas vezes porque a saída dele também é referenciada dentro do modelo.

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

  6. Selecione as implantações toy-dog-cdn e toy-dog-website e examine os recursos implantados em cada um. Observe que eles correspondem aos recursos definidos nos respectivos módulos.