Implantar em VMs Linux em um ambiente
Serviços de DevOps do Azure | Azure DevOps Server 2022 | Azure DevOps Server 2020
Neste início rápido, você aprenderá a configurar um pipeline de DevOps do Azure para implantação em vários recursos de máquina virtual (VM) Linux em um ambiente. Você pode usar estas instruções para qualquer aplicativo que publique um pacote de implantação da Web.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Uma organização e um projeto do Azure DevOps. Inscreva-se no Azure Pipelines.
Para aplicativos JavaScript ou Node.js, pelo menos duas VMs Linux configuradas com Nginx no Azure.
Fork o código de exemplo
Se você já tiver um aplicativo no GitHub que deseja implantar, poderá criar um pipeline para esse código.
Se você for um novo usuário, bifurque este repositório no GitHub:
https://github.com/MicrosoftDocs/pipelines-javascript
Criar um ambiente com VMs Linux
Você pode adicionar VMs como recursos dentro de ambientes e direcioná-las para implantações de várias VMs. O histórico de implantação do ambiente fornece rastreabilidade da VM até a confirmação.
Adicionar um recurso de VM
No seu projeto de DevOps do Azure, vá para Ambientes de Pipelines>e selecione Criar ambiente ou Novo ambiente.
Na primeira tela Novo ambiente, adicione um Nome e uma Descrição opcional.
Em Recurso, selecione Máquinas virtuais e, em seguida, selecione Avançar.
Na próxima tela Novo ambiente , escolha Linux em Sistema operacional.
Copie o script de registro do Linux. O script é o mesmo para todas as VMs Linux adicionadas ao ambiente.
Nota
O Token de Acesso Pessoal (PAT) do usuário conectado é pré-inserido no script e expira após três horas.
Selecione Fechar e observe que o novo ambiente foi criado.
Execute o script copiado em cada VM de destino que você deseja registrar no ambiente.
Nota
Se a VM já tiver outro agente em execução, forneça um nome exclusivo para o agente se registrar no ambiente.
Depois que a VM é registrada, ela aparece como um recurso na guia Recursos do ambiente.
Para copiar o script novamente para criar mais recursos, por exemplo, se a PAT expirar, selecione Adicionar recurso na página do ambiente.
Adicionar e gerir etiquetas
As tags são uma maneira de direcionar um conjunto específico de VMs em um ambiente para implantação. Não há limite para o número de tags que você pode usar. As tags são limitadas a 256 caracteres cada.
Você pode adicionar tags ou remover tags para VMs no script de registro interativo ou por meio da interface do usuário selecionando Mais ações para um recurso de VM. Para este início rápido, atribua uma tag diferente a cada VM em seu ambiente.
Definir um pipeline de construção de CI
Você precisa de um pipeline de compilação de integração contínua (CI) que publique seu aplicativo Web e um script de implantação para ser executado localmente no servidor Linux. Configure seu pipeline de compilação de CI com base no tempo de execução que você deseja usar.
Importante
Durante os procedimentos do GitHub, você pode ser solicitado a criar uma conexão de serviço do GitHub ou ser redirecionado para o GitHub para entrar, instalar o Azure Pipelines ou autorizar o Azure Pipelines. Siga as instruções na tela para concluir o processo. Para obter mais informações, consulte Acesso a repositórios do GitHub.
- Em seu projeto do Azure DevOps, selecione Pipelines>Create Pipeline e, em seguida, selecione GitHub como o local do seu código-fonte.
- Na tela Selecione um repositório, selecione seu repositório de exemplo bifurcado.
- Na tela Configurar seu pipeline, selecione Pipeline inicial. O Azure Pipelines gera um arquivo YAML chamado azure-pipelines.yml para seu pipeline.
- Selecione o cursor suspenso ao lado de Salvar e executar, selecione Salvar e selecione Salvar novamente. O arquivo é salvo em seu repositório GitHub bifurcado.
Editar o código
Selecione Editar e substitua o conteúdo do arquivo azure-pipelines.yml pelo código a seguir. Você adiciona a este YAML em etapas futuras.
O código a seguir cria seu projeto Node.js com npm.
trigger:
- main
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
steps:
- task: UseNode@1
inputs:
version: '16.x'
displayName: 'Install Node.js'
- script: |
npm install
npm run build --if-present
npm run test --if-present
displayName: 'npm install, build and test'
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
artifact: drop
Para obter mais informações, revise as etapas em Criar seu aplicativo Node.js com gulp para criar uma compilação.
Execute seu pipeline
Selecione Validar e salvar, selecione Salvar, selecione Executar e selecione Executar novamente.
Após a execução do pipeline, verifique se a tarefa foi executada com êxito e se vê um artefacto publicado.
Implantar nas VMs do Linux
Edite seu pipeline para adicionar o seguinte trabalho de implantação. Substitua
<environment name>
pelo nome do ambiente criado anteriormente. Selecione VMs específicas do ambiente para receber a implantação, especificando o<VM tag>
que você definiu para cada VM.jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> # Update value for VMs to deploy to strategy:
Para obter mais informações, consulte a definição completa jobs.deployment.
Para obter mais informações sobre a palavra-chave e os recursos visados
environment
por um trabalho de implantação, consulte a definição jobs.deployment.environment.Especifique uma ou
runOnce
rolling
como uma implantaçãostrategy
.runOnce
é a estratégia de implantação mais simples. OspreDeploy
deploy
ganchos ,routeTraffic
, epostRouteTraffic
ciclo de vida são executados uma vez. Em seguida, ouon:
success
on:
failure
executa.O código a seguir mostra um trabalho de implantação para
runOnce
:jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> strategy: runOnce: deploy: steps: - script: echo my first deployment
O código a seguir mostra um trecho YAML para a estratégia de
rolling
implementação, usando um pipeline Java. Você pode atualizar até cinco destinos em cada iteração. OmaxParallel
parâmetro especifica o número de destinos que podem ser implantados em paralelo.A
maxParallel
seleção leva em conta o número absoluto ou a porcentagem de destinos que devem permanecer disponíveis a qualquer momento, excluindo os destinos que estão sendo implantados, e determina as condições de sucesso e falha durante a implantação.jobs: - deployment: VMDeploy displayName: web environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> strategy: rolling: maxParallel: 2 #for percentages, mention as x% preDeploy: steps: - download: current artifact: drop - script: echo initialize, cleanup, backup, install certs deploy: steps: - task: Bash@3 inputs: targetType: 'inline' script: | # Modify deployment script based on the app type echo "Starting deployment script run" sudo java -jar '$(Pipeline.Workspace)/drop/**/target/*.jar' routeTraffic: steps: - script: echo routing traffic postRouteTraffic: steps: - script: echo health check post-route traffic on: failure: steps: - script: echo Restore from backup! This is on failure success: steps: - script: echo Notify! This is on success
Com cada execução desse trabalho, o histórico de implantação é registrado no ambiente em que você criou e registrou as VMs.
Rastreabilidade do pipeline de acesso no ambiente
A visualização Implantações do ambiente fornece rastreabilidade completa de confirmações e itens de trabalho e um histórico de implantação entre pipelines para o ambiente.