Implementar no Azure Stack Hub Serviço de Aplicações com o Azure Pipelines

Serviços do Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Este artigo explica-lhe como configurar um pipeline ci/CD para implementar uma aplicação em serviços de aplicações numa instância do Azure Stack Hub com o Azure Pipelines.

Neste artigo, pode aprender a criar ou validar:

  • Credenciais do principal de serviço (SPN) do Azure Stack Hub para o pipeline.
  • Uma aplicação Web na instância do Azure Stack Hub.
  • Uma ligação de serviço à instância do Azure Stack Hub.
  • Um repositório com o código da aplicação para implementar na sua aplicação

Pré-requisitos

Criar ou validar o SPN

Um SPN fornece credenciais baseadas em funções para que os processos fora do Azure possam ligar-se e interagir com recursos. Precisará de um SPN com acesso de contribuidor e os atributos especificados nestas instruções para utilizar com o pipeline do Azure DevOps.

Como utilizador do Azure Stack Hub, não tem permissão para criar o SPN. Terá de pedir este principal ao operador da cloud. As instruções estão a ser fornecidas aqui para que possa criar o SPN se for um operador da cloud ou se conseguir validar o SPN se for um programador a utilizar um SPN no fluxo de trabalho fornecido por um operador da cloud.

O operador da cloud terá de criar o SPN com a CLI do Azure.

Os fragmentos de código seguintes são escritos para um computador Windows com a linha de comandos do PowerShell com a CLI do Azure para o Azure Stack Hub. Se estiver a utilizar a CLI num computador Linux e bash, remova a extensão de linha ou substitua-a por .\

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

    Parâmetro Exemplo Descrição
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" O ponto final de gestão de recursos.
    sufixo-storage-endpoint "orlando.azurestack.corp.microsoft.com" O sufixo de ponto final para contas de armazenamento.
    sufixo-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/" O ID de recurso do Active Directory.
    endpoint-sql-management https://notsupported O ponto final de gestão do sql server. Defina esta opção como https://notsupported
    perfil 03-01-2019-híbrido Perfil a utilizar para esta cloud.
  2. Abra a sua ferramenta de linha de comandos, como Windows PowerShell ou Bash e inicie sessão. Utilize o seguinte comando:

    az login
    
  3. Utilize o register comando para um novo ambiente ou o update comando se estiver a utilizar um ambiente existente. Utilize o seguinte comando.

    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 o ID da subscrição e o grupo de recursos que pretende utilizar para o SPN.

  5. Crie o SPN com o seguinte comando com o ID da subscrição 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 não tiver privilégios de operador da cloud, também pode iniciar sessão com o SPN que lhe foi fornecido pelo operador da cloud. Precisará do ID do cliente, do segredo e do ID do inquilino. Com estes valores, pode utilizar os seguintes comandos da CLI do Azure para criar o objeto JSON que contém os valores necessários para criar a ligaçã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. Irá utilizar o objeto JSON para criar a sua ligaçã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 destino da aplicação Web

  1. Inicie sessão no portal do Azure Stack Hub.
  2. Selecione Criar um recurso> Web +Aplicação WebMóvel>.
  3. Selecione a sua Subscrição.
  4. Criar ou selecionar um Grupo de Recursos.
  5. Escreva o Nome da sua aplicação. O nome da aplicação será apresentado no URL da sua aplicação, por exemplo, yourappname.appservice.<region>.<FQDN>
  6. Selecione a pilha Runtime para a sua aplicação. O runtime tem de corresponder ao código que planeia utilizar para a sua aplicação Web.
  7. Selecione o Sistema Operativo (SO) que irá alojar o runtime e a aplicação.
  8. Selecione ou escreva a Região da instância do Azure Stack Hub.
  9. Selecione o plano com base na instância, região e SO da aplicação do Azure Stack Hub.
  10. Selecione Rever + Criar.
  11. Reveja a sua aplicação Web. Selecione Criar.
  12. Selecione Ir para recurso.
  13. Tome nota do nome da sua aplicação. Irá adicionar o nome ao documento yml que define o pipeline no seu repositório.

Criar uma ligação de serviço

Crie uma ligação de serviço. Precisará dos valores do SPN e do nome da sua subscrição do Azure Stack Hub.

  1. Inicie sessão na sua organização do Azure DevOps e, em seguida, navegue para o seu projeto.

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

  3. Selecione Ligações de serviço>Nova ligação de serviço.

  4. Selecione Azure Resource Manager e, em seguida, selecione Seguinte.

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

  6. Selecione Azure Stack em Ambiente.

  7. Preencha o formulário e, em seguida, selecione Verificar e guardar.

  8. Atribua um nome à sua ligação de serviço. (Precisará do nome da ligação de serviço para criar o pipeline yaml).

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

Criar o seu repositório e adicionar pipeline

  1. Se ainda não adicionou o código da aplicação Web ao repositório, adicione-o agora.

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

  3. Selecionar Pipelines

  4. Selecione Novo pipeline.

  5. Selecione Repositórios do Azure Git.

  6. Selecione o seu repositório.

  7. Selecione Pipeline de arranque.

  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)'
    

    Nota

    Para ignorar erros de SSL, defina uma variável com o nome VSTS_ARM_REST_IGNORE_SSL_ERRORS para o valor true no pipeline de compilação ou versão, como neste exemplo.

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

  11. Atualize o com o appName nome da sua aplicação. Está agora pronto para implementar.

Notas sobre como utilizar tarefas do Azure com o Azure Stack Hub

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

Passos seguintes