Introdução ao SAP Deployment Automation Framework

Comece rapidamente com o SAP Deployment Automation Framework.

Pré-requisitos

Para começar a usar o SAP Deployment Automation Framework, você precisa:

  • Uma subscrição do Azure. Se não tiver uma subscrição do Azure, pode criar uma conta gratuita.
  • Uma conta de usuário SAP com permissões para baixar o software SAP em seu ambiente do Azure. Para obter mais informações sobre S-User, consulte SAP S-User.
  • Uma instalação da CLI do Azure.
  • Uma Identidade Atribuída (MS) do usuário ou uma entidade de serviço a ser usada para a implantação do plano de controle.
  • Uma Identidade Atribuída (MS) de usuário ou uma entidade de serviço A a ser usada para a implantação da zona de carga de trabalho.
  • Uma capacidade de criar um projeto do Azure DevOps se você quiser usar o Azure DevOps para implantação.

Alguns dos pré-requisitos podem já estar instalados em seu ambiente de implantação. O Azure Cloud Shell e o implantador vêm com o Terraform e a CLI do Azure instalados.

Criar um principal de serviço

A estrutura de implantação de automação SAP usa entidades de serviço para implantação.

Ao escolher um nome para sua entidade de serviço, verifique se o nome é exclusivo em seu locatário do Azure. Certifique-se de usar uma conta com permissões de criação de entidades de serviço ao executar o script.

  1. Crie a entidade de serviço com permissões de Colaborador.

    export    ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export control_plane_env_code="LAB"
    
    az ad sp create-for-rbac --role="Contributor"  --scopes="/subscriptions/$ARM_SUBSCRIPTION_ID"   --name="$control_plane_env_code-Deployment-Account"
    

    Reveja a saída. Por exemplo:

    {
        "appId": "<AppId>",
        "displayName": "<environment>-Deployment-Account ",
        "name": "<AppId>",
        "password": "<AppSecret>",
        "tenant": "<TenantId>"
    }
    
  2. Copie os detalhes da saída. Certifique-se de salvar os valores de appId, passworde Tenant.

    A saída é mapeada para os seguintes parâmetros. Você usa esses parâmetros em etapas posteriores, com comandos de automação.

    Nome de entrada do parâmetro Nome da saída
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. Opcionalmente, atribua a função de Administrador de Acesso de Usuário à entidade de serviço.

    export appId="<appId>"
    
    az role assignment create --assignee $appId --role "User Access Administrator"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    

Importante

Se você não atribuir a função de Administrador de Acesso de Usuário à entidade de serviço, não poderá atribuir permissões usando a estrutura de automação.

Criar uma Identidade atribuída ao usuário

A estrutura de implantação de automação SAP também pode usar uma identidade atribuída ao usuário (MSI) para a implantação. Certifique-se de usar uma conta com permissões para criar identidades gerenciadas ao executar o script que cria a identidade.

  1. Crie a identidade gerenciada.

    export    ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export control_plane_env_code="LAB"
    
    az identity create --name ${control_plane_env_code}-Deployment-Identity --resource-group <ExistingResourceGroup>
    

    Reveja a saída. Por exemplo:

       {
         "clientId": "<appId>",
         "id": "<armId>",
         "location": "<location>",
         "name": "${control_plane_env_code}-Deployment-Identity",
         "principalId": "<objectId>",
         "resourceGroup": "<ExistingResourceGroup>",
         "systemData": null,
         "tags": {},
         "tenantId": "<TenantId>",
         "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
       }
    
  2. Copie os detalhes da saída.

    A saída é mapeada para os seguintes parâmetros. Você usa esses parâmetros em etapas posteriores, com comandos de automação.

    Nome de entrada do parâmetro Nome da saída
    app_id appId
    msi_id armId
  3. Atribua a função de Colaborador à identidade.

    export appId="<appId>"
    
    az role assignment create --assignee $appId  --role "Contributor"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    
  4. Opcionalmente, atribua a função de Administrador de Acesso de Usuário à identidade.

    export appId="<appId>"
    
    az role assignment create --assignee $appId  --role "User Access Administrator"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    

Importante

Se você não atribuir a função de Administrador de Acesso de Usuário à identidade gerenciada, não poderá atribuir permissões usando a estrutura de automação.

Verificações antes do voo

Você pode usar o script a seguir para executar verificações antes do voo. O script executa as seguintes verificações e testes:

  • Verifica se a entidade de serviço tem as permissões corretas para criar recursos na assinatura.
  • Verifica se a entidade de serviço tem permissões de Administrador de Acesso do usuário.
  • Crie uma Rede Virtual do Azure.
  • Crie um Cofre de Chave Virtual do Azure com ponto de extremidade privado.
  • Crie um compartilhamento NSF de Arquivos do Azure.
  • Crie uma Máquina Virtual do Azure com disco de dados usando o Armazenamento Premium v2.
  • Verifique o acesso às URLs necessárias usando a máquina virtual implantada.

$sdaf_path = Get-Location
if ( $PSVersionTable.Platform -eq "Unix") {
    if ( -Not (Test-Path "SDAF") ) {
      $sdaf_path = New-Item -Path "SDAF" -Type Directory
    }
}
else {
    $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
    if ( -not (Test-Path $sdaf_path)) {
        New-Item -Path $sdaf_path -Type Directory
    }
}

Set-Location -Path $sdaf_path

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

cd sap-automation
cd deploy
cd scripts

if ( $PSVersionTable.Platform -eq "Unix") {
./Test-SDAFReadiness.ps1
}
else {
.\Test-SDAFReadiness.ps1
}

Usar o SAP Deployment Automation Framework dos Serviços de DevOps do Azure

Usar o Azure DevOps simplifica o processo de implantação. O Azure DevOps fornece 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. O Azure Pipelines fornece pipelines, que podem ser usados para implantar e configurar a infraestrutura e o aplicativo SAP.

Inscreva-se nos Serviços de DevOps do Azure

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. Utilize a sua conta escolar ou profissional para ligar automaticamente a sua organização à sua ID do Microsoft Entra. Para criar uma conta, abra o Azure DevOps e entre ou crie uma nova conta.

Criar o ambiente do SAP Deployment Automation Framework com o Azure DevOps

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_WORKLOAD_ZONE_CODE = "DEV"
    $Env:SDAF_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"

    $UniqueIdentifier = Read-Host "Please provide an identifier that makes the service principal names unique, for instance a project code"

    $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 = $UniqueIdentifier + " SDAF Control Plane"
    }

    else {
      $Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
    }

    $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 = $UniqueIdentifier + " SDAF " + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
    }
        else {
      $Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane Service Principal Name"
    }

    $confirmation = Read-Host "Do you want to create a new Service Principal for the Workload zone y/n?"
    if ($confirmation -eq 'y') {
        $Env:SDAF_WorkloadZone_SPN_NAME = $UniqueIdentifier + " SDAF " + $Env:SDAF_WORKLOAD_ZONE_CODE + " SPN"
    }
        else {
      $Env:SDAF_WorkloadZone_SPN_NAME = Read-Host "Please provide the Workload Zone 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") {
        remove-item .\New-SDAFDevopsProject.ps1
    }

    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile .\New-SDAFDevopsProject.ps1 ; .\New-SDAFDevopsProject.ps1

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

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

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

Importante

Execute os seguintes passos na estação de trabalho local. Certifique-se também de ter a CLI do Azure mais recente instalada executando o az upgrade comando.

Para obter mais informações sobre como configurar o Azure DevOps for SAP Deployment Automation Framework, consulte Configure Azure DevOps for SAP Deployment Automation Framework.

Criar o ambiente do SAP Deployment Automation Framework sem o Azure DevOps

Você pode executar o SAP Deployment Automation Framework a partir de uma máquina virtual no Azure. As etapas a seguir descrevem como criar o ambiente.

Importante

Verifique se a máquina virtual está usando uma identidade atribuída pelo sistema ou pelo usuário com permissões na assinatura para criar recursos.

Verifique se a máquina virtual tem os seguintes pré-requisitos instalados:

  • git
  • JQ
  • descompactar
  • virtualenv (se estiver rodando no Ubuntu)

Você pode instalar os pré-requisitos em uma máquina virtual Ubuntu usando o seguinte comando:

sudo apt-get install -y git jq unzip virtualenv

Em seguida, você pode instalar os componentes do deployer usando os seguintes comandos:


wget https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/configure_deployer.sh -O configure_deployer.sh
chmod +x ./configure_deployer.sh
./configure_deployer.sh

# Source the new variables

. /etc/profile.d/deploy_server.sh

Exemplos

A ~/Azure_SAP_Automated_Deployment/samples pasta contém um conjunto de arquivos de configuração de exemplo para começar a testar a estrutura de automação de implantação. Você pode copiá-los usando os seguintes comandos:

cd ~/Azure_SAP_Automated_Deployment

cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment

Próximo passo