Usar a Estrutura de Automação de Implantação do SAP no Azure DevOps Services

O Azure DevOps simplifica o processo de implantação, fornecendo pipelines que você pode executar para executar a implantação da infraestrutura e as atividades de configuração e instalação do SAP.

Você pode usar o Azure Repos para armazenar seus arquivos de configuração e usar o Azure Pipelines para implantar e configurar a infraestrutura e o aplicativo SAP.

Inscreva-se para o Azure DevOps Services

Para usar os Serviços de DevOps do Azure, você precisa de uma organização de DevOps do Azure. Uma organização é usada para conectar grupos de projetos relacionados. Use sua conta corporativa ou de estudante para conectar automaticamente sua organização à sua ID do Microsoft Entra. Para criar uma conta, abra o Azure DevOps e entre ou crie uma nova conta.

Configurar o Azure DevOps Services para a estrutura de automação de implantação do SAP

Você pode usar o script a seguir para fazer uma instalação básica do Azure DevOps Services for SAP Deployment Automation Framework.

Abra o ISE do PowerShell, copie o script a seguir e atualize os parâmetros para corresponder ao seu ambiente.

    $Env:SDAF_ADO_ORGANIZATION = "https://dev.azure.com/ORGANIZATIONNAME"
    $Env:SDAF_ADO_PROJECT = "SAP Deployment Automation Framework"
    $Env:SDAF_CONTROL_PLANE_CODE = "MGMT"
    $Env:SDAF_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"

    $Env:MSI_OBJECT_ID = $null

    $branchName = "main"
        
    $UniqueIdentifier = "SDAF" + $ShortCode
    
    if ($Env:ARM_TENANT_ID.Length -eq 0) {
      az login --output none --only-show-errors --scope https://graph.microsoft.com//.default
    }
    else {
      az login --output none --tenant $Env:ARM_TENANT_ID --only-show-errors --scope https://graph.microsoft.com//.default
    }

    az config set extension.use_dynamic_install=yes_without_prompt --only-show-errors

    az extension add --name azure-devops --only-show-errors

    $differentTenant = Read-Host "Is your Azure DevOps organization hosted in a different tenant than the one you are currently logged in to? y/n"
    if ($differentTenant -eq 'y') {
        $env:AZURE_DEVOPS_EXT_PAT = Read-Host "Please enter your Personal Access Token (PAT) with permissions to add new projects, manage agent pools to the Azure DevOps organization $Env:ADO_Organization"
        try {
            az devops project list
        }
        catch {
            $_
        }
    }
    
    $confirmationWebAppDeployment = Read-Host "Do you want to use the Web Application for editing the configuration files (recommended) y/n?"
    if ($confirmationWebAppDeployment -eq 'y') {
        $Env:SDAF_WEBAPP = "true"
        $confirmation = Read-Host "Do you want to create a new Application registration (needed for the Web Application) y/n?"
        if ($confirmation -eq 'y') {
            $Env:SDAF_APP_NAME = "SDAF " + $UniqueIdentifier + " SDAF Control Plane"
        }
        else {
            $Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
        }
    }
    else {
        $Env:SDAF_WEBAPP = "false"
    }
    
    $Env:SDAF_AuthenticationMethod = 'Managed Identity'
    
    $confirmationDeployment = Read-Host "Do you want to use Managed Identities for the deployment (recommended) y/n?"
    
    if ($confirmationDeployment -eq 'n') {
        $Env:SDAF_AuthenticationMethod = 'Service Principal'
         
        $confirmation = Read-Host "Do you want to create a new Service Principal for the Control plane y/n?"
        if ($confirmation -eq 'y') {
            $Env:SDAF_MGMT_SPN_NAME = "SDAF " + $UniqueIdentifier + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
        }
        else {
            $Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane Service Principal Name"
        }
        
    }
        
    if ( $PSVersionTable.Platform -eq "Unix") {
        if ( Test-Path "SDAF") {
        }
        else {
            $sdaf_path = New-Item -Path "SDAF" -Type Directory
        }
    }
    else {
        $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
        if ( Test-Path $sdaf_path) {
        }
        else {
            New-Item -Path $sdaf_path -Type Directory
        }
    }
        
    Set-Location -Path $sdaf_path
        
    if ( Test-Path "New-SDAFDevopsProject.ps1") {
        if ( $PSVersionTable.Platform -eq "Unix") {
            Remove-Item "New-SDAFDevopsProject.ps1"
        }
        else {
            Remove-Item ".\New-SDAFDevopsProject.ps1"
        }
    }
        
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/$branchName/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile New-SDAFDevopsProject.ps1 
    
    
    if ( $PSVersionTable.Platform -eq "Unix") {
        Unblock-File ./New-SDAFDevopsProject.ps1
        ./New-SDAFDevopsProject.ps1
    }
    else {
        Unblock-File .\New-SDAFDevopsProject.ps1
        .\New-SDAFDevopsProject.ps1
    }
    

Execute o script e siga as instruções. O script abre janelas do navegador para autenticação e para executar tarefas no projeto Azure DevOps.

Você pode optar por executar o código diretamente do GitHub ou importar uma cópia do código para o projeto do Azure DevOps.

Para confirmar que o projeto foi criado, vá para o portal de DevOps do Azure e selecione o projeto. Verifique se o repositório foi preenchido e se os pipelines foram criados.

Importante

Execute as etapas a seguir em sua estação de trabalho local. Verifique também se você tem a CLI do Azure mais recente instalada executando o az upgrade comando.

Configurar artefatos dos Serviços de DevOps do Azure para uma nova zona de carga de trabalho

Use o script a seguir para implantar os artefatos necessários para oferecer suporte a uma nova zona de carga de trabalho. Esse processo cria o grupo de variáveis e a conexão de serviço no Azure DevOps e, opcionalmente, a entidade de serviço de implantação.

Abra o ISE do PowerShell, copie o script a seguir e atualize os parâmetros para corresponder ao seu ambiente.

    $Env:SDAF_ADO_ORGANIZATION = "https://dev.azure.com/ORGANIZATIONNAME"
    $Env:SDAF_ADO_PROJECT = "SAP Deployment Automation Framework"
    $Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"
    
    if ( $PSVersionTable.Platform -eq "Unix") {
        if ( Test-Path "SDAF") {
        }
        else {
            $sdaf_path = New-Item -Path "SDAF" -Type Directory
        }
    }
    else {
        $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
        if ( Test-Path $sdaf_path) {
        }
        else {
            New-Item -Path $sdaf_path -Type Directory
        }
    }

    $branchName = "main"
    
    Set-Location -Path $sdaf_path
    
    if ( Test-Path "New-SDAFDevopsWorkloadZone.ps1") {
        remove-item .\New-SDAFDevopsWorkloadZone.ps1
    }
    
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/$branchName/deploy/scripts/New-SDAFDevopsWorkloadZone.ps1 -OutFile .\New-SDAFDevopsWorkloadZone.ps1 ; .\New-SDAFDevopsWorkloadZone.ps1
    

Criar uma configuração de plano de controle de exemplo

Você pode executar o pipeline para criar uma configuração de exemplo para o Create Sample Deployer Configuration plano de controle. Quando estiver em execução, escolha a região apropriada do Azure. Você também pode controlar se quiser implantar Firewall do Azure e o Azure Bastion.

Configuração manual do Azure DevOps Services for SAP Deployment Automation Framework

Você pode configurar manualmente os Serviços de DevOps do Azure para o SAP Deployment Automation Framework.

Crie um novo projeto

Você pode usar o Azure Repos para armazenar o código do repositório GitHub de automação sap e os arquivos de configuração do ambiente.

Abra o Azure DevOps e crie um novo projeto selecionando Novo Projeto e inserindo os detalhes do projeto. O projeto contém o repositório de controle de origem do Azure Repos e o Azure Pipelines para executar atividades de implantação.

Se você não vir Novo Projeto, verifique se você tem permissões para criar novos projetos na organização.

Registre a URL do projeto.

Importar o repositório

Comece importando o repositório GitHub do SAP Deployment Automation Framework Bootstrap para o Azure Repos.

Vá para a seção Repositórios e selecione Importar um repositório. Importe o repositório para o https://github.com/Azure/sap-automation-bootstrap.git Azure DevOps. Para obter mais informações, consulte Importar um repositório.

Se você não conseguir importar um repositório, poderá criá-lo manualmente. Em seguida, você pode importar o conteúdo do repositório GitHub Bootstrap do SAP Deployment Automation Framework para ele.

Criar o repositório para importação manual

Só execute esta etapa se não for possível importar o repositório diretamente.

Para criar o repositório de espaços de trabalho, na seção Repositórios , em Configurações do projeto, selecione Criar.

Escolha o repositório, insira Git e forneça um nome para o repositório. Por exemplo, use o SAP Configuration Repository.

Clonar o repositório

Para fornecer um recurso de edição mais abrangente do conteúdo, você pode clonar o repositório para uma pasta local e editar o conteúdo localmente.

Para clonar o repositório em uma pasta local, na seção Repositórios do portal, em Arquivos, selecione Clonar. Para obter mais informações, consulte Clonar um repositório.

Screenshot that shows how to clone the repository.

Importar manualmente o conteúdo do repositório usando um clone local

Você também pode baixar manualmente o conteúdo do repositório do SAP Deployment Automation Framework e adicioná-lo ao clone local do repositório do Azure DevOps.

Vá para o https://github.com/Azure/SAP-automation-samples repositório e faça download do conteúdo do repositório como um arquivo .zip. Selecione Código e escolha Baixar ZIP.

Copie o conteúdo do arquivo .zip para a pasta raiz do clone local.

Abra a pasta local no Visual Studio Code. Você deve ver que as alterações precisam ser sincronizadas pelo indicador pelo ícone de controle do código-fonte mostrado aqui.

Screenshot that shows that source code is changed.

Selecione o ícone de controle do código-fonte e forneça uma mensagem sobre a alteração. Por exemplo, insira Importar do GitHub e selecione Ctrl+Enter para confirmar as alterações. Em seguida, selecione Sincronizar alterações para sincronizar as alterações de volta ao repositório.

Escolha o código-fonte para o código Terraform e Ansible

Você pode executar o código do SAP Deployment Automation Framework diretamente do GitHub ou importá-lo localmente.

Executar o código a partir de um repositório local

Se você quiser executar o código do SAP Deployment Automation Framework do projeto local do Azure DevOps, será necessário criar um repositório de código separado e um repositório de configuração no projeto Azure DevOps:

  • Nome do repositório de configuração: Same as the DevOps Project name. Fonte é https://github.com/Azure/sap-automation-bootstrap.git.
  • Nome do repositório de código: sap-automation. Fonte é https://github.com/Azure/sap-automation.git.
  • Nome do repositório de amostra e modelo: sap-samples. Fonte é https://github.com/Azure/sap-automation-samples.git.

Execute o código diretamente do GitHub

Se você quiser executar o código diretamente do GitHub, precisará fornecer credenciais para que o Azure DevOps possa extrair o conteúdo do GitHub.

Criar a conexão de serviço do GitHub

Para efetuar pull do código do GitHub, você precisa de uma conexão de serviço do GitHub. Para obter mais informações, consulte Gerenciar conexões de serviço.

Para criar a conexão de serviço, vá para Configurações do Projeto e, na seção Pipelines, vá para Conexões de serviço.

Screenshot that shows how to create a service connection for GitHub.

Selecione GitHub como o tipo de conexão de serviço. Selecione Azure Pipelines na lista suspensa Configuração do OAuth.

Selecione Autorizar para entrar no GitHub.

Insira um nome de conexão de serviço, por exemplo, Conexão SDAF com o GitHub. Verifique se a caixa de seleção Conceder permissão de acesso para todos os pipelines está marcada. Selecione Salvar para salvar a conexão de serviço.

Configurar o aplicativo Web

Opcionalmente, a estrutura de automação provisiona um aplicativo Web como parte do painel de controle para ajudar com a zona de carga de trabalho do SAP e com os arquivos de configuração do sistema. Se você quiser usar o aplicativo Web, primeiro crie um registro de aplicativo para fins de autenticação. Abra o Azure Cloud Shell e execute os seguintes comandos.

Substitua MGMT pelo seu ambiente, conforme necessário.

echo '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' >> manifest.json

TF_VAR_app_registration_app_id=$(az ad app create --display-name MGMT-webapp-registration --enable-id-token-issuance true --sign-in-audience AzureADMyOrg --required-resource-access @manifest.json --query "appId" | tr -d '"')

echo $TF_VAR_app_registration_app_id

az ad app credential reset --id $TF_VAR_app_registration_app_id --append --query "password"

rm manifest.json

Salve a ID de registro do aplicativo e os valores de senha para uso posterior.

Criar o Azure Pipelines

Os Pipelines do Azure são implementados como arquivos YAML. Eles são armazenados na pasta deploy/pipelines no repositório.

Pipeline de implantação do plano de controle

Crie o pipeline de implantação do plano de controle. Na seção Pipelines, selecione New Pipeline. Selecione Azure Repos Git como a origem do seu código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configuração Valor
Repo "Root repo" (mesmo que o nome do projeto)
Branch main
Caminho pipelines/01-deploy-control-plane.yml
Nome Implantação do plano de controle

Salve o pipeline. Para ver Salvar, selecione a divisa ao lado de Executar. Vá para a seção Pipelines e selecione o pipeline. Escolha Renomear/Mover no menu de reticências à direita e renomeie o pipeline como Implantação do plano de controle.

Pipeline de implantação de zona de carga de trabalho SAP

Crie o pipeline de zona de carga de trabalho do SAP. Na seção Pipelines, selecione New Pipeline. Selecione Azure Repos Git como a origem do seu código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configuração Valor
Repo "Root repo" (mesmo que o nome do projeto)
Branch main
Caminho pipelines/02-sap-workload-zone.yml
Nome Implantação de zona de carga de trabalho SAP

Salve o pipeline. Para ver Salvar, selecione a divisa ao lado de Executar. Vá para a seção Pipelines e selecione o pipeline. Escolha Renomear/Mover no menu de reticências à direita e renomeie o pipeline como implantação de zona de carga de trabalho SAP.

Pipeline de implantação de sistema SAP

Crie o pipeline de implantação do sistema SAP. Na seção Pipelines, selecione New Pipeline. Selecione Azure Repos Git como a origem do seu código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configuração Valor
Repo "Root repo" (mesmo que o nome do projeto)
Branch main
Caminho pipelines/03-sap-system-deployment.yml
Nome Implantação do sistema SAP (infraestrutura)

Salve o pipeline. Para ver Salvar, selecione a divisa ao lado de Executar. Vá para a seção Pipelines e selecione o pipeline. Escolha Renomear/Mover no menu de reticências à direita e renomeie o pipeline como implantação do sistema SAP (infraestrutura).

Pipeline de aquisição de software SAP

Crie o pipeline de aquisição de software SAP. Na seção Pipelines, selecione New Pipeline. Selecione Azure Repos Git como a origem do seu código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configuração Valor
Repo "Root repo" (mesmo que o nome do projeto)
Branch main
Caminho deploy/pipelines/04-sap-software-download.yml
Nome Aquisição de software SAP

Salve o pipeline. Para ver Salvar, selecione a divisa ao lado de Executar. Vá para a seção Pipelines e selecione o pipeline. Escolha Renomear/Mover no menu de reticências à direita e renomeie o pipeline como aquisição de software SAP.

Pipeline de instalação de software e configuração do SAP

Crie o pipeline de configuração e instalação de software do SAP. Na seção Pipelines, selecione New Pipeline. Selecione Azure Repos Git como a origem do seu código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configuração Valor
Repo "Root repo" (mesmo que o nome do projeto)
Branch main
Caminho pipelines/05-DB-and-SAP-installation.yml
Nome Configuração e instalação do SAP

Salve o pipeline. Para ver Salvar, selecione a divisa ao lado de Executar. Vá para a seção Pipelines e selecione o pipeline. Escolha Renomear/Mover no menu de reticências à direita e renomeie o pipeline como configuração SAP e instalação de software.

Pipeline de remoção de implantação

Crie o pipeline de remoção de implantação. Na seção Pipelines, selecione New Pipeline. Selecione Azure Repos Git como a origem do seu código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configuração Valor
Repo "Root repo" (mesmo que o nome do projeto)
Branch main
Caminho pipelines/10-remover-terraform.yml
Nome Remoção da implantação

Salve o pipeline. Para ver Salvar, selecione a divisa ao lado de Executar. Vá para a seção Pipelines e selecione o pipeline. Escolha Renomear/Mover no menu de reticências à direita e renomeie o pipeline como Remoção de implantação.

Pipeline de remoção do painel de controle

Crie o pipeline de remoção de implantação do plano de controle. Na seção Pipelines, selecione New Pipeline. Selecione Azure Repos Git como a origem do seu código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configuração Valor
Repo "Root repo" (mesmo que o nome do projeto)
Branch main
Caminho pipelines/12-remove-control-plane.yml
Nome Remoção do painel de controle

Salve o pipeline. Para ver Salvar, selecione a divisa ao lado de Executar. Vá para a seção Pipelines e selecione o pipeline. Escolha Renomear/Mover no menu de reticências à direita e renomeie o pipeline como Remoção do plano de controle.

Pipeline de remoção de implantação usando o Gerenciador de Recursos do Azure

Crie o pipeline do Gerenciador de Recursos do Azure de remoção de implantação. Na seção Pipelines, selecione New Pipeline. Selecione Azure Repos Git como a origem do seu código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configuração Valor
Repo "Root repo" (mesmo que o nome do projeto)
Branch main
Caminho pipelines/11-remover-arm-fallback.yml
Nome Remoção de implantação usando o Gerenciador de Recursos do Azure

Salve o pipeline. Para ver Salvar, selecione a divisa ao lado de Executar. Vá para a seção Pipelines e selecione o pipeline. Escolha Renomear/Mover no menu de reticências à direita e renomeie o pipeline como Remoção de implantação usando o processador ARM.

Observação

Use esse pipeline apenas como último recurso. A remoção apenas dos grupos de recursos deixa resquícios que podem complicar as reimplantações.

Pipeline do atualizador de repositório

Crie o pipeline do atualizador do repositório. Na seção Pipelines, selecione New Pipeline. Selecione Azure Repos Git como a origem do seu código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configuração Valor
Repo "Root repo" (mesmo que o nome do projeto)
Branch main
Caminho pipelines/20-update-ado-repository.yml
Nome Atualizador de repositório

Salve o pipeline. Para ver Salvar, selecione a divisa ao lado de Executar. Vá para a seção Pipelines e selecione o pipeline. Escolha Renomear/Mover no menu de reticências à direita e renomeie o pipeline como atualizador do repositório.

Esse pipeline deve ser usado quando houver uma atualização no repositório de automação do SAP que você deseja usar.

Importar a tarefa de limpeza do Visual Studio Marketplace

Os pipelines usam uma tarefa personalizada para executar atividades de limpeza após a implantação. Você pode instalar a tarefa personalizada a partir da Limpeza de Pós-Compilação. Instale-o em sua organização de DevOps do Azure antes de executar os pipelines.

Preparativos para um agente auto-hospedado

  1. Crie um pool de agentes acessando Configurações Organizacionais. Na seção Pipelines, selecione Agent Pools>Add Pool. Selecione Auto-hospedado como o tipo de pool. Nomeie o pool para alinhar com o ambiente do plano de controle. Por exemplo, use MGMT-WEEU-POOL. Verifique se a opção Conceder permissão de acesso a todos os pipelines está selecionada e selecione Criar para criar o pool.

  2. Entre com a conta de usuário que você planeja usar em sua organização do Azure DevOps .

  3. Na página inicial, abra as configurações do usuário e selecione Tokens de acesso pessoal.

    Diagram that shows the creation of a personal access token.

  4. Crie um token de acesso pessoal com estas configurações:

    • Pools de agentes: selecione Ler e gerenciar.

    • Build: Selecione Read & execute.

    • Código: Selecione Ler e gravar.

    • Grupos de variáveis: selecione Ler, criar, & gerenciar.

      Anote o valor do token criado.

    Diagram that shows the attributes of the personal access token.

Definições disponíveis

Os pipelines de implantação são configurados para usar um conjunto de valores de parâmetros predefinidos definidos usando grupos de variáveis.

Variáveis comuns

As variáveis comuns são usadas por todos os pipelines de implantação. Eles são armazenados em um grupo de variáveis chamado SDAF-General.

Crie um novo grupo de variáveis nomeado SDAF-General usando a página Biblioteca na seção Pipelines . Adicione as seguintes variáveis:

Variável Valor Observações
Deployment_Configuration_Path WORKSPACES Para testar a configuração de exemplo, use samples/WORKSPACES em vez de WORKSPACES.
Branch main
Nome de usuário S <SAP Support user account name>
Senha S <SAP Support user password> Altere o tipo de variável para secreto selecionando o ícone de cadeado.
tf_version 1.6.0 A versão Terraform a ser usada. Veja o download do Terraform.

Salve as variáveis.

Como alternativa, você pode usar a CLI de DevOps do Azure para configurar os grupos.

s-user="<SAP Support user account name>"
s-password="<SAP Support user password>"

az devops login

az pipelines variable-group create --name SDAF-General --variables ANSIBLE_HOST_KEY_CHECKING=false Deployment_Configuration_Path=WORKSPACES Branch=main S-Username=$s-user S-Password=$s-password tf_varsion=1.3.0 --output yaml

Lembre-se de atribuir permissões para todos os pipelines usando permissões de pipeline.

Variáveis específicas do ambiente

Como cada ambiente pode ter credenciais de implantação diferentes, você precisa criar um grupo de variáveis por ambiente. Por exemplo, use SDAF-MGMT,SDAF-DEV e SDAF-QA.

Crie um novo grupo de variáveis nomeado SDAF-MGMT para o ambiente do plano de controle usando a página Biblioteca na seção Pipelines . Adicione as seguintes variáveis:

Variável Valor Observações
Agente Azure Pipelines ou o nome do pool de agentes Esse pool é criado em uma etapa posterior.
CP_ARM_CLIENT_ID Service principal application ID
CP_ARM_OBJECT_ID Service principal object ID
CP_ARM_CLIENT_SECRET Service principal password Altere o tipo de variável para secreto selecionando o ícone de cadeado.
CP_ARM_SUBSCRIPTION_ID Target subscription ID
CP_ARM_TENANT_ID Tenant ID para o responsável de serviço
AZURE_CONNECTION_NAME Nome da conexão criado anteriormente
sap_fqdn Nome de domínio totalmente qualificado SAP, por exemplo, sap.contoso.net Necessário somente se DNS privado não for usado.
FENCING_SPN_ID Service principal application ID para o agente de esgrima Necessário para implantações altamente disponíveis que usam uma entidade de serviço para o agente de cercamento.
FENCING_SPN_PWD Service principal password para o agente de esgrima Necessário para implantações altamente disponíveis que usam uma entidade de serviço para o agente de cercamento.
FENCING_SPN_TENANT Service principal tenant ID para o agente de esgrima Necessário para implantações altamente disponíveis que usam uma entidade de serviço para o agente de cercamento.
PAT <Personal Access Token> Use o token pessoal definido na etapa anterior.
POOL <Agent Pool name> O pool de agentes a ser usado para esse ambiente.
APP_REGISTRATION_APP_ID App registration application ID Obrigatório se estiver implantando o aplicativo Web.
WEB_APP_CLIENT_SECRET App registration password Obrigatório se estiver implantando o aplicativo Web.
SDAF_GENERAL_GROUP_ID A ID do grupo para o grupo SDAF-General O ID pode ser recuperado do parâmetro variableGroupId URL ao acessar o grupo de variáveis usando um navegador. Por exemplo: variableGroupId=8.
WORKLOADZONE_PIPELINE_ID A ID do SAP workload zone deployment pipeline A ID pode ser recuperada do parâmetro definitionId URL da página de pipeline no Azure DevOps. Por exemplo: definitionId=31.
SYSTEM_PIPELINE_ID A ID do SAP system deployment (infrastructure) pipeline A ID pode ser recuperada do parâmetro definitionId URL da página de pipeline no Azure DevOps. Por exemplo: definitionId=32.

Salve as variáveis.

Lembre-se de atribuir permissões para todos os pipelines usando permissões de pipeline.

Ao usar o aplicativo Web, verifique se o Serviço de Criação tem pelo menos permissões de Contribuição.

Você pode usar a funcionalidade de clone para criar o próximo grupo de variáveis de ambiente. APP_REGISTRATION_APP_ID, WEB_APP_CLIENT_SECRET, SDAF_GENERAL_GROUP_ID, WORKLOADZONE_PIPELINE_ID e SYSTEM_PIPELINE_ID somente são necessários para o grupo SDAF-MGMT.

Criar uma conexão de serviço

Para remover os recursos do Azure, você precisa de uma conexão de serviço do Azure Resource Manager. Para obter mais informações, consulte Gerenciar conexões de serviço.

Para criar a conexão de serviço, vá para Configurações do projeto. Na seção Pipelines, selecione Conexões de serviço.

Screenshot that shows how to create a service connection.

Selecione Azure Resource Manager como o tipo de conexão de serviço e Service principal (manual) como o método de autenticação. Insira a assinatura de destino, que normalmente é a assinatura do plano de controle. Insira os detalhes da entidade de serviço. Selecione Verificar para validar as credenciais. Para obter mais informações sobre como criar uma entidade de serviço, consulte Criar uma entidade de serviço.

Insira um nome de conexão de serviço, por exemplo, use Connection to MGMT subscription. Verifique se a caixa de seleção Conceder permissão de acesso para todos os pipelines está marcada. Selecione Verificar e salvar para salvar a conexão de serviço.

Permissões

A maioria dos pipelines adiciona arquivos aos repositórios do Azure e, portanto, requer permissões pull. Em Configurações do Projeto, na seção Repositórios , selecione a guia Segurança do repositório de código-fonte e atribua permissões do Contribute ao Build Service.

Screenshot that shows repository permissions.

Implantar o painel de controle

Pipelines recém-criados podem não estar visíveis na exibição padrão. Selecione a guia Recente e volte para Todas as guias para exibir os novos pipelines.

Selecione o pipeline de implantação do plano de controle e insira os nomes de configuração do implantador e da biblioteca SAP. Selecione Executar para implantar o plano de controle. Certifique-se de marcar a caixa de seleção Implantar o aplicativo Web de configuração se desejar configurar o aplicativo Web de configuração.

Configurar manualmente o agente auto-hospedado do Azure DevOps Services

A configuração manual só será necessária se o agente dos Serviços de DevOps do Azure não estiver configurado automaticamente. Verifique se o pool de agentes está vazio antes de continuar.

Para se conectar ao implantador:

  1. Entre no portal do Azure.

  2. Vá para o grupo de recursos que contém a máquina virtual do implementador.

  3. Conecte-se à máquina virtual usando o Azure Bastion.

  4. O nome de usuário padrão é azureadm.

  5. Selecione chave privada SSH no Azure Key Vault.

  6. Selecione a assinatura que contém o painel de controle.

  7. Selecione o cofre de chaves do implantador.

  8. Na lista de segredos, selecione o segredo que termina com -sshkey.

  9. Conectar-se à máquina virtual.

Execute o seguinte script para configurar o implementador:

mkdir -p ~/Azure_SAP_Automated_Deployment

cd ~/Azure_SAP_Automated_Deployment

git clone https://github.com/Azure/sap-automation.git

cd sap-automation/deploy/scripts

./configure_deployer.sh

Reinicialize o implantador, reconecte-se e execute o seguinte script para configurar o agente de DevOps do Azure:

cd ~/Azure_SAP_Automated_Deployment/

$DEPLOYMENT_REPO_PATH/deploy/scripts/setup_ado.sh

Aceite a licença e, quando for solicitada a URL do servidor, insira a URL capturada quando criou o projeto de DevOps do Azure. Para autenticação, selecione PAT e insira o valor do token da etapa anterior.

Quando solicitado, insira o nome do pool de aplicativos que você criou na etapa anterior. Aceite o nome do agente padrão e o nome da pasta de trabalho padrão. O agente agora está configurado e é iniciado.

Implantar o aplicativo Web do plano de controle

A seleção do parâmetro ao executar o pipeline de implantação do deploy the web app infrastructure plano de controle provisiona a infraestrutura necessária para hospedar o aplicativo Web. O pipeline Implantar aplicativo Web publica o software do aplicativo nessa infraestrutura.

Aguarde até que a implantação seja concluída. Selecione a guia Extensões e siga as instruções para finalizar a configuração. Atualize os reply-url valores para o registro do aplicativo.

Como resultado da execução do pipeline do plano de controle, parte da URL do aplicativo Web necessária é armazenada em uma variável nomeada WEBAPP_URL_BASE no grupo de variáveis específicas do ambiente. A qualquer momento, você pode atualizar as URLs do aplicativo Web de aplicativo registrado usando o comando a seguir.

webapp_url_base=<WEBAPP_URL_BASE>
az ad app update --id $TF_VAR_app_registration_app_id --web-home-page-url https://${webapp_url_base}.azurewebsites.net --web-redirect-uris https://${webapp_url_base}.azurewebsites.net/ https://${webapp_url_base}.azurewebsites.net/.auth/login/aad/callback

Você também precisa conceder permissões de leitor para a identidade gerenciada atribuída ao sistema de serviço de aplicativo. Vá para o recurso de serviço de aplicativo. No lado esquerdo, selecione Identidade. Na guia Sistema atribuído, selecione Atribuições de função do Azure Adicionar atribuição de>função. Selecione Assinatura como escopo e Leitor como função. Em seguida, selecione Salvar. Sem essa etapa, a funcionalidade suspensa do aplicativo Web não funcionará.

Agora você deve ser capaz de visitar o aplicativo Web e usá-lo para implantar zonas de carga de trabalho SAP e infraestrutura do sistema SAP.

Próxima etapa