Integre Azure DevTest Labs no seu gasoduto Azure Pipelines CI/CD

Pode utilizar a extensão Azure DevTest Labs Tasks para integrar os seus gasodutos Azure e a integração contínua e a entrega contínua (CI/CD) a construir e libertar gasodutos com Azure DevTest Labs. A extensão instala várias tarefas, incluindo:

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

Estas tarefas facilitam, por exemplo, a implantação rápida de um VM de imagem dourada para uma tarefa específica de teste e, em seguida, apagam o VM quando o teste estiver terminado.

Este artigo mostra como usar Azure DevTest Labs Tasks para criar e implantar um VM, criar uma imagem personalizada e, em seguida, apagar o VM, tudo como um pipeline de lançamento. Normalmente, executaria as tarefas individualmente na sua própria construção, teste e implementação de gasodutos.

Introdução ao Azure DevTest Labs

Novo no Azure? Crie uma conta Azure gratuita.

Já utiliza o Azure? Começa com o teu primeiro laboratório nos Laboratórios DevTest.

Começa com Azure DevTest Labs em minutos

Pré-requisitos

  • Registe-se ou inicie sessão na sua organização Azure DevOps e crie um projeto na organização.

  • Instale a extensão de Azure DevTest Labs Tasks a partir de Visual Studio Marketplace.

    1. Vai para Azure DevTest Labs Tasks.
    2. Selecione Get it free.
    3. Selecione a sua organização Azure DevOps a partir do dropdown e selecione Instalar.

Crie o modelo para construir um VM Azure

Esta secção descreve como criar o modelo Azure Resource Manager que utiliza para criar um VM Azure a pedido.

  1. Para criar um modelo de Gestor de Recursos na sua subscrição, siga o procedimento no Modelo de Gestor de Recursos.

  2. Antes de gerar o modelo de Gestor de Recursos, adicione o artefacto WinRM como parte da criação do VM. Tarefas de implementação como Azure File Copy e PowerShell em Máquinas-Alvo precisam de acesso WinRM. O artefacto WinRM requer um nome de hospedeiro como parâmetro, que deve ser o nome de domínio totalmente qualificado (FQDN) do VM.

    Nota

    Quando utilizar o WinRM com um endereço IP partilhado, tem de adicionar uma regra NAT para mapear uma porta externa para a porta WinRM. Não precisa da regra NAT se criar o VM com um endereço IP público.

  3. Guarde o modelo para o seu computador como um ficheiro nomeado CreateVMTemplate.jsem.

  4. Consulte o modelo do seu sistema de controlo de origem.

Criar um script para obter propriedades VM

Quando executa etapas de tarefa como Azure File Copy ou PowerShell em Máquinas-Alvo no pipeline de lançamento, o seguinte script recolhe os valores necessários para implementar uma aplicação num VM. Normalmente, utilizaria estas tarefas para implementar a sua aplicação num VM Azure. As tarefas requerem valores como o nome do grupo de recursos VM, endereço IP e FQDN.

Nota

Este artigo foi atualizado para utilizar o módulo Azure Az PowerShell. O módulo Az PowerShell é o módulo do PowerShell recomendado para interagir com o Azure. Para começar a utilizar o módulo Azure PowerShell, veja Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Para criar o ficheiro de script:

  1. Abra um editor de texto e cole-o o seguinte script.

    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"
    
  2. Guarde o ficheiro com um nome como GetLabVMParams.ps1 e faça o check-in no seu sistema de controlo de fontes.

Criar um pipeline de versão no Azure Pipelines

Para criar um novo oleoduto de lançamento:

  1. Na sua página de projeto Azure DevOps, selecione Pipelines > Releases a partir da navegação à esquerda.
  2. Selecione Novo Pipeline.
  3. Em Selecione um modelo, desloque-se para baixo e selecione Trabalho Vazio e, em seguida, selecione Aplicar.

Adicionar e definir as variáveis

As tarefas do pipeline utilizam os valores atribuídos ao VM quando criou o modelo de Gestor de Recursos no portal Azure.

Para adicionar variáveis para os valores:

  1. Na página do pipeline, selecione o separador Variáveis.

  2. Para cada variável, selecione Adicionar e insira o nome e o valor:

    Name Valor
    vmName Nome VM atribuído no modelo de Gestor de Recursos
    nome de utilizador Nome de utilizador para aceder ao VM
    palavra-passe Palavra-passe para o nome de utilizador. Selecione o ícone de bloqueio para ocultar e fixar a palavra-passe.

Criar um DevTest Labs VM

O próximo passo é criar a imagem dourada VM para usar para futuras implementações. Cria o VM dentro do seu Azure DevTest Labs exemplo utilizando a tarefa Azure DevTest Labs Criar VM.

  1. No separador pipeline de desbloqueio, selecione o texto hiperligado no fase 1 para ver as tarefas de fase e, em seguida, selecione o sinal de mais ao lado do trabalho do + Agente.

  2. Em Tarefas de adicionar, selecione Azure DevTest Labs Criar VM e selecione Adicionar.

  3. Selecione Criar Azure DevTest Labs VM no painel esquerdo.

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

    Campo Valor
    Assinatura Azure RM Selecione uma ligação de serviço ou subscrição a partir de Conexões de Serviço Azure disponíveis ou Subscrições Azure disponíveis no dropdown, e selecione Authorize se necessário.

    Nota: Para obter informações sobre a criação de uma ligação de permissões mais restritas à sua subscrição Azure, consulte o ponto final do serviço Azure Resource Manager.
    Nome do laboratório Selecione o nome de um laboratório existente no qual o VM do laboratório será criado.
    Nome do modelo Introduza o caminho e o nome completos do ficheiro de modelo que guardou para o seu repositório de código fonte. Pode utilizar propriedades incorporadas para simplificar o caminho, por exemplo:

    $(System.DefaultWorkingDirectory)/Templates/CreateVMTemplate.json
    Parâmetros do modelo Introduza os parâmetros para as variáveis que definiu anteriormente:

    -newVMName '$(vmName)' -userName '$(userName)' -password (ConvertTo-SecureString -String '$(password)' -AsPlainText -Force)
    Variáveis de > saída ID do laboratório VM Introduza a variável para o ID VM de laboratório criado. Se utilizar o laboratório padrão, pode consultar a variável em tarefas subsequentes como $(labVMId).

    Pode criar um nome diferente do padrão, mas lembre-se de usar o nome correto em tarefas subsequentes. Pode escrever o ID do VM lab no seguinte formulário:

    /subscriptions/{subscription Id}/resourceGroups/{resource group Name}/providers/Microsoft.DevTestLab/labs/{lab name}/virtualMachines/{vmName}

Recolha os detalhes do DevTest Labs VM

Execute o script que criou anteriormente para recolher os detalhes do VM de DevTest Labs.

  1. No separador pipeline de desbloqueio, selecione o texto hiperligado no fase 1 para ver as tarefas de fase e, em seguida, selecione o sinal de mais ao lado do trabalho do + Agente.

  2. Em Tarefas de adicionar, selecione Azure PowerShell e selecione Adicionar.

  3. Selecione Azure PowerShell script: FilePath no painel esquerdo.

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

    Campo Valor
    Tipo de conexão Azure Selecione Azure Resource Manager.
    Assinatura Azure Selecione a sua ligação de serviço ou subscrição.
    Tipo de script Selecione o caminho do ficheiro do script.
    Caminho do roteiro Introduza o caminho e o nome completos do script PowerShell que guardou no seu repositório de código fonte. Pode utilizar propriedades incorporadas para simplificar o caminho, por exemplo:

    $(System.DefaultWorkingDirectory/Scripts/GetLabVMParams.ps1
    Argumentos de script Insira o nome da variável labVmId que foi povoada pela tarefa anterior, por exemplo:

    -labVmId '$(labVMId)'

O script recolhe os valores necessários e armazena-os em variáveis ambientais dentro do pipeline de libertação, para que possa facilmente referir-se a eles em etapas posteriores.

Criar uma imagem VM a partir do DevTest Labs VM

A próxima tarefa é criar uma imagem do VM recém-implantado na sua Azure DevTest Labs instância. Em seguida, pode utilizar a imagem para criar cópias do VM a pedido sempre que quiser executar uma tarefa dev ou realizar alguns testes.

  1. No separador pipeline de desbloqueio, selecione o texto hiperligado no fase 1 para ver as tarefas de fase e, em seguida, selecione o sinal de mais ao lado do trabalho do + Agente.

  2. Em Tarefas de adicionar, selecione Azure DevTest Labs Criar Imagem Personalizada, e selecione Adicionar.

  3. Configure a tarefa da seguinte forma:

    Campo Valor
    Assinatura Azure RM Selecione a sua ligação de serviço ou subscrição.
    Nome do laboratório Selecione o nome de um laboratório existente no qual a imagem será criada.
    Nome de imagem personalizado Insira um nome para a imagem personalizada.
    Descrição (opcional) Introduza uma descrição para facilitar a seleção da imagem correta mais tarde.
    Laboratório de Origem VM > Source Lab VM ID Se alterar o nome predefinido da variável LabVMId, insira-o aqui. O valor predefinido é de $(labVMId).
    Variáveis de > saída ID de imagem personalizada Pode editar o nome predefinido da variável, se necessário.

Implemente a sua aplicação no DevTest Labs VM (opcional)

Pode adicionar tarefas para implementar a sua aplicação no novo VM da DevTest Labs. As tarefas que normalmente utiliza para implementar a aplicação são Azure File Copy e PowerShell em Máquinas-Alvo.

A informação VM que necessita para os parâmetros destas tarefas é armazenada em três variáveis de configuração chamadas labVmRgName, labVMIpAddress e labVMFqdn dentro do pipeline de libertação. Se quiser apenas experimentar a criação de um VM DevTest Labs e uma imagem personalizada, sem implementar uma aplicação para a presente, pode saltar este passo.

Elimine a VM

A tarefa final é eliminar o VM que implementou na sua Azure DevTest Labs instância. Normalmente, apagaria o VM depois de executar as tarefas de dev ou executar os testes de que necessita no VM implantado.

  1. No separador pipeline de desbloqueio, selecione o texto hiperligado no fase 1 para ver as tarefas de fase e, em seguida, selecione o sinal de mais ao lado do trabalho do + Agente.

  2. Em Tarefas adicionar, selecione Azure DevTest Labs Eliminar VM e selecione Adicionar.

  3. Configure a tarefa da seguinte forma:

    • Sob Subscrição Azure RM, selecione a sua ligação de serviço ou subscrição.
    • Para o ID de VM do laboratório, se alterar o nome padrão da variável LabVMId, insira-o aqui. O valor predefinido é de $(labVMId).

Salvar o gasoduto de libertação

Para salvar o novo oleoduto de lançamento:

  1. Selecione o nome Novo pipeline de lançamento na página do pipeline de lançamento e introduza um novo nome para o pipeline.

  2. Selecione o ícone Guardar na parte superior direita.

Criar e executar um lançamento

Para criar e executar um desbloqueio utilizando o novo oleoduto:

  1. Selecione Criar desbloqueio na parte superior direita na página do pipeline de lançamento.

  2. Sob Artefactos, selecione a construção mais recente e, em seguida, selecione Criar.

  3. Em cada fase de lançamento, refresque a visão da sua instância DevTest Labs no portal Azure para ver a criação de VM, criação de imagem e eliminação de VM.

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

Passos seguintes