Implantar no Serviço de Aplicativo do Azure Stack Hub usando o Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Este artigo explica como configurar um pipeline de CI/CD para implantar um aplicativo nos serviços de aplicativo em uma instância do Azure Stack Hub usando o Azure Pipelines.

Neste artigo, você pode aprender a criar ou validar:

  • Credenciais de SPN (nome da entidade de serviço) do Azure Stack Hub para o pipeline.
  • Um aplicativo Web em sua instância do Azure Stack Hub.
  • Uma conexão de serviço com sua instância do Azure Stack Hub.
  • Um repositório com o código do aplicativo a ser implantado em seu aplicativo

Pré-requisitos

Criar ou validar seu SPN

Um SPN fornece credenciais baseadas em função para que os processos fora do Azure possam se conectar e interagir com os recursos. Você precisará de um SPN com acesso de colaborador e os atributos especificados nestas instruções para usar com o pipeline do Azure DevOps.

Como usuário do Azure Stack Hub, você não tem permissão para criar o SPN. Você precisará solicitar essa entidade de segurança do operador de nuvem. As instruções estão sendo fornecidas aqui para que você possa criar o SPN se for um operador de nuvem ou validar o SPN se for um desenvolvedor usando um SPN em seu fluxo de trabalho fornecido por um operador de nuvem.

O operador de nuvem precisará criar o SPN usando a CLI do Azure.

Os snippets de código a seguir são escritos para um computador Windows usando o prompt do PowerShell com a CLI do Azure para o Azure Stack Hub. Se você estiver usando a CLI em um computador Linux e bash, remova a extensão de linha ou substitua-a por um \.

  1. Prepare os valores dos seguintes parâmetros usados para criar o SPN:

    Parâmetro Exemplo Descrição
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" O ponto de extremidade de gerenciamento de recursos.
    suffix-storage-endpoint "orlando.azurestack.corp.microsoft.com" O sufixo de ponto de extremidade para contas de armazenamento.
    suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" O sufixo DNS do serviço Key Vault.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" A ID de recurso do Active Directory.
    endpoint-sql-management https://notsupported O ponto de extremidade de gerenciamento do SQL Server. Defina-o como https://notsupported
    perfil 2019-03-01-hybrid O perfil a ser usado para essa nuvem.
  2. Abra sua ferramenta de linha de comando, como Windows PowerShell ou Bash, e entre. Use o seguinte comando:

    az login
    
  3. Use o comando register para um novo ambiente ou o comando update se você estiver usando um ambiente existente. Use o comando a seguir.

    az cloud register `
        -n "AzureStackUser" `
        --endpoint-resource-manager "https://management.<local>.<FQDN>" `
        --suffix-storage-endpoint ".<local>.<FQDN>" `
        --suffix-keyvault-dns ".vault.<local>.<FQDN>" `
        --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" `
        --endpoint-sql-management https://notsupported  `
        --profile 2019-03-01-hybrid
    
  4. Obtenha a ID da assinatura e o grupo de recursos que você deseja usar para o SPN.

  5. Crie o SPN com o seguinte comando com a ID da assinatura e o grupo de recursos:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    

    Se você não tiver privilégios de operador de nuvem, também poderá entrar com o SPN fornecido pelo operador de nuvem. Você precisará da ID do cliente, do segredo e da ID do locatário. Com esses valores, você pode usar os comandos da CLI do Azure a seguir para criar o objeto JSON que contém os valores necessários para criar sua conexão de serviço.

    az login --service-principal -u "<client-id>" -p "<secret>" --tenant "<tenant-ID>" --allow-no-subscriptions
    az account show
    
  6. Verifique o objeto JSON resultante. Você usará o objeto JSON para criar sua conexão de serviço. O objeto JSON deve ter os seguintes atributos:

    {
      "environmentName": "<Environment name>",
      "homeTenantId": "<Tenant ID for the SPN>",
      "id": "<Application ID for the SPN>",
      "isDefault": true,
      "managedByTenants": [],
      "name": "<Tenant name>",
      "state": "Enabled",
      "tenantId": "<Tenant ID for the SPN>",
      "user": {
        "name": "<User email address>",
        "type": "user"
      }
    }
    

Criar o projeto de aplicativo Web

  1. Entre no portal do Azure Stack Hub.
  2. Selecione Criar um recurso>Web + Mobile>Aplicativo da Web.
  3. Selecione sua Assinatura.
  4. Crie ou selecione um Grupo de Recursos.
  5. Digite o Nome do seu aplicativo. O nome do aplicativo aparecerá na URL do seu aplicativo, por exemplo, yourappname.appservice.<region>.<FQDN>
  6. Selecione a Pilha de runtime do seu aplicativo. O runtime precisa corresponder ao código que você planeja usar para seu aplicativo Web.
  7. Selecione o Sistema Operacional que hospedará o runtime e o aplicativo.
  8. Selecione ou digite a Região para sua instância do Azure Stack Hub.
  9. Selecione o plano com base na instância, região e sistema operacional do aplicativo do Azure Stack Hub.
  10. Selecione Examinar + criar.
  11. Examine o seu aplicativo Web. Selecione Criar.
  12. Selecione Ir para o recurso.
  13. Anote o nome do aplicativo. Você adicionará o nome ao documento yml que define o pipeline no repositório.

Criar uma conexão de serviço

Crie uma conexão de serviço. Você precisará dos valores do SPN e do nome da sua assinatura do Azure Stack Hub.

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Configurações do projeto e, em seguida, selecione Conexões de serviço.

  3. Selecione Conexões de serviço>Nova conexão de serviço.

  4. Selecione Azure Resource Manager e, em seguida, Avançar.

  5. Selecione Entidade de serviço (manual).

  6. Selecione Azure Stack em Ambiente.

  7. Preencha o formulário e selecione Verificar e salvar.

  8. Dê um nome à conexão de serviço. (Você precisará do nome da conexão de serviço para criar seu pipeline yaml).

    Criar uma conexão de serviço para o Azure Stack Hub

Criar seu repositório e adicionar pipeline

  1. Se você ainda não adicionou o código do aplicativo Web ao repositório, adicione-o agora.

  2. Abra o repositório. Selecione o repositório e selecione Procurar.

  3. Selecione Pipelines

  4. Selecione Novo pipeline.

  5. Selecionar Git do Azure Repos.

  6. Selecione seu repositório.

  7. Selecione Pipeline de início.

  8. Navegue de volta para o repositório e abra o azure-pipelines.yml.

  9. Adicione o seguinte yaml:

    # Starter pipeline
    # Start with a minimal pipeline that you can customize to build and deploy your code.
    # Add steps that build, run tests, deploy, and more:
    # https://aka.ms/yaml
    trigger:
    - main
    variables:
      azureSubscription: '<your connection name>'
      VSTS_ARM_REST_IGNORE_SSL_ERRORS: true
    steps:
    - task: AzureWebApp@1
      displayName: Azure Web App Deploy
      inputs:
        azureSubscription: $(azureSubscription)
        appName: <your-app-name>
        package: '$(System.DefaultWorkingDirectory)'
    

    Observação

    Para ignorar erros de SSL, defina uma variável chamada VSTS_ARM_REST_IGNORE_SSL_ERRORS para o valor true no pipeline de build ou lançamento, como neste exemplo.

  10. Atualize o valor azureSubscription com o nome da conexão de serviço.

  11. Atualize o com o nome do aplicativo appName. Agora, você está pronto para implantar.

Observações sobre como usar tarefas do Azure com o Azure Stack Hub

As seguintes tarefas do Azure são validadas com o Azure Stack Hub:

Próximas etapas