Compartilhar via


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 o Azure DevOps Services, você precisa de uma organização do Azure DevOps. Uma organização é usada para conectar grupos de projetos relacionados. Use sua conta corporativa ou de estudante para conectar automaticamente sua organização ao seu Microsoft Entra ID. Para criar uma conta, abra o Azure DevOps e entre ou crie uma conta.

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

Você pode usar o script a seguir para fazer uma instalação básica do Azure DevOps Services para 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 do 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 se o projeto foi criado, acesse o portal do Azure DevOps 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 comando az upgrade.

Configurar artefatos do Azure DevOps Services para uma nova zona de carga de trabalho

Use o script a seguir para implantar os artefatos necessários para dar 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 Create Sample Deployer Configuration pipeline para criar uma configuração de exemplo para o plano de controle. Quando estiver em execução, escolha a região apropriada do Azure. Você também pode controlar se quiser implantar o Firewall do Azure e o Azure Bastion.

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

Você pode configurar manualmente o Azure DevOps Services para o SAP Deployment Automation Framework.

Criar um novo projeto

Você pode usar o Azure Repos para armazenar o código do repositório GitHub de automação sap e dos 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 do código-fonte do Azure Repos e o Azure Pipelines para executar atividades de implantação.

Se você não vir o 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 https://github.com/Azure/sap-automation-bootstrap.git para o Azure DevOps. Para obter mais informações, consulte Importar um repositório.

Se não for possível importar um repositório, você poderá criar o repositório 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

Faça essa etapa somente se não for possível importar o repositório diretamente.

Para criar o repositório de workspaces , na seção Repos , nas configurações do Project, selecione Criar.

Escolha o repositório, insira o Git e forneça um nome para o repositório. Por exemplo, use o Repositório de Configuração do SAP.

Clonar o repositório

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

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

Captura de tela que mostra como clonar o repositório.

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 baixe o conteúdo do repositório como um arquivo de .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 do ícone de controle de código-fonte mostrado aqui.

Captura de tela que mostra que o código-fonte foi alterado.

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 a origem 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 de um repositório local

Se você quiser executar o código do SAP Deployment Automation Framework no 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 do Azure DevOps:

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

Executar 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.

Captura de tela que mostra como criar uma conexão de serviço para o GitHub.

Selecione o 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á selecionada. 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 plano de controle para ajudar com a zona de carga de trabalho do SAP e 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 comandos a seguir.

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.

Crie o Azure Pipelines

Os Azure Pipelines 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 Novo Pipeline. Selecione o Git do Azure Repos como a origem do código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configurações Valor
Repositório "Repositório raiz" (igual ao nome do projeto)
Ramo principal
Caminho pipelines/01-deploy-control-plane.yml
Nome Implantação do painel de controle

Salve o fluxo de trabalho. Para ver Salvar, selecione a seta 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 Novo Pipeline. Selecione o Git do Azure Repos como a origem do código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configurações Valor
Repositório "Repositório raiz" (igual ao nome do projeto)
Ramo principal
Caminho pipelines/02-sap-workload-zone.yml
Nome Implantação da zona de carga de trabalho do SAP

Salve o fluxo de trabalho. Para ver Salvar, selecione a seta 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 da zona de carga de trabalho SAP.

Fluxo de implantação do sistema SAP

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

Configurações Valor
Repositório "Repositório raiz" (igual ao nome do projeto)
Ramo principal
Caminho pipelines/03-sap-system-deployment.yml
Nome Implantação do sistema SAP (infraestrutura)

Salve o fluxo de trabalho. Para ver Salvar, selecione a seta 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 processo de aquisição de software SAP. Na seção Pipelines , selecione Novo Pipeline. Selecione o Git do Azure Repos como a origem do código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configurações Valor
Repositório "Repositório raiz" (igual ao nome do projeto)
Ramo principal
Caminho deploy/pipelines/04-sap-software-download.yml
Nome Aquisição de software SAP

Salve o fluxo de trabalho. Para ver Salvar, selecione a seta 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 Novo Pipeline. Selecione o Git do Azure Repos como a origem do código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configurações Valor
Repositório "Repositório raiz" (igual ao nome do projeto)
Ramo principal
Caminho pipelines/05-DB-and-SAP-installation.yml
Nome Configuração e instalação do SAP

Salve o fluxo de trabalho. Para ver Salvar, selecione a seta 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 Novo Pipeline. Selecione o Git do Azure Repos como a origem do código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configurações Valor
Repositório "Repositório raiz" (igual ao nome do projeto)
Ramo principal
Caminho pipelines/10-remover-terraform.yml
Nome Remoção da implantação

Salve o fluxo de trabalho. Para ver Salvar, selecione a seta 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 painel de controle. Na seção Pipelines , selecione Novo Pipeline. Selecione o Git do Azure Repos como a origem do código. Configure o seu pipeline para usar um arquivo YAML do Azure Pipelines existente. Especifique o pipeline com as seguintes configurações:

Configurações Valor
Repositório "Repositório raiz" (igual ao nome do projeto)
Ramo principal
Caminho pipelines/12-remove-control-plane.yml
Nome Remoção do painel de controle

Salve o fluxo de trabalho. Para ver Salvar, selecione a seta 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 Azure Resource Manager

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

Configurações Valor
Repositório "Repositório raiz" (igual ao nome do projeto)
Ramo principal
Caminho pipelines/11-remover-arm-fallback.yml
Nome Remoção de implantação usando o Azure Resource Manager

Salve o fluxo de trabalho. Para ver Salvar, selecione a seta 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. Remover apenas os grupos de recursos deixa resíduos que podem complicar as novas implantações.

Pipeline do atualizador de repositório

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

Configurações Valor
Repositório "Repositório raiz" (igual ao nome do projeto)
Ramo principal
Caminho pipelines/20-update-ado-repository.yml
Nome Atualizador de repositório

Salve o fluxo de trabalho. Para ver Salvar, selecione a seta 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 ocorrer uma atualização no repositório sap-automation que você pretende utilizar.

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 do Post Build Cleanup. Instale-o em sua organização do Azure DevOps antes de executar os pipelines.

Preparativos para um agente hospedado localmente

  1. Crie um pool de agentes acessando as Configurações Organizacionais. Na seção Pipelines , selecione Pools de Agentes>Adicionar Pool. Selecione Auto-hospedado como o tipo de pool. Nomeie o pool para se alinhar ao ambiente do plano de controle. Por exemplo, use MGMT-WEEU-POOL. Verifique se 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 home page, abra as configurações do usuário e selecione tokens de acesso pessoal.

    Diagrama que mostra a criação de um token de acesso pessoal.

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

    • Pools de agentes: selecione Ler e Gerenciar.

    • Build: Selecione Ler e executar.

    • Código: Selecione Leitura e gravação.

    • Grupos de Variáveis: Selecione Ler, criar e gerenciar.

      Anote o valor do token criado.

    Diagrama que mostra os atributos do token de acesso pessoal.

Definições de variável

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

Variáveis comuns

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 Anotações
Deployment_Configuration_Path Espaços de Trabalho Para testar a configuração de exemplo, use samples/WORKSPACES em vez de WORKSPACES.
Ramo principal
Nome de usuário S <SAP Support user account name>
S-Password <SAP Support user password> Altere o tipo de variável para segredo selecionando o ícone de bloqueio.
tf_version 1.6.0 A versão do Terraform a ser usada. Consulte o download do Terraform.

Salve as variáveis.

Como alternativa, você pode usar a CLI do Azure DevOps 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_version=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-DEVe 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 Anotaçõ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 segredo selecionando o ícone de bloqueio.
CP_ARM_SUBSCRIPTION_ID Target subscription ID
CP_ARM_TENANT_ID Tenant ID para a entidade de serviço
AZURE_CONNECTION_NAME Nome da conexão criada anteriormente
sap_fqdn Nome de domínio totalmente qualificado do SAP, por exemplo, sap.contoso.net Necessário somente se o DNS Privado não for usado.
FENCING_SPN_ID Service principal application ID para o agente de isolamento Necessário para implantações altamente disponíveis que usam uma entidade de serviço para o agente de isolamento.
FENCING_SPN_PWD Service principal password para o agente de isolamento Necessário para implantações altamente disponíveis que usam uma entidade de serviço para o agente de isolamento.
FENCING_SPN_TENANT Service principal tenant ID para o agente de isolamento Necessário para implantações altamente disponíveis que usam uma entidade de serviço para o agente de isolamento.
TAPINHA <Personal Access Token> Use o token pessoal definido na etapa anterior.
PISCINA <Agent Pool name> O pool do Agente a ser usado para esse ambiente.
APP_REGISTRATION_APP_ID App registration application ID Necessário se estiver implantando o aplicativo Web.
WEB_APP_CLIENT_SECRET App registration password Necessário se estiver implantando o aplicativo Web.
SDAF_GENERAL_GROUP_ID O ID do grupo SDAF-General A ID pode ser recuperada do parâmetro variableGroupId de URL ao acessar o grupo de variáveis usando um navegador. Por exemplo: variableGroupId=8.
WORKLOADZONE_PIPELINE_ID A ID do pipeline SAP workload zone deployment A ID pode ser recuperada do parâmetro definitionId da URL da página de pipeline no Azure DevOps. Por exemplo: definitionId=31.
SYSTEM_PIPELINE_ID A ID do pipeline SAP system deployment (infrastructure) A ID pode ser recuperada do parâmetro definitionId da 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 Build 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 são necessários apenas para o grupo de 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.

Captura de tela que mostra como criar uma conexão de serviço.

Selecione o Azure Resource Manager como o tipo de conexão de serviço e o principal de serviço (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á selecionada. Selecione Verificar e salvar para salvar a conexão de serviço.

Permissões

A maioria dos pipelines adiciona arquivos ao Azure Repos e, portanto, exige permissões de 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 de Contribuição Build Serviceao .

Captura de tela que mostra as permissões do repositório.

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 selecionar a caixa Implantar o aplicativo Web de configuração se você quiser configurar o aplicativo Web de configuração.

Configurar o agente auto-hospedado do Azure DevOps Services manualmente

A configuração manual só será necessária se o agente do Azure DevOps Services 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 implantador.

  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 plano de controle.

  7. Selecione o cofre de chaves do implantador.

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

  9. Conecte-se à máquina virtual.

Execute o seguinte script para configurar o implantador:

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 e execute o seguinte script para configurar o agente do Azure DevOps:

cd ~/Azure_SAP_Automated_Deployment/

$DEPLOYMENT_REPO_PATH/deploy/scripts/setup_ado.sh

Aceite a licença e, quando for solicitado para a URL do servidor, insira a URL que você capturou ao criar o projeto do Azure DevOps. 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 inicia.

Implantar o aplicativo Web do painel de controle

Selecionar o deploy the web app infrastructure parâmetro ao executar o pipeline de implantação do plano de controle provisiona a infraestrutura necessária para hospedar o aplicativo Web. O Pipeline de Implantação de 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 do registro do aplicativo.

Como resultado da execução do pipeline do plano de controle, a parte necessária da URL do aplicativo Web é armazenada em uma variável chamada WEBAPP_URL_BASE no seu grupo de variáveis específico 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 à identidade gerenciada atribuída pelo sistema do serviço de aplicativo. Vá para o recurso do serviço de aplicativo. No lado esquerdo, selecione Identidade. Na guia Atribuída pelo sistema, selecione atribuições de função do Azure>. Selecione Assinatura como o escopo e Leitor como a função. Em seguida, selecione Salvar. Sem essa etapa, a funcionalidade suspensa do aplicativo Web não funcionará.

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

Próxima etapa