Integrar o DevTest Labs nos Pipelines do Azure

Pode utilizar a extensão Azure DevTest Labs Tasks para integrar Azure DevTest Labs em pipelines de integração e entrega contínua de Pipelines do Azure (CI/CD). A extensão instala várias tarefas nos Pipelines do Azure, incluindo:

  • Criar uma VM (máquina virtual)
  • Criar uma imagem personalizada a partir de uma VM
  • Eliminar uma VM

Estas tarefas facilitam, por exemplo, implementar rapidamente uma VM de imagem dourada , executar um teste específico e, em seguida, eliminar a VM.

Este artigo mostra como utilizar Azure DevTest Labs Tasks para criar e implementar uma VM, criar uma imagem personalizada e, em seguida, eliminar a VM, tudo num pipeline de versão. Normalmente, realizaria estas tarefas separadamente nos seus próprios pipelines de compilação, teste e implementação.

Introdução ao Azure DevTest Labs

Novo no Azure? Crie uma conta gratuita do Azure.

Já utiliza o Azure? Introdução ao seu primeiro laboratório no DevTest Labs: Comece a utilizar Azure DevTest Labs em minutos.

Pré-requisitos

Criar um modelo para criar uma VM de laboratório

Primeiro, construa um modelo do Azure Resource Manager (ARM) que cria uma VM de laboratório a pedido.

  1. No seu laboratório no portal do Azure, selecione Adicionar na barra de menus superior.
  2. No ecrã Escolher uma base , selecione uma imagem base do Windows para a VM.
  3. No ecrã Criar recurso de laboratório , em Artefactos, selecione Adicionar ou Remover Artefactos.
  4. No ecrã Adicionar artefactos , procure winrm e, em seguida, selecione a seta junto a Configurar WinRM.
  5. No painel Adicionar artefacto , introduza um nome de domínio completamente qualificado (FQDN) para a VM, como contosolab00000000000000.westus3.cloudapp.azure.com. Selecione OK e, em seguida, selecione OK novamente.
  6. Selecione o separador Definições Avançadas e, para Endereço IP, selecione Público.

    Nota

    Se utilizar o artefacto WinRM com um endereço IP partilhado, tem de adicionar uma regra de tradução de endereços de rede (NAT) para mapear uma porta externa para a porta WinRM. Não precisa da regra NAT se criar a VM com um endereço IP público. Para estas instruções, crie a VM com um endereço IP público.

  7. Selecione Ver modelo do ARM.
  8. Copie o código do modelo e guarde-o como um ficheiro denominado CreateVMTemplate.json no seu ramo de controlo de origem local.
  9. Verifique o modelo no sistema de controlo de origem do projeto.

Para obter mais informações e detalhes, veja Utilizar um modelo de Resource Manager.

Criar um script para obter propriedades da VM

Em seguida, crie um script para recolher os valores que os passos de tarefa, como a Cópia de Ficheiros do Azure e o PowerShell em Máquinas de Destino , utilizam para implementar aplicações em VMs. Normalmente, utilizaria estas tarefas para implementar as suas próprias aplicações nas suas VMs do Azure. As tarefas requerem valores como o nome do grupo de recursos da VM, o endereço IP e o FQDN.

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Guarde o seguinte script com um nome como GetLabVMParams.ps1e dê entrada no sistema de controlo de origem do projeto.

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 versão no Azure Pipelines

Em seguida, crie o pipeline de versão nos Pipelines do Azure. As tarefas de pipeline utilizam os valores que atribuiu à VM quando criou o modelo do ARM.

  1. Na página de projeto dos Serviços de DevOps do Azure, selecione Versões> dePipelines no painel de navegação esquerdo.
  2. Selecione Novo pipeline.
  3. No painel Selecionar um modelo , selecione Esvaziar tarefa.
  4. Feche o painel Fase .
  5. Na página Novo pipeline de versão , selecione o separador Variáveis .
  6. Selecione Adicionar e introduza os seguintes pares Nome e Valor , selecionando Adicionar depois de adicionar cada um deles.
    • vmName: o nome da VM que atribuiu no modelo do ARM.
    • userName: o nome de utilizador a aceder à VM.
    • palavra-passe: palavra-passe para o nome de utilizador. Selecione o ícone de bloqueio para ocultar e proteger a palavra-passe.

Adicionar um artefacto

  1. Na nova página do pipeline de versão, no separador Pipeline , selecione Adicionar um artefacto.
  2. No painel Adicionar um artefacto, selecione Repositório do Azure.
  3. Na lista Projeto , selecione o projeto DevOps.
  4. Na lista Origem (repositório), selecione o repositório de origem.
  5. Na lista Ramo predefinido , selecione o ramo a dar saída.
  6. Selecione Adicionar.

Criar uma VM do DevTest Labs

O passo seguinte cria uma VM de imagem dourada a utilizar para implementações futuras. Este passo utiliza a tarefa Criar VM Azure DevTest Labs.

  1. Na nova página do pipeline de versão, no separador Pipeline , selecione o texto hiperligado na Fase 1.

  2. No painel esquerdo, selecione o sinal de + adição junto a Tarefa do agente.

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

  4. No painel esquerdo, selecione a tarefa Criar Azure DevTest Labs VM.

  5. No painel do lado direito, preencha o formulário da seguinte forma:

    • Subscrição do Azure RM: selecione a sua ligação de serviço ou subscrição na lista pendente e selecione Autorizar , se necessário.

      Nota

      Para obter informações sobre como criar uma ligação de permissões mais restrita à sua subscrição do Azure, veja Ponto final de serviço do Azure Resource Manager.

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

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

    • Modelo: navegue até e selecione o ficheiro de modelo que deu entrada no repositório do projeto.

    • Ficheiro de Parâmetros: se tiver verificado um ficheiro de parâmetros no repositório, navegue até e selecione-o.

    • Substituições de Parâmetros: Introduza -newVMName '$(vmName)' -userName '$(userName)' -password '$(password)'.

    • No menu pendente Variáveis de Saída e, em Nome de referência, introduza a variável para o ID de VM de laboratório criado. Vamos introduzir vm para Nome de referência para simplificar. labVmId será um atributo desta variável e será referido mais tarde como $vm.labVmId. Se utilizar outro nome, lembre-se de utilizá-lo em conformidade nas tarefas subsequentes.

      O ID da VM do laboratório estará no seguinte formulário: /subscriptions/{subscription Id}/resourceGroups/{resource group Name}/providers/Microsoft.DevTestLab/labs/{lab name}/virtualMachines/{vmName}.

Recolher os detalhes da VM do DevTest Labs

Em seguida, o pipeline executa o script que criou para recolher os detalhes da VM do DevTest Labs.

  1. No separador Tarefas do pipeline de versão, selecione o sinal de + adição junto a Tarefa do agente.
  2. Em Adicionar tarefas no painel direito, procure e selecione Azure PowerShell e selecione Adicionar.
  3. No painel esquerdo, selecione o script de Azure PowerShell: tarefa FilePath.
  4. No painel do lado direito, preencha o formulário da seguinte forma:
    • Subscrição do Azure: selecione a sua ligação ou subscrição de serviço.
    • Tipo de Script: selecione Caminho do Ficheiro de Script.
    • Caminho do Script: navegue até e selecione o script do PowerShell que deu entrada no repositório de código fonte. Pode utilizar propriedades incorporadas para simplificar o caminho, por exemplo: $(System.DefaultWorkingDirectory/Scripts/GetLabVMParams.ps1.
    • Argumentos de Script: introduza o valor como -labVmId $(vm.labVmId).

O script recolhe os valores necessários e armazena-os em variáveis de ambiente no pipeline de versão, para que possa consultar os mesmos em passos posteriores.

Criar uma imagem de VM a partir da VM do DevTest Labs

A tarefa seguinte cria uma imagem da VM recentemente implementada no laboratório. Pode utilizar a imagem para criar cópias da VM a pedido para realizar tarefas de programador ou executar testes.

  1. No separador Tarefas do pipeline de versão, selecione o sinal + de adição junto a Tarefa do agente.
  2. Em Adicionar tarefas, selecione Azure DevTest Labs Criar Imagem Personalizada e selecione Adicionar.
  3. No painel esquerdo, selecione a tarefa Azure DevTest Labs Criar Imagem Personalizada.
  4. No painel do lado direito, preencha o formulário da seguinte forma:
    • Subscrição do Azure RM: selecione a sua ligação de serviço ou subscrição.
    • Laboratório: selecione o seu laboratório.
    • Nome da Imagem Personalizada: introduza um nome para a imagem personalizada.
    • Descrição: introduza uma descrição opcional para facilitar a seleção da imagem correta.
    • VM do Laboratório de Origem: o labVmId de origem. Introduza o valor como $(vm.labVmId).
    • Variáveis de Saída: pode editar o nome da variável de ID de Imagem Personalizada predefinida, se necessário.

Implementar a aplicação na VM do DevTest Labs (opcional)

Pode adicionar tarefas para implementar a sua aplicação na nova VM de DevTest Labs. Se quiser experimentar apenas a criação de uma VM do DevTest Labs e uma imagem personalizada, sem implementar uma aplicação, pode ignorar este passo.

As tarefas que normalmente utiliza para implementar aplicações são a Cópia de Ficheiros do Azure e o PowerShell nos Computadores de Destino. Pode encontrar as informações da VM de que precisa para os parâmetros de tarefa em três variáveis de configuração denominadas labVmRgName, labVMIpAddress e labVMFqdn no pipeline de versão.

Elimine a VM

A tarefa final é eliminar a VM que implementou no laboratório. Normalmente, eliminaria a VM depois de realizar as tarefas de programador ou executar os testes de que necessita na VM implementada.

  1. No separador Tarefas do pipeline de versão, selecione o sinal + de adição junto a Tarefa do agente.
  2. Em Adicionar tarefas, selecione Azure DevTest Labs Eliminar VM e selecione Adicionar.
  3. Configure a tarefa da seguinte forma:
    • Subscrição do Azure RM: selecione a sua ligação de serviço ou subscrição.
    • Laboratório: selecione o seu laboratório.
    • Máquina Virtual: introduza o valor como $(vm.labVmId).
    • Variáveis de Saída: em Nome da referência, se tiver alterado o nome predefinido da variável labVmId , introduza-o aqui. O valor predefinido é $(labVmId).

Guardar o pipeline de versão

Para guardar o novo pipeline de versão:

  1. Selecione Novo pipeline de versão na parte superior da página do pipeline de versão e introduza um novo nome para o pipeline.
  2. Selecione Guardar no canto superior direito.

Criar e executar uma versão

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

  1. Na página do pipeline de versão, selecione Criar versão no canto superior direito.
  2. Em Artefactos, selecione a compilação mais recente e, em seguida, selecione Criar.

Em cada fase de lançamento, pode atualizar a vista do laboratório no portal do Azure para ver a criação da VM, a criação de imagens e a eliminação da VM.

Pode utilizar a imagem personalizada para criar VMs sempre que precisar delas.

Passos seguintes