Partilhar via


Executar uma fábrica de imagens a partir do Azure DevOps

Este artigo aborda todos os preparativos necessários para executar a fábrica de imagens do Azure DevOps (anteriormente Visual Studio Team Services).

Nota

Qualquer motor de orquestração vai funcionar! O Azure DevOps não é obrigatório. A fábrica de imagens é executada usando scripts do Azure PowerShell, portanto, 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 imagens

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

Scripts e modelos

O próximo passo para adotar a fábrica de imagens para sua equipe é entender o que está disponível. Os scripts e modelos de fábrica de imagens estão disponíveis publicamente no DevTest Labs GitHub Repo. Aqui está um esboço das peças:

  • Fábrica de Imagens. É a pasta raiz.
    • Configuração. As entradas para a fábrica de imagens
      • GoldenImages. Esta pasta contém arquivos JSON que representam as definições de imagens personalizadas.
      • Labs.json. Arquivo onde as equipes se inscrevem para receber imagens personalizadas específicas.
  • Scripts. O motor para a fábrica de imagens.

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, executar o Azure PowerShell em um só lugar. Você pode agendar execuções recorrentes para manter as imagens atualizadas. Existem boas facilidades para registrar os resultados para diagnosticar quaisquer problemas. Usar o Azure DevOps não é um requisito, no entanto, você pode usar qualquer aproveitamento/mecanismo que possa se conectar ao Azure e executar o Azure PowerShell.

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

Para começar, crie uma conta gratuita no Azure DevOps. Visite https://www.visualstudio.com/ e selecione Introdução gratuita em Azure DevOps (anteriormente VSTS). Você precisará escolher um nome de conta exclusivo e certifique-se de gerenciar o código usando o Git. Depois de criar a conta, salve a URL no seu projeto de equipe. Aqui está um exemplo de URL: https://<accountname>.visualstudio.com/MyFirstProject.

Faça check-in da fábrica de imagens no Git

Todos os PowerShell, modelos e configurações para a fábrica de imagens estão localizados no repositório público do GitHub do DevTest Labs. A maneira mais rápida de obter o código em seu novo projeto de equipe é importar um repositório. A importação atrai todo o repositório do DevTest Labs (para que você obtenha documentos e amostras extras).

  1. Visite o projeto de DevOps do Azure que você criou na etapa anterior (a URL parece https://< accountname.visualstudio.com/MyFirstProject>).

  2. Selecione Importar um repositório.

  3. Insira o URL do clone para o DevTest Labs Repo: https://github.com/Azure/azure-devtestlab.

  4. Selecione Importar.

    Captura de tela que mostra Import Git repo.

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

Criar uma compilação 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ê usa a definição de compilação para simplificar, mas ela funciona com DevOps Build, DevOps Release (ambientes únicos ou múltiplos), outros mecanismos de execução como o Agendador de Tarefas do Windows ou qualquer outro conjunto que possa executar o Azure PowerShell.

Nota

Um ponto importante a ter em mente que alguns dos arquivos do PowerShell levam muito tempo para serem executados quando há muitas (10+) imagens personalizadas para criar. Os agentes de compilação/liberação de DevOps hospedados gratuitamente têm um tempo limite de 30 minutos, portanto, você não pode usar o agente hospedado gratuito quando começar a criar muitas imagens. Esse desafio de tempo limite se aplica a qualquer arnês que você decida usar, é bom verificar antecipadamente se você pode estender os tempos limite típicos para scripts do Azure PowerShell de longa execução. No caso do Azure DevOps, você pode usar agentes hospedados pagos ou usar seu próprio agente de compilação.

  1. Para começar, selecione Configurar compilação na página inicial do seu projeto de DevOps:

    Captura de tela que mostra o botão Configurar compilação.

  2. Especifique um nome para a compilação (por exemplo: Compilar e entregar imagens para o DevTest Labs).

  3. Selecione uma definição de compilação vazia e selecione Aplicar para criar sua compilação.

  4. Nesta etapa, você pode escolher Hospedado para o agente de compilação.

  5. Salve a definição de compilação.

    Captura de tela que mostra a definição de compilação.

Configurar as variáveis de compilação

Para simplificar os parâmetros de linha de comando, encapsular os valores-chave que direcionam a fábrica de imagens para um conjunto de variáveis de compilação. Selecione a guia Variáveis e você verá uma lista de várias variáveis padrão. Aqui está a lista de variáveis para inserir no Azure DevOps:

Nome da variável Value Notas
ConfigurationLocation /Scripts/ImageFactory/Configuração Este local é o caminho completo no repositório para a pasta Configuração . Se você importou todo o repositório acima, o valor à esquerda está correto. Caso contrário, atualize para 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. Se você não tiver um, crie um. Verifique se o Laboratório está na mesma assinatura à qual o ponto de extremidade do 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 de administrador interna para as máquinas virtuais. Esta conta é transitória, por isso certifique-se de que é segura. Selecione o pequeno ícone de cadeado à direita para garantir que é uma cadeia de caracteres segura.
MachineUserName ImageFactoryUser O nome de usuário da conta de administrador interna para as máquinas virtuais. Esta conta é transitória.
StandardTimeoutMinutes 30 O tempo limite que devemos aguardar pelas operações regulares do Azure.
SubscriptionId 0000000000-0000-0000-0000-0000000000000 A ID da assinatura onde o laboratório existe e à qual o ponto de extremidade do serviço tem acesso.
VMSize Standard_A3 O tamanho da máquina virtual a ser usada para a etapa Criar . As VMs criadas são transitórias. O tamanho deve ser o que está habilitado para o laboratório. Confirme se há cota suficiente de núcleos de assinatura.

Captura de tela que mostra variáveis de compilação.

Ligar ao Azure

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

  1. Selecione Adicionar tarefa.
  2. Procure o Azure PowerShell.
  3. Depois de encontrá-lo, selecione Adicionar para adicionar a tarefa à compilação. Quando você seleciona Adicionar, a tarefa aparece no lado esquerdo como adicionada.

Captura de tela que mostra a etapa Configurar o PowerShell.

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

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

Para obter mais informações, consulte esta postagem no blog. Ao selecionar o link Gerenciar , você pousará no lugar certo em DevOps (segunda captura de tela na postagem do 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.

Conclua a tarefa de compilação

Se você selecionar a tarefa de compilação, verá todos os detalhes no painel direito que devem ser preenchidos.

  1. Primeiro, nomeie a tarefa de compilação: Criar máquinas virtuais.

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

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

  4. Em Caminho do Script, selecione ... (reticências) à direita.

  5. Navegue até o script MakeGoldenImageVMs.ps1 .

  6. Os parâmetros de script devem ter esta 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 Concluir a definição de compilação.

Enfileirar a compilação

Vamos verificar se você tem tudo configurado corretamente enfileirando uma nova compilação. Enquanto a compilação estiver em execução, alterne para o portal do Azure e selecione Todas as Máquinas Virtuais em seu laboratório de fábrica de imagens 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óximos passos

A primeira etapa na configuração da fábrica de imagens com base no Azure DevTest Labs está concluída. No próximo artigo da série, você obtém essas VMs generalizadas e salvas em imagens personalizadas. Em seguida, você os distribui para todos os seus outros laboratórios. Consulte o próximo artigo da série: Salvar imagens personalizadas e distribuir para vários laboratórios.