Introducción al marco de automatización de implementación de SAP

Comience rápidamente con el marco de automatización de implementación de SAP.

Requisitos previos

Para comenzar con el marco de automatización de implementación de SAP, necesita:

  • Suscripción a Azure. Si no tiene una suscripción a Azure, puede crear una cuenta gratuita.
  • Una cuenta de usuario de SAP con permisos para descargar el software de SAP en su entorno de Azure. Para obtener más información sobre S-User, consulte SAP S-User.
  • Una instalación de la CLI de Azure.
  • Identidad asignada por el usuario (MS) o una entidad de servicio que se usará para la implementación del plano de control.
  • Una identidad asignada por el usuario (MS) o una entidad de servicio A que se usará para la implementación de la zona de carga de trabajo.
  • Capacidad de crear un proyecto de Azure DevOps si quiere usar Azure DevOps para la implementación.

Es posible que algunos de los requisitos previos ya estén instalados en el entorno de implementación. Tanto Azure Cloud Shell como el implementador incluyen Terraform y la CLI de Azure instaladas.

Creación de una entidad de servicio

El marco de automatización de implementaciones de SAP usa entidades de servicio para la implementación.

Cuando elija un nombre para la entidad de servicio, asegúrese de que el nombre sea único dentro del inquilino de Azure. Asegúrese de usar una cuenta con permisos de creación de entidades de servicio al ejecutar el script.

  1. Cree la entidad de servicio con permisos 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"
    

    Revise el resultado. Por ejemplo:

    {
        "appId": "<AppId>",
        "displayName": "<environment>-Deployment-Account ",
        "name": "<AppId>",
        "password": "<AppSecret>",
        "tenant": "<TenantId>"
    }
    
  2. Copie los detalles de salida. Asegúrate de guardar los valores de appId, password y Tenant.

    La salida se asigna a los parámetros siguientes. Estos parámetros se usan en pasos posteriores, con comandos de automatización.

    Nombre del parámetro de entrada Nombre de salida
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. Opcionalmente, asigne el rol Administrador de acceso de usuario a la entidad de servicio.

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

Importante

Si no asigna el rol Administrador de acceso de usuario a la entidad de servicio, no puede asignar permisos mediante el marco de automatización.

Crear una identidad asignada por el usuario

El marco de implementación de automatización de SAP también puede usar una identidad asignada por el usuario (MSI) para la implementación. Asegúrese de usar una cuenta con permisos para crear identidades administradas al ejecutar el script que crea la identidad.

  1. Crear la identidad administrada

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

    Revise el resultado. Por ejemplo:

       {
         "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 los detalles de salida.

    La salida se asigna a los parámetros siguientes. Estos parámetros se usan en pasos posteriores, con comandos de automatización.

    Nombre del parámetro de entrada Nombre de salida
    app_id appId
    msi_id armId
  3. Asigne el rol Colaborador a la identidad.

    export appId="<appId>"
    
    az role assignment create --assignee $appId  --role "Contributor"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    
  4. Opcionalmente, asigne el rol Administrador de acceso de usuario a la identidad.

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

Importante

Si no asigna el rol Administrador de acceso de usuario a la identidad administrada, no puede asignar permisos mediante el marco de automatización.

Comprobaciones previas al piloto

Puede usar el siguiente script para realizar comprobaciones previas al vuelo. El script realiza las siguientes comprobaciones y pruebas:

  • Comprueba si la entidad de servicio tiene los permisos correctos para crear recursos en la suscripción.
  • Comprueba si la entidad de servicio tiene permisos de administrador de acceso de usuario.
  • Crea una instancia de Azure Virtual Network.
  • Crea una instancia de Azure Virtual Key Vault con un punto de conexión privado.
  • Crea un recurso compartido de Azure Files NSF.
  • Crea una máquina virtual de Azure Virtual con disco de datos mediante Premium Storage v2.
  • Comprueba el acceso a las direcciones URL necesarias mediante la máquina virtual implementada.

$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
}

Uso del marco de automatización de la implementación de SAP desde Azure DevOps Services

El uso de Azure DevOps simplifica el proceso de implementación. Azure DevOps proporciona canalizaciones que puede ejecutar para realizar la implementación de la infraestructura y las actividades de configuración y instalación de SAP.

Puede usar Azure Repos para almacenar los archivos de configuración. Azure Pipelines proporciona canalizaciones, que se pueden usar para implementar y configurar la infraestructura y la aplicación SAP.

Registro en Azure DevOps Services

Para usar Azure DevOps Services, necesita una organización de Azure DevOps. Una organización se usa para conectar grupos de proyectos relacionados. Use su cuenta profesional o educativa para conectar automáticamente su organización a su Microsoft Entra ID. Para crear una cuenta, abra Azure DevOps e inicie sesión o cree una cuenta.

Crear el entorno del marco de automatización de implementación de SAP con Azure DevOps

Puede usar el siguiente script para realizar una instalación básica de Azure DevOps Services para el marco de automatización de implementación de SAP.

Abra PowerShell ISE, copie el siguiente script y actualice los parámetros para que coincidan con el entorno.

    $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

Ejecute el script y siga las instrucciones. El script abre las ventanas del explorador para la autenticación y para realizar tareas en el proyecto de Azure DevOps.

Puede optar por ejecutar el código directamente desde GitHub, o bien importar una copia del código en el proyecto de Azure DevOps.

Para confirmar que se creó el proyecto, vaya al portal de Azure DevOps y seleccione el proyecto. Asegúrese de que el repositorio se ha rellenado y de que se crearon las canalizaciones.

Importante

Ejecute los pasos siguientes en la estación de trabajo local. Asegúrese también de que tiene instalada la CLI de Azure más reciente mediante la ejecución del comando az upgrade.

Para obtener más información sobre cómo configurar Azure DevOps para el marco de automatización de implementación de SAP, consulte Configurar Azure DevOps para el marco de automatización de implementación de SAP.

Crear el entorno del marco de automatización de implementación de SAP sin Azure DevOps

Puede ejecutar el marco de automatización de implementación de SAP desde una máquina virtual en Azure. En los pasos siguientes se describe cómo crear el entorno.

Importante

Asegúrese de que la máquina virtual use una identidad asignada por el sistema o asignada por el usuario con permisos en la suscripción para crear recursos.

Asegúrese de que la máquina virtual tiene instalados los siguientes requisitos previos:

  • git
  • jq
  • unzip
  • virtualenv (si se ejecuta en Ubuntu)

Puede instalar los requisitos previos en una máquina virtual Ubuntu mediante el comando siguiente:

sudo apt-get install -y git jq unzip virtualenv

Después, puede instalar los componentes del implementador mediante los siguientes 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

Ejemplos

La carpeta ~/Azure_SAP_Automated_Deployment/samples contiene un conjunto de archivos de configuración de ejemplo para empezar a probar el marco de automatización de implementación. Puede copiarlos mediante los siguientes comandos:

cd ~/Azure_SAP_Automated_Deployment

cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment

Paso siguiente