Exercício - Use módulos do seu registro

Concluído

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

Neste exercício, irá:

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

Criar um arquivo Bicep

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

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

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 do seu registro. Substitua YOUR_CONTAINER_REGISTRY_NAME pelo nome do seu registo 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 sob o identificador do módulo quando você começa a digitar, mas depois as linhas onduladas desaparecem. Esse comportamento acontece porque a extensão Bicep para Visual Studio Code lê o módulo do registro e salva-lo em seu sistema de arquivos local.

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

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

Crie e inspecione seu arquivo Bicep

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

  1. No terminal de código do Visual Studio, execute o seguinte comando para criar o arquivo Bicep para 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 resources seção do modelo JSON ARM, começando em torno da linha 134, alguns recursos têm o tipo Microsoft.Resources/deployments. Esses recursos representam as implantações de módulo que foram definidas no módulo que você adicionou do Registro.

  1. No terminal de código do Visual Studio, execute o seguinte comando para criar o arquivo Bicep para 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 resources seção do modelo JSON ARM, começando em torno da linha 134, alguns recursos têm o tipo Microsoft.Resources/deployments. Esses recursos representam as implantações de módulo que foram definidas no módulo que você adicionou do Registro.

Criar um alias de registo

Você decide criar um alias de registro em vez de incorporar a URL do registro em seu arquivo Bicep. Essa abordagem torna o arquivo Bicep mais fácil de ler.

  1. No Visual Studio Code, crie um novo 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 seu registo privado.

    {
      "moduleAliases": {
        "br": {
          "ToyCompanyRegistry": {
            "registry": "YOUR_CONTAINER_REGISTRY_NAME.azurecr.io"
          }
        }
      }
    }
    
  3. Guarde o ficheiro.

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. Encontre a definição do módulo e altere a definição para incluir o alias do website Registro:

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

    Gorjeta

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

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

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

Verifique seu arquivo Bicep

Depois de concluir todas as alterações anteriores, o arquivo main.bicep deve 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.

Implementar no Azure

No terminal do Visual Studio Code, implante o modelo no Azure executando o seguinte comando. 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 implementaçã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.

    Observe que três implantações estã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 seu 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 toy-dog-website módulo é listado duas vezes porque sua saída também é referenciada dentro do modelo.

    Captura de ecrã do portal do Azure que mostra os detalhes da implementação principal.

  6. Selecione as implantações toy-dog-cdn e toy-dog-website e analise os recursos implantados em cada uma delas. Note-se que correspondem aos recursos definidos nos respetivos módulos.