Compartilhar via


Executar uma fábrica de imagem do Azure DevOps

Este artigo aborda todas as preparações necessárias para executar a fábrica de imagem do Azure DevOps (anteriormente conhecido como Visual Studio Team Services).

Observação

Qualquer mecanismo de orquestração funcionará! O Azure DevOps não é obrigatório. A fábrica de imagem é executada usando scripts do Azure PowerShell, portanto, ela pode ser executada manualmente, usando o Agendador de Tarefas do Windows, outros sistemas de CI/CD e assim por diante.

Criar um laboratório para a fábrica de imagem

A primeira etapa na configuração da fábrica de imagem é criar um laboratório no Azure DevTest Labs. Este laboratório é o laboratório da fábrica de imagem onde criamos as máquinas virtuais e salvamos imagens personalizadas. Este laboratório é considerado parte do processo geral da fábrica de imagem. Depois de criar um laboratório, guarde o nome dele, pois você precisará dele mais tarde.

Scripts e modelos

A próxima etapa na adoção da fábrica de imagem para sua equipe é entender o que está disponível. Os modelos e os scripts da fábrica de imagem estão disponíveis publicamente no repositório GitHub do DevTest Labs. Veja uma descrição das partes:

  • Image Factory. É a pasta raiz.
    • Configuração. As entradas para a fábrica de imagem
      • GoldenImages. Essa pasta contém arquivos JSON que representam as definições de imagens personalizadas.
      • Labs.json. Arquivo em que as equipes se inscrevem para receber imagens personalizadas específicas.
  • Scripts. O mecanismo da fábrica de imagem.

Os artigos desta seção fornecem mais detalhes sobre esses scripts e modelos.

Criar um projeto de equipe do Azure DevOps

O Azure DevOps permite armazenar o código-fonte e executar o Azure PowerShell em um único local. Você pode agendar execuções recorrentes para manter as imagens atualizadas. Há boas instalações para registrar os resultados para diagnosticar problemas. No entanto, usar o Azure DevOps não é um requisito; você pode usar qualquer equipamento/mecanismo que possa se conectar ao Azure e executar o Azure PowerShell.

Se você tiver uma conta ou projeto DevOps existente que gostaria de usar, ignore esta etapa.

Para começar, crie uma conta gratuita no Azure DevOps. Acesse https://www.visualstudio.com/ e selecione Começar a usar gratuitamente em Azure DevOps (anteriormente conhecido como VSTS). Você precisará escolher um nome de conta exclusivo e ter certeza de que deseja gerenciar o código usando o Git. Depois de criar a conta, salve a URL em seu projeto de equipe. Esta é uma URL de exemplo: https://<accountname>.visualstudio.com/MyFirstProject.

Fazer check-in da fábrica de imagem no Git

O PowerShell, todos os modelos e a configuração para a fábrica de imagem estão localizados no repositório GitHub público do DevTest Labs. A maneira mais rápida de inserir código em seu novo projeto de equipe é importar um repositório. A importação efetua pull em todo o repositório do DevTest Labs (portanto, você obterá documentos e exemplos adicionais).

  1. Acesse o projeto do Azure DevOps que você criou na etapa anterior (a URL tem a aparência https://<accountname>.visualstudio.com/MyFirstProject).

  2. Selecione Importar um repositório.

  3. Insira a URL de clone para o repositório do DevTest Labs: https://github.com/Azure/azure-devtestlab.

  4. Selecione Importar.

    Captura de tela que mostra a importação de repositório do Git.

Se você decidir apenas fazer check-in exatamente do que é necessário (os arquivos da fábrica de imagem), siga as etapas aqui para clonar o repositório Git e efetuar push somente dos arquivos localizados no diretório scripts/ImageFactory.

Criar uma build e conectar-se ao Azure

Neste ponto, você tem os arquivos de origem armazenados em um repositório Git no Azure DevOps. Agora, você precisa configurar um pipeline para executar o Azure PowerShell. Há muitas opções para executar essas etapas. Neste artigo, você usará a definição de build para simplificar, mas ele funciona com o build de DevOps, a versão de DevOps (ambientes únicos ou múltiplos), outros mecanismos de execução como o Agendador de Tarefas do Windows ou qualquer outro equipamento que possa executar o Azure PowerShell.

Observação

Um ponto importante para se ter em mente é que alguns dos arquivos do PowerShell demoram muito para serem executados quando há muitas (mais de 10) imagens personalizadas para serem criadas. Os agentes de build/versão do DevOps hospedados gratuitamente têm um tempo limite de 30 min, portanto, você não poderá usar o agente hospedado gratuito depois que começar a criar várias imagens. Esse desafio de tempo limite se aplica a qualquer equipamento que você decida usar. É bom verificar antecipadamente que você possa aumentar os tempos limite típicos para scripts do Azure PowerShell de execução prolongada. No caso do Azure DevOps, você pode usar agentes hospedados pagos ou usar o próprio agente de build.

  1. Para iniciar, selecione Configurar build na página inicial do seu projeto do DevOps:

    Captura de tela que mostra o botão configurar build.

  2. Especifique um nome para o build (por exemplo, Criar e Entregar imagens para o DevTest Labs).

  3. Selecione uma definição de build vazia e selecione Aplicar para criar seu build.

  4. Neste estágio, você pode escolher Hospedado para o agente de build.

  5. Salve a definição de build.

    Captura de tela que mostra a definição do build.

Configurar variáveis de build

Para simplificar os parâmetros de linha de comando, encapsule os valores de chave que orientam a fábrica de imagem a um conjunto de variáveis de build. Selecione a guia Variáveis e você verá uma lista de várias variáveis padrão. Esta é a lista de variáveis a serem inseridas no Azure DevOps:

Nome da variável Valor Observações
ConfigurationLocation /Scripts/ImageFactory/Configuration Esse local é o caminho completo no repositório para a pasta de Configuração. Se você importou todo o repositório acima, o valor à esquerda estará correto. Caso contrário, atualize para ele apontar para o local de configuração.
DevTestLabName MyImageFactory O nome do laboratório no Azure DevTest Labs usado como a fábrica para produzir imagens. Caso você não tenha, crie um. Verifique se o laboratório está na mesma assinatura à qual o ponto de extremidade de serviço tem acesso.
ImageRetention 1 O número de imagens que você deseja salvar de cada tipo. Defina o valor padrão como 1.
MachinePassword ******* A senha da conta do administrador interna para as máquinas virtuais. Essa conta é transitória, portanto, verifique se ela está segura. Selecione o pequeno ícone de cadeado à direita para verificar se é uma cadeia de caracteres segura.
MachineUserName ImageFactoryUser O nome de usuário da conta do administrador interna para as máquinas virtuais. Essa conta é transitória.
StandardTimeoutMinutes 30 O tempo limite que devemos aguardar para operações regulares do Azure.
SubscriptionId 0000000000-0000-0000-0000-0000000000000 A ID da assinatura na qual o laboratório existe e à qual o ponto de extremidade de serviço tem acesso.
VMSize Standard_A3 O tamanho da máquina virtual a ser usado para a etapa de criação. As VMs criadas são transitórias. O tamanho precisa ser aquele que está habilitado para o laboratório. Confirme se há cotas de núcleos de assinatura suficiente.

Captura de tela que mostra as variáveis do build.

Conectar-se ao Azure

A próxima etapa é configurar uma entidade de serviço. Uma entidade de serviço é uma identidade do Microsoft Entra ID que permite que o agente de build do DevOps opere no Azure em nome do usuário. Para configurá-la, comece adicionando sua primeira etapa de build do Azure PowerShell.

  1. Selecione Adicionar Tarefa.
  2. Pesquise Azure PowerShell.
  3. Depois de encontrá-la, selecione Adicionar para adicionar a tarefa ao build. Ao selecionar Adicionar, você verá que a tarefa aparece no lado esquerdo como adicionada.

Captura de tela que mostra a configuração da etapa do PowerShell.

A maneira mais rápida de configurar uma entidade de serviço é deixar que o Azure DevOps faça isso por você.

  1. Selecione a tarefa que você acabou de adicionar.
  2. Para Tipo de Conexão do Azure, selecione o Azure Resource Manager.
  3. Selecione o link Gerenciar para configurar a entidade de serviço.

Para saber mais, consulte esta postagem em blog. Quando você selecionar o link Gerenciar, você será direcionado para o lugar certo no DevOps (segunda captura de tela na postagem no blog) para configurar a conexão com o Azure. Certifique-se de escolher o Ponto de Extremidade de Serviço do Azure Resource Manager ao configurar a conexão.

Concluir a tarefa de build

Se você selecionar a tarefa de build, verá todos os detalhes no painel à direita que devem ser preenchidos.

  1. Primeiro, dê à tarefa de build o nome Criar Máquinas Virtuais.

  2. Escolha a entidade de serviço que você criou selecionando Azure Resource Manager

  3. Escolha o ponto de extremidade de serviço.

  4. Para Caminho de Script, selecione … (reticências) à direita.

  5. Navegue até o script MakeGoldenImageVMs.ps1.

  6. Os parâmetros do script devem ter a seguinte aparência: -ConfigurationLocation $(System.DefaultWorkingDirectory)$(ConfigurationLocation) -DevTestLabName $(DevTestLabName) -vmSize $(VMSize) -machineUserName $(MachineUserName) -machinePassword (ConvertTo-SecureString -string '$(MachinePassword)' -AsPlainText -Force) -StandardTimeoutMinutes $(StandardTimeoutMinutes)

    Captura de tela que mostra a Conclusão da definição do build.

Colocar o build na fila

Vamos verificar se tudo está configurado corretamente enfileirando um novo build. Com o build em execução, acesse o portal do Azure e selecione em Todas as Máquinas Virtuais no laboratório da fábrica de imagem para confirmar se tudo está funcionando corretamente. Você deve ver três máquinas virtuais serem criadas no laboratório.

VMs no laboratório

Próximas etapas

A primeira etapa na configuração da fábrica de imagem com base no Azure DevTest Labs está concluída. No próximo artigo da série, você vai generalizar essas VMs e salvá-las em imagens personalizadas. Em seguida, você as distribuirá para todos os seus outros laboratórios. Confira o próximo artigo da série: Salvar imagens personalizadas e distribuí-las para vários laboratórios.