Integrar o DevTest Labs ao Azure Pipelines

Você pode usar a extensão Azure DevTest Labs Tasks para integrar o Azure DevTest Labs aos pipelines de CI/CD (integração contínua e entrega contínua) do Azure Pipelines. A extensão instala várias tarefas no Azure Pipelines, incluindo:

  • Criar uma VM (máquina virtual)
  • Criar uma imagem personalizada de uma VM
  • Excluir uma VM

Essas tarefas facilitam, por exemplo, o rápido processo de implantar uma VM de imagem dourada em uma tarefa, executar um teste específico e excluí-la quando o teste terminar.

Este artigo mostra como usar Azure DevTest Labs Tasks para criar e implantar uma VM, criar uma imagem personalizada e depois excluir a VM, tudo em um pipeline de lançamento. Você normalmente executaria essas tarefas separadamente nos próprios pipelines de build, teste e implantação.

Introdução a Azure DevTest Labs

Você é novo no Azure? Crie uma conta gratuita do Azure.

Já está no Azure? Introdução ao primeiro laboratório no DevTest Labs: Introdução ao Azure DevTest Labs em minutos.

Pré-requisitos

Criar um modelo para criar uma VM de laboratório

Primeiro, construa um modelo do ARM (Azure Resource Manager) que crie uma VM de laboratório sob demanda.

  1. No laboratório na portal do Azure, selecione Adicionar na barra de menus superior.
  2. Na tela Escolher uma base, selecione uma imagem base do Windows para a VM.
  3. Na tela Criar recurso do laboratório, em Artefatos, selecione Adicionar ou Remover Artefatos.
  4. Na tela Adicionar artefatos, procure WinRM e selecione a seta ao lado de Configurar WinRM.
  5. No painel Adicionar artefato, insira um FQDN (nome de domínio totalmente qualificado) para a VM, como contosolab00000000000000.westus3.cloudapp.azure.com. Selecione OK e, em seguida, OK novamente.
  6. Selecione a guia Configurações Avançadas e, em Endereço IP, selecione Público.

    Observação

    Se você usar o artefato do WinRM com um endereço IP compartilhado, adicione uma regra NAT (conversão de endereços de rede) para mapear uma porta externa à porta do WinRM. Você não precisará da regra NAT se criar a VM com um endereço IP público. Neste guia, crie a VM com um endereço IP público.

  7. Selecione Exibir modelo do ARM.
  8. Copie o código do modelo e salve-o como um arquivo chamado CreateVMTemplate.json na sua ramificação local de controle do código-fonte.
  9. Faça check-in do modelo no sistema de controle do código-fonte do projeto.

Para obter mais informações e detalhes, confira Usar um modelo do Resource Manager.

Criar um script para obter as propriedades da VM

Depois, crie um script para coletar os valores que as etapas da tarefa, como a Cópia de Arquivo do Azure e o PowerShell em Computadores de Destino, usam para implantar aplicativos em VMS. Você normalmente usaria essas tarefas para implantar seus aplicativos nas VMs do Azure. As tarefas exigem valores como o nome do grupo de recursos, o endereço IP e o FQDN da VM.

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Salve o arquivo com um nome como GetLabVMParams.ps1 e faça check-in dele no seu sistema de controle do código-fonte.

Param( [string] $labVmId)

$labVmComputeId = (Get-AzResource -Id $labVmId).Properties.ComputeId

# Get lab VM resource group name
$labVmRgName = (Get-AzResource -Id $labVmComputeId).ResourceGroupName

# Get the lab VM Name
$labVmName = (Get-AzResource -Id $labVmId).Name

# Get lab VM public IP address
$labVMIpAddress = (Get-AzPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).IpAddress

# Get lab VM FQDN
$labVMFqdn = (Get-AzPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).DnsSettings.Fqdn

# Set a variable labVmRgName to store the lab VM resource group name
Write-Host "##vso[task.setvariable variable=labVmRgName;]$labVmRgName"

# Set a variable labVMIpAddress to store the lab VM Ip address
Write-Host "##vso[task.setvariable variable=labVMIpAddress;]$labVMIpAddress"

# Set a variable labVMFqdn to store the lab VM FQDN name
Write-Host "##vso[task.setvariable variable=labVMFqdn;]$labVMFqdn"

Criar um pipeline de lançamento no Azure Pipelines

Depois, crie o pipeline de lançamento no Azure Pipelines. As tarefas de pipeline usam os valores que foram atribuídos à VM quando você criou o modelo do ARM.

  1. Na página do projeto do Azure DevOps Services, selecione Pipelines>Versões no painel de navegação à esquerda.
  2. Selecione Novo pipeline.
  3. No painel Selecionar um modelo, escolha Trabalho vazio.
  4. Feche o painel Fase.
  5. Na página Novo pipeline de lançamento, selecione a guia Variáveis.
  6. Selecione Adicionar e insira os seguintes pares de Nome e Valor, selecionando Adicionar depois de adicionar cada um.
    • vmName: o nome da VM que você atribuiu no modelo do ARM.
    • userName: o nome de usuário para acessar a VM.
    • password: a senha para o nome de usuário. Use o ícone de cadeado para ocultar e proteger a senha.

Adicionar um artefato

  1. Na página do novo pipeline de lançamento, na guia Pipeline, selecione Adicionar um artefato.
  2. No painel Adicionar um artefato, selecione Repositório do Azure.
  3. Na lista Projeto, selecione seu projeto do DevOps.
  4. Na lista Origem (repositório), selecione o repositório de origem.
  5. Na lista Branch padrão, selecione o branch para check-out.
  6. Selecione Adicionar.

Criar uma VM do DevTest Labs

A próxima etapa cria uma VM de imagem dourada a ser usada para implantações futuras. Esta etapa usa a tarefa Criar VM do Azure DevTest Labs.

  1. Na página novo pipeline de lançamento, na guia Pipeline, selecione o texto com hiperlink em Fase 1.

  2. No painel à esquerda, selecione o sinal de adição + ao lado de Trabalho do agente.

  3. Em Adicionar tarefas no painel direito, procure e selecione Criar VM do Azure DevTest Labs e escolha Adicionar.

  4. Selecione Criar VM do Azure DevTest Labs no painel à esquerda.

  5. No painel direito, preencha o formulário da seguinte maneira:

    • Assinatura do Azure RM: selecione sua conexão de serviço ou assinatura na lista suspensa e selecione Autorizar se necessário.

      Observação

      Para obter informações de como criar uma conexão de permissões mais restritas para sua assinatura do Azure, confira Ponto de extremidade de serviço do Azure Resource Manager.

    • Laboratório: selecione o nome do laboratório do DevTest Labs.

    • Nome da Máquina Virtual: a variável especificada para o nome da máquina virtual: $vmName.

    • Modelo: navegue até o arquivo de modelo que você fez check-in no repositório do projeto e selecione-o.

    • Arquivo de Parâmetros: se você fez check-in de um arquivo de parâmetros no seu repositório, procure-o e selecione-o.

    • Substituições de parâmetro: insira -newVMName '$(vmName)' -userName '$(userName)' -password '$(password)'.

    • Veja as Variáveis de Saída suspensas e, em Nome de referência, insira a variável de ID da VM do laboratório que foi criada. Vamos inserir vm para Nome da referência para simplificar. labVmId será um atributo dessa variável e será referido posteriormente como $vm.labVmId. Se você usar qualquer outro nome, lembre-se de usá-lo de acordo nas tarefas subsequentes.

      Lab VM ID estará no formulário a seguir: /subscriptions/{subscription Id}/resourceGroups/{resource group Name}/providers/Microsoft.DevTestLab/labs/{lab name}/virtualMachines/{vmName}.

Coletar os detalhes da VM do DevTest Labs

Depois, o pipeline executará o script que você criou para coletar os detalhes da VM do DevTest Labs.

  1. No pipeline de lançamento, na guia Tarefas, escolha o sinal de adição + ao lado de Trabalho do agente.
  2. Em Adicionar tarefas no painel direito, procure e selecione Azure PowerShell e clique em Adicionar.
  3. No painel à esquerda, selecione a tarefa Script do Azure PowerShell: FilePath.
  4. No painel direito, preencha o formulário da seguinte maneira:
    • Assinatura do Azure: selecione sua conexão de serviço ou assinatura.
    • Tipo de script: selecione Caminho do Arquivo de Script.
    • Caminho do Script: navegue até o script do PowerShell do qual você fez check-in no repositório do código-fonte e selecione-o. Você pode usar propriedades internas para simplificar o caminho, por exemplo: $(System.DefaultWorkingDirectory/Scripts/GetLabVMParams.ps1.
    • Argumentos de Script: insira o valor como -labVmId $(vm.labVmId).

O script coleta os valores necessários e armazena-os em variáveis de ambiente no pipeline de lançamento para que você possa referenciá-los facilmente nas próximas etapas.

Criar uma imagem da VM do DevTest Labs

A próxima tarefa cria uma imagem da VM recém-implantada no laboratório. Você pode usar a imagem para criar cópias da VM sob demanda a fim de realizar tarefas de desenvolvedor ou executar testes.

  1. No pipeline de lançamento, na guia Tarefas, escolha o sinal de adição + ao lado de Trabalho do agente.
  2. Em Adicionar tarefas, selecione Azure DevTest Labs criar imagem personalizada e selecione Adicionar.
  3. No painel esquerdo, selecione a tarefa Criar Imagem Personalizada do Azure DevTest Labs .
  4. No painel direito, preencha o formulário da seguinte maneira:
    • Assinatura do Azure RM: selecione sua conexão de serviço ou assinatura.
    • Laboratório: selecione seu laboratório.
    • Nome da Imagem Personalizada: insira um nome para a imagem personalizada.
    • Descrição: insira uma descrição opcional para facilitar a seleção da imagem correta.
    • VM do laboratório de origem: o labVmId de origem. Insira o valor como $(vm.labVmId).
    • Variáveis de Saída: você pode editar o nome da variável de ID de Imagem Personalizada padrão, se necessário.

Implantar o aplicativo na VM do DevTest Labs (opcional)

Você pode adicionar tarefas para implantar o aplicativo na nova VM do DevTest Labs. Se você quiser apenas experimentar a criação de uma VM e de uma imagem personalizada do DevTest Labs, sem implantar um aplicativo, ignore esta etapa.

As tarefas que você geralmente usa para implantar aplicativos são Cópia de Arquivo do Azure e PowerShell em Computadores de Destino. Você pode encontrar as informações da VM necessárias para os parâmetros de tarefa em três variáveis de configuração chamadas labVmRgName, labVMIpAddress e labVMFqdn no pipeline de lançamento.

Excluir a VM

A tarefa final é excluir a VM que você implantou no laboratório. Normalmente, você excluiria a VM depois de realizar as tarefas do desenvolvedor ou executaria os testes necessários na VM implantada.

  1. No pipeline de lançamento, na guia Tarefas, escolha o sinal de adição + ao lado de Trabalho do agente.
  2. Em Adicionar tarefas, selecione Azure DevTest Labs excluir VM e selecione Adicionar.
  3. Configure as tarefas da seguinte forma:
    • Assinatura do Azure RM: selecione sua conexão de serviço ou assinatura.
    • Laboratório: selecione seu laboratório.
    • Máquina Virtual: insira o valor como $(vm.labVmId).
    • Variáveis de Saída: em Nome de referência, se você alterou o nome padrão da variável labVmId, insira-o aqui. O valor padrão é $(labVmId).

Salvar o pipeline de lançamento

Para salvar o novo pipeline de lançamento:

  1. Selecione Novo pipeline de lançamento na página de pipeline de lançamento e insira um novo nome para ele.
  2. Selecione Salvar no canto superior direito.

Criar e executar uma versão

Para criar e executar uma versão usando o novo pipeline:

  1. Na página do pipeline de lançamento, selecione Criar versão no canto superior direito.
  2. Em Artefatos, selecione o build mais recente e depois Criar.

Em cada fase de lançamento, você pode atualizar a exibição do laboratório no portal do Azure para ver a criação da VM, a criação da imagem e a exclusão da VM.

Você pode usar a imagem personalizada para criar VMs sempre que precisar delas.

Próximas etapas