Compartilhar via


Início Rápido: Usar um modelo do ARM para implantar um aplicativo Web Linux no Azure

Azure DevOps Services

Comece a usar modelos do ARM (modelos do ARM) do Azure Resource Manager implantando um aplicativo Web Linux com MySQL. Os modelos do ARM oferecem uma maneira de salvar sua configuração no código. O uso de um modelo do ARM é um exemplo de infraestrutura como código e uma boa prática de DevOps.

Um modelo ARM é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do projeto. O modelo usa a sintaxe declarativa. Na sintaxe declarativa, você descreve a implantação pretendida sem gravar a sequência de comandos de programação para criar a implantação.

Você pode usar a sintaxe JSON ou Bicep para implantar recursos do Azure. Saiba mais sobre a diferença entre JSON e Bicep para modelos.

Pré-requisitos

Antes de começar, você precisa de:

Obter o código

Crie um fork neste repositório no GitHub:

https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-linux-managed-mysql

Examinar o modelo

O modelo usado neste início rápido é proveniente dos Modelos de Início Rápido do Azure.

O modelo define vários recursos:

Criar o pipeline e implantar o modelo

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto. Crie um projeto se você ainda não tiver um.

  2. Vá para Pipelines e, em seguida, selecione Criar Pipeline.

  3. Selecione GitHub como o local do código-fonte.

    Observação

    Você pode ser redirecionado para o GitHub a fim de se conectar. Nesse caso, insira suas credenciais do GitHub.

  4. Quando a lista de repositórios for exibida, selecione yourname/azure-quickstart-templates/.

    Observação

    Você poderá ser redirecionado ao GitHub para instalar o aplicativo do Azure Pipelines. Nesse caso, selecione Approve and install.

  5. Quando a guia Configurar for exibida, selecione Starter pipeline.

  6. Substitua o conteúdo do pipeline por este código:

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. Crie três variáveis: siteName, administratorLogin e adminPass. adminPass precisa ser uma variável secreta.

    • Selecione Variáveis.
    • Use o sinal + para adicionar três variáveis. Ao criar adminPass, selecione Manter esse valor em segredo.
    • Clique em Salvar quando terminar.
    Variável Valor Segredo?
    siteName mytestsite Não
    adminUser fabrikam Não
    adminPass Fqdn:5362! Sim
  8. Mapeie a variável $(adminPass) secreta para que ela fique disponível em sua tarefa Implantação do Grupo de Recursos do Azure. Na parte superior do arquivo YAML, mapeie $(adminPass) para $(ARM_PASS).

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. Adicione a tarefa Copiar Arquivos ao arquivo YAML. Você usará o projeto 101-webapp-linux-managed-mysql. Para obter mais informações e mais detalhes, confira Criar um aplicativo Web no Linux com o repositório do Banco de Dados do Azure para MySQL.

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    - task: CopyFiles@2
      inputs:
        SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
  10. Adicione e configure a tarefa Implantação do Grupo de Recursos do Azure.

    A tarefa faz referência ao artefato que você criou com a tarefa Copiar Arquivos e suas variáveis de pipeline. Defina esses valores ao configurar sua tarefa.

    • Escopo de implantação (deploymentScope): defina o escopo da implantação como Resource Group. Você pode direcionar sua implantação para um grupo de gerenciamento, uma assinatura do Azure ou um grupo de recursos.
    • Conexão do Azure Resource Manager (azureResourceManagerConnection): selecione sua conexão de serviço do Azure Resource Manager. Para configurar a nova conexão de serviço, selecione a assinatura do Azure na lista e clique em Autorizar. Confira Conectar-se ao Microsoft Azure para obter mais detalhes
    • Assinatura (subscriptionId): selecione a assinatura para onde a implantação deve ir.
    • Ação (action): defina como Create or update resource group para criar um grupo de recursos ou atualizar um existente.
    • Grupo de recursos: defina como ARMPipelinesLAMP-rg para nomear seu novo grupo de recursos. Se esse for um grupo de recursos existente, ele será atualizado.
    • Local(local): local onde implantar o grupo de recursos. Defina como o local mais próximo (por exemplo, Oeste dos EUA). Se o grupo de recursos já existir em sua assinatura, esse valor será ignorado.
    • Local do modelo (templateLocation): definido como Linked artifact. Esse é o local do modelo e dos arquivos de parâmetros.
    • Modelo (csmFile): definido como $(Build.ArtifactStagingDirectory)/azuredeploy.json. Esse é o caminho para o modelo do ARM.
    • Parâmetros de modelo (csmParametersFile): definido como $(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json. Esse é o caminho para o arquivo de parâmetros do modelo do ARM.
    • Substituir parâmetros de modelo (overrideParameters): defina como -siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS) para usar as variáveis criadas anteriormente. Esses valores substituirão os parâmetros definidos no arquivo de parâmetros de modelo.
    • Modo de implantação (deploymentMode): a maneira como os recursos devem ser implantados. Defina como Incremental. O incremental mantém os recursos que não estão no modelo do ARM e são mais rápidos do que Complete. O modo Validate permite encontrar problemas com o modelo antes da implantação.
    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    - task: CopyFiles@2
      inputs:
        SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: AzureResourceManagerTemplateDeployment@3
      inputs:
        deploymentScope: 'Resource Group'
        azureResourceManagerConnection: '<your-resource-manager-connection>'
        subscriptionId: '<your-subscription-id>'
        action: 'Create Or Update Resource Group'
        resourceGroupName: 'ARMPipelinesLAMP-rg'
        location: '<your-closest-location>'
        templateLocation: 'Linked artifact'
        csmFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.json'
        csmParametersFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json'
        overrideParameters: '-siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS)'
        deploymentMode: 'Incremental'
    
  11. Clique em Salvar e executar para implantar seu modelo. O trabalho de pipeline será iniciado e, após alguns minutos, dependendo do agente, o status do trabalho deve indicar Success.

Examinar os recursos implantados

  1. Verifique se os recursos foram implantados. Acesse o grupo de recursos ARMPipelinesLAMP-rg no portal do Azure e verifique se você vê o Serviço de Aplicativo, o Plano do Serviço de Aplicativo e os recursos do servidor do Banco de Dados do Azure para MySQL.

    Recursos de modelo do ARM no portal do Azure

    Você também pode verificar os recursos usando a CLI do Azure.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Vá para seu novo site. Se você definir siteName como armpipelinetestsite, o site estará localizado em https://armpipelinetestsite.azurewebsites.net/.

Limpar os recursos

Você também pode usar um modelo do ARM para excluir recursos. Altere o valor action na tarefa Implantação do Grupo de Recursos do Azure para DeleteRG. Você também pode remover as entradas para templateLocation, csmFile, csmParametersFile, overrideParameters e deploymentMode.

variables:
  ARM_PASS: $(adminPass)

trigger:
- none

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: CopyFiles@2
  inputs:
    SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
    Contents: '**'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: AzureResourceManagerTemplateDeployment@3
  inputs:
    deploymentScope: 'Resource Group'
    azureResourceManagerConnection: '<your-resource-manager-connection>'
    subscriptionId: '<your-subscription-id>'
    action: 'DeleteRG'
    resourceGroupName: 'ARMPipelinesLAMP-rg'
    location: ''<your-closest-location>'

Próximas etapas