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
- Acesso à instância do Azure Stack Hub com o RP Serviço de Aplicações ativado.
- Uma solução do Azure DevOps associada ao inquilino do Azure Stack Hub.
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 .\
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. Abra a sua ferramenta de linha de comandos, como Windows PowerShell ou Bash e inicie sessão. Utilize o seguinte comando:
az login
Utilize o
register
comando para um novo ambiente ou oupdate
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
Obtenha o ID da subscrição e o grupo de recursos que pretende utilizar para o SPN.
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
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
- Inicie sessão no portal do Azure Stack Hub.
- Selecione Criar um recurso> Web +Aplicação WebMóvel>.
- Selecione a sua Subscrição.
- Criar ou selecionar um Grupo de Recursos.
- 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>
- 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.
- Selecione o Sistema Operativo (SO) que irá alojar o runtime e a aplicação.
- Selecione ou escreva a Região da instância do Azure Stack Hub.
- Selecione o plano com base na instância, região e SO da aplicação do Azure Stack Hub.
- Selecione Rever + Criar.
- Reveja a sua aplicação Web. Selecione Criar.
- Selecione Ir para recurso.
- 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.
Inicie sessão na sua organização do Azure DevOps e, em seguida, navegue para o seu projeto.
Selecione Definições do projeto e, em seguida, selecione Ligações de serviço.
Selecione Ligações de serviço>Nova ligação de serviço.
Selecione Azure Resource Manager e, em seguida, selecione Seguinte.
Selecione Principal de serviço (manual).
Selecione Azure Stack em Ambiente.
Preencha o formulário e, em seguida, selecione Verificar e guardar.
Atribua um nome à sua ligação de serviço. (Precisará do nome da ligação de serviço para criar o pipeline yaml).
Criar o seu repositório e adicionar pipeline
Se ainda não adicionou o código da aplicação Web ao repositório, adicione-o agora.
Abra o repositório. Selecione o repositório e selecione Procurar.
Selecionar Pipelines
Selecione Novo pipeline.
Selecione Repositórios do Azure Git.
Selecione o seu repositório.
Selecione Pipeline de arranque.
Navegue de volta para o repositório e abra o
azure-pipelines.yml
.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 valortrue
no pipeline de compilação ou versão, como neste exemplo.Atualize o
azureSubscription
valor com o nome da sua ligação de serviço.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:
- Azure PowerShell
- Cópia de Ficheiros do Azure
- Implementação do Grupo de Recursos do Azure
- Serviço de Aplicações do Azure Implementar
- Serviço de Aplicações do Azure Gerir
- Implementação da Base de Dados SQL do Azure