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
- Acesso à instância do Azure Stack Hub com o RP Serviço de Aplicativo habilitado.
- Uma solução do Azure DevOps associada ao locatário do Azure Stack Hub.
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 \
.
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. Abra sua ferramenta de linha de comando, como Windows PowerShell ou Bash, e entre. Use o seguinte comando:
az login
Use o comando
register
para um novo ambiente ou o comandoupdate
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
Obtenha a ID da assinatura e o grupo de recursos que você deseja usar para o SPN.
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
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
- Entre no portal do Azure Stack Hub.
- Selecione Criar um recurso>Web + Mobile>Aplicativo da Web.
- Selecione sua Assinatura.
- Crie ou selecione um Grupo de Recursos.
- Digite o Nome do seu aplicativo. O nome do aplicativo aparecerá na URL do seu aplicativo, por exemplo,
yourappname.appservice.<region>.<FQDN>
- Selecione a Pilha de runtime do seu aplicativo. O runtime precisa corresponder ao código que você planeja usar para seu aplicativo Web.
- Selecione o Sistema Operacional que hospedará o runtime e o aplicativo.
- Selecione ou digite a Região para sua instância do Azure Stack Hub.
- Selecione o plano com base na instância, região e sistema operacional do aplicativo do Azure Stack Hub.
- Selecione Examinar + criar.
- Examine o seu aplicativo Web. Selecione Criar.
- Selecione Ir para o recurso.
- 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.
Entre na sua organização do Azure DevOps e navegue até seu projeto.
Selecione Configurações do projeto e, em seguida, selecione Conexões de serviço.
Selecione Conexões de serviço>Nova conexão de serviço.
Selecione Azure Resource Manager e, em seguida, Avançar.
Selecione Entidade de serviço (manual).
Selecione Azure Stack em Ambiente.
Preencha o formulário e selecione Verificar e salvar.
Dê um nome à conexão de serviço. (Você precisará do nome da conexão de serviço para criar seu pipeline yaml).
Criar seu repositório e adicionar pipeline
Se você ainda não adicionou o código do aplicativo Web ao repositório, adicione-o agora.
Abra o repositório. Selecione o repositório e selecione Procurar.
Selecione Pipelines
Selecione Novo pipeline.
Selecionar Git do Azure Repos.
Selecione seu repositório.
Selecione Pipeline de início.
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)'
Observação
Para ignorar erros de SSL, defina uma variável chamada
VSTS_ARM_REST_IGNORE_SSL_ERRORS
para o valortrue
no pipeline de build ou lançamento, como neste exemplo.Atualize o valor
azureSubscription
com o nome da conexão de serviço.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:
- PowerShell do Azure
- Cópia de Arquivos do Azure
- Implantação do Grupo de Recursos do Azure
- Implantação do Serviço de Aplicativo do Azure
- Gerenciamento do Serviço de Aplicativo do Azure
- Implantação do Banco de Dados SQL do Azure