Integrar o DevTest Labs no Azure Pipelines
Você pode usar a extensão Azure DevTest Labs Tasks para integrar o Azure DevTest Labs aos pipelines de integração contínua e entrega (CI/CD) do Azure Pipelines. A extensão instala várias tarefas no Azure Pipelines, incluindo:
- Criar uma VM (máquina virtual)
- Criar uma imagem personalizada a partir de uma VM
- Eliminar uma VM
Essas tarefas facilitam, por exemplo, a implantação rápida de uma VM de imagem dourada, a execução de um teste específico e a exclusão da VM.
Este artigo mostra como usar as Tarefas do Azure DevTest Labs para criar e implantar uma VM, criar uma imagem personalizada e excluir a VM, tudo em um pipeline de versão. Normalmente, você executaria essas tarefas separadamente em seus próprios pipelines de compilação, teste e implantação.
Introdução ao Azure DevTest Labs
Ainda não conhece o Azure? Crie uma conta gratuita.
Já utiliza o Azure? Crie seu primeiro laboratório e comece a usar o Azure DevTest Labs em minutos.
Pré-requisitos
No portal do Azure, crie um laboratório do DevTest Labs ou use um existente.
Registre-se ou entre em sua organização dos Serviços de DevOps do Azure e crie um projeto ou use um projeto existente.
Instale a extensão Azure DevTest Labs Tasks do Visual Studio Marketplace:
- Vá para Tarefas do Azure DevTest Labs.
- Selecione Obter gratuitamente.
- Selecione sua organização do Azure DevOps Services na lista suspensa e selecione Instalar.
Criar um modelo para criar uma VM de laboratório
Primeiro, construa um modelo do Azure Resource Manager (ARM) que crie uma VM de laboratório sob demanda.
- No seu laboratório no portal do Azure, selecione Adicionar na barra de menu superior.
- Na tela Escolha uma base, selecione uma imagem base do Windows para a VM.
- Na tela Criar recurso de laboratório, em Artefatos, selecione Adicionar ou Remover Artefatos.
- Na tela Adicionar artefatos, procure winrm e selecione a seta ao lado de Configurar WinRM.
- 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, selecione OK novamente. - Selecione a guia Configurações avançadas e, para Endereço IP, selecione Público.
Nota
Se você usar o artefato WinRM com um endereço IP compartilhado, deverá adicionar uma regra NAT (conversão de endereços de rede) para mapear uma porta externa para a porta WinRM. Você não precisará da regra NAT se criar a VM com um endereço IP público. Para este passo a passo, crie a VM com um endereço IP público.
- Selecione Exibir modelo ARM.
- Copie o código do modelo e salve-o como um arquivo chamado CreateVMTemplate.json em sua ramificação de controle do código-fonte local.
- Faça check-in do modelo no sistema de controle do código-fonte do seu projeto.
Criar um script para obter propriedades de VM
Em seguida, crie um script para coletar os valores que etapas de tarefas como Cópia de Arquivo do Azure e PowerShell em Máquinas de Destino usam para implantar aplicativos em VMs. Normalmente, você usaria essas tarefas para implantar seus próprios aplicativos em suas VMs do Azure. As tarefas exigem valores como o nome do grupo de recursos da VM, o endereço IP e o FQDN.
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte 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.
Salve o script a seguir com um nome como GetLabVMParams.ps1 e faça check-in no sistema de controle do código-fonte do seu 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 liberação no Azure Pipelines. As tarefas de pipeline usam os valores atribuídos à VM quando você criou o modelo ARM.
- Na página do projeto Serviços de DevOps do Azure, selecione Pipelines>Releases na navegação à esquerda.
- Selecione Novo pipeline.
- No painel Selecionar um modelo, selecione Trabalho vazio.
- Feche o painel Palco .
- Na página Novo pipeline de versão, selecione a guia Variáveis.
- Selecione Adicionar e insira os seguintes pares Nome e Valor , selecionando Adicionar depois de adicionar cada um.
- vmName: O nome da VM que você atribuiu no modelo ARM.
- userName: O nome de usuário para acessar a VM.
- password: Palavra-passe para o nome de utilizador. Selecione o ícone de cadeado para ocultar e proteger a senha.
Adicionar um artefacto
- Na página novo pipeline de versão, na guia Pipeline , selecione Adicionar um artefato.
- No painel Adicionar um artefato, selecione Azure Repo.
- Na lista Projeto, selecione seu projeto de DevOps.
- Na lista Source (repositório), selecione seu repositório de origem.
- Na lista Ramificação padrão, selecione a ramificação para fazer check-out.
- Selecione Adicionar.
Criar uma VM do DevTest Labs
A próxima etapa cria uma VM de imagem dourada para usar em implantações futuras. Esta etapa usa a tarefa Criar VM do Azure DevTest Labs.
Na página do novo pipeline de versão, na guia Pipeline , selecione o texto com hiperlink no Estágio 1.
No painel esquerdo, selecione o sinal + de adição ao lado de Trabalho do agente.
Em Adicionar tarefas no painel direito, procure e selecione Azure DevTest Labs Create VM e selecione Adicionar.
No painel esquerdo, selecione a tarefa Criar VM do Azure DevTest Labs.
No painel do lado direito, preencha o formulário da seguinte forma:
Assinatura do Azure RM: selecione sua conexão de serviço ou assinatura na lista suspensa e selecione Autorizar , se necessário.
Nota
Para obter informações sobre como criar uma conexão de permissões mais restrita à sua assinatura do Azure, consulte 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: Procure e selecione o arquivo de modelo que você fez check-in no repositório do projeto.
Arquivo de parâmetros: Se você verificou um arquivo de parâmetros em seu repositório, procure e selecione-o.
Substituições de parâmetros: digite
-newVMName '$(vmName)' -userName '$(userName)' -password '$(password)'
.Menu suspenso Variáveis de saída e, em Nome de referência, insira a variável para o ID da VM de laboratório criado. Vamos inserir vm para Nome de referência para simplificar. labVmId será um atributo desta variável e será referido mais tarde como $vm.labVmId. Se você usar qualquer outro nome, lembre-se de usá-lo de acordo nas tarefas subsequentes.
O ID da VM do laboratório terá o seguinte formato:
/subscriptions/{subscription Id}/resourceGroups/{resource group Name}/providers/Microsoft.DevTestLab/labs/{lab name}/virtualMachines/{vmName}
.
Coletar os detalhes da VM do DevTest Labs
Em seguida, o pipeline executa o script criado para coletar os detalhes da VM do DevTest Labs.
- Na guia Tarefas do pipeline de liberação, selecione o sinal + de adição ao lado de Trabalho do agente.
- Em Adicionar tarefas no painel direito, procure e selecione Azure PowerShell e selecione Adicionar.
- No painel esquerdo, selecione o script do Azure PowerShell: tarefa FilePath .
- No painel direito, preencha o formulário da seguinte forma:
- Assinatura do Azure: selecione sua conexão de serviço ou assinatura.
- Tipo de script: Selecione Caminho do arquivo de script.
- Caminho do script: procure e selecione o script do PowerShell no qual você fez check-in no repositório do código-fonte. 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 os armazena em variáveis de ambiente dentro do pipeline de versão, para que você possa consultá-los em etapas posteriores.
Criar uma imagem de VM a partir da VM do DevTest Labs
A próxima tarefa cria uma imagem da VM recém-implantada em seu laboratório. Você pode usar a imagem para criar cópias da VM sob demanda para executar tarefas de desenvolvedor ou executar testes.
- Na guia Tarefas do pipeline de liberação, selecione o sinal + de adição ao lado de Trabalho do agente.
- Em Adicionar tarefas, selecione Azure DevTest Labs Create Custom Image e selecione Add.
- No painel esquerdo, selecione a tarefa Criar Imagem Personalizada do Azure DevTest Labs.
- No painel 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 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 padrão de ID de imagem personalizada, se necessário.
Implante seu aplicativo na VM do DevTest Labs (opcional)
Você pode adicionar tarefas para implantar seu aplicativo na nova VM do DevTest Labs. Se você quiser experimentar apenas a criação de uma VM do DevTest Labs e uma imagem personalizada, sem implantar um aplicativo, ignore esta etapa.
As tarefas que você normalmente usa para implantar aplicativos são a Cópia de Arquivo do Azure e o PowerShell em Máquinas de Destino. Você pode encontrar as informações de VM necessárias para os parâmetros da tarefa em três variáveis de configuração chamadas labVmRgName, labVMIpAddress e labVMFqdn dentro do pipeline de versão.
Elimine a VM
A tarefa final é excluir a VM que você implantou em seu laboratório. Normalmente, você excluiria a VM depois de executar as tarefas do desenvolvedor ou executar os testes necessários na VM implantada.
- Na guia Tarefas do pipeline de liberação, selecione o sinal + de adição ao lado de Trabalho do agente.
- Em Adicionar tarefas, selecione Azure DevTest Labs Excluir VM e selecione Adicionar.
- Configure a tarefa da seguinte maneira:
- Subscrição do Azure RM: Selecione a sua ligação de serviço ou subscrição.
- 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 , digite-o aqui. O valor padrão é $(labVmId).
Salve o pipeline de liberação
Para salvar o novo pipeline de versão:
- Selecione Novo pipeline de liberação na parte superior da página do pipeline de liberação e insira um novo nome para o pipeline.
- Selecione Salvar no canto superior direito.
Criar e executar uma versão
Para criar e executar uma versão usando o novo pipeline:
- Na página pipeline de liberação, selecione Criar liberação no canto superior direito.
- Em Artefactos, selecione a compilação mais recente e, em seguida, selecione Criar.
Em cada estágio de versão, você pode atualizar a exibição do seu 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.
Próximos passos
- Explore mais modelos ARM de início rápido para automação do DevTest Labs a partir do repositório público GitHub do DevTest Labs.
- Se necessário, consulte Solução de problemas do Azure Pipelines.