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

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

Puede usar Azure Repos para almacenar los archivos de configuración y usar Azure Pipelines 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 identificador de Microsoft Entra. Para crear una cuenta, abra Azure DevOps e inicie sesión o cree una cuenta.

Configuración de Azure DevOps Services para el marco de automatización de la implementación de SAP

Puede usar el siguiente script para realizar una instalación básica de Azure DevOps Services para SAP Deployment Automation Framework.

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_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 $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 login --organization $Env:ADO_Organization
        }
        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
    }
    

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 az upgrade comando .

Configuración de artefactos de Azure DevOps Services para una nueva zona de carga de trabajo

Use el siguiente script para implementar los artefactos necesarios para admitir una nueva zona de carga de trabajo. Este proceso crea el grupo de variables y la conexión de servicio en Azure DevOps y, opcionalmente, la entidad de servicio de implementación.

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_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
        }
    }
    
    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/main/deploy/scripts/New-SDAFDevopsWorkloadZone.ps1 -OutFile .\New-SDAFDevopsWorkloadZone.ps1 ; .\New-SDAFDevopsWorkloadZone.ps1
    

Creación de una configuración de plano de control de ejemplo

Puede ejecutar la Create Sample Deployer Configuration canalización para crear una configuración de ejemplo para el plano de control. Cuando se ejecute, elija la región de Azure adecuada. También puede controlar si se va a implementar Azure Firewall y Azure Bastion.

Configuración manual de Azure DevOps Services para SAP Deployment Automation Framework

Puede configurar manualmente Azure DevOps Services para SAP Deployment Automation Framework.

Cree un nuevo proyecto

Puede usar Azure Repos para almacenar el código desde el repositorio de GitHub de sap-automation y los archivos de configuración del entorno.

Abra Azure DevOps y cree un proyecto; para ello, seleccione Nuevo proyecto y escriba los detalles del proyecto. El proyecto contiene el repositorio de control de código fuente de Azure Repos y Azure Pipelines para realizar actividades de implementación.

Si no ve Nuevo proyecto, asegúrese de que tiene permisos para crear nuevos proyectos en la organización.

Registre la dirección URL de la carpeta del proyecto.

Importación del repositorio

Empiece por importar el repositorio de GitHub del marco de implementación de SAP Deployment Automation en Azure Repos.

Vaya a la sección Repositorios y seleccione Importar un repositorio. Importe el https://github.com/Azure/sap-automation-bootstrap.git repositorio en Azure DevOps. Para obtener más información, consulte Importación de un repositorio.

Si no puede importar un repositorio, puede crear el repositorio manualmente. Después, puede importar el contenido desde el repositorio de Arranque de GitHub de SAP Deployment Automation Framework a él.

Creación del repositorio para la importación manual

Solo realice este paso si no puede importar el repositorio directamente.

Para crear el repositorio de áreas de trabajo, en la sección Repositorios, en Configuración del proyecto, seleccione Crear.

Elija el repositorio, escriba Git y proporcione un nombre para el repositorio. Por ejemplo, use el repositorio de configuración de SAP.

Clonación del repositorio

Para proporcionar una funcionalidad de edición más completa del contenido, puede clonar el repositorio en una carpeta local y editar el contenido localmente.

Para clonar el repositorio en una carpeta local, en la sección Repositorios del portal, en Archivos, seleccione Clonar. Para obtener más información, consulte Clonación de un repositorio.

Screenshot that shows how to clone the repository.

Importar manualmente el contenido del repositorio mediante un clon local

También puede descargar manualmente el contenido del repositorio de SAP Deployment Automation Framework y agregarlo al clon local del repositorio de Azure DevOps.

Vaya al https://github.com/Azure/SAP-automation-samples repositorio y descargue el contenido del repositorio como un archivo .zip. Seleccione Código y elija Descargar archivo ZIP.

Copie el contenido del archivo .zip en la carpeta raíz del clon local.

Abra la carpeta local en Visual Studio Code. Debería ver que el indicador debe sincronizar los cambios mediante el icono de control de código fuente que se muestra aquí.

Screenshot that shows that source code is changed.

Seleccione el icono de control de código fuente y proporcione un mensaje sobre el cambio. Por ejemplo, escriba Importar desde GitHub y seleccione Ctrl+Entrar para confirmar los cambios. A continuación, seleccione Sincronizar cambios para volver a sincronizar los cambios en el repositorio.

Elección del origen del código de Terraform y Ansible

Puede ejecutar el código de SAP Deployment Automation Framework directamente desde GitHub o puede importarlo localmente.

Ejecución del código desde un repositorio local

Si quiere ejecutar el código de SAP Deployment Automation Framework desde el proyecto local de Azure DevOps, debe crear un repositorio de código independiente y un repositorio de configuración en el proyecto de Azure DevOps:

  • Nombre del repositorio de configuración: Same as the DevOps Project name. El origen es https://github.com/Azure/sap-automation-bootstrap.git.
  • Nombre del repositorio de código: sap-automation. El origen es https://github.com/Azure/sap-automation.git.
  • Nombre del repositorio de ejemplo y plantilla: sap-samples. El origen es https://github.com/Azure/sap-automation-samples.git.

Ejecución del código directamente desde GitHub

Si desea ejecutar el código directamente desde GitHub, debe proporcionar credenciales para que Azure DevOps pueda extraer el contenido de GitHub.

Creación de la conexión de servicio de GitHub

Para extraer el código de GitHub, necesita una conexión de servicio de GitHub. Para más información, consulte Administración de conexiones de servicio.

Para crear la conexión de servicio, vaya a Project Configuración y, en la sección Canalizaciones, vaya a Conexiones de servicio.

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

Seleccione GitHub como tipo de conexión de servicio. Seleccione Azure Pipelines en la lista desplegable Configuración de OAuth.

Seleccione Autorizar para iniciar sesión en GitHub.

Escriba un nombre de conexión de servicio, por ejemplo, SDAF Conectar ion a GitHub. Asegúrese de que esté seleccionada la opción Conceder permiso de acceso a todas las canalizaciones. Seleccione Guardar para guardar la conexión de servicio.

Configurar la aplicación web

Opcionalmente, el marco de automatización aprovisiona una aplicación web como parte del plano de control para ayudar con los archivos de configuración de sistemas y zonas de carga de trabajo de SAP. Si desea usar la aplicación web, primero debe crear un registro de aplicación con fines de autenticación. Abra Azure Cloud Shell y ejecute los siguientes comandos.

Reemplace por MGMT el entorno, según sea necesario.

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

Guarde el id. de registro de la aplicación y los valores de contraseña para usarlos más adelante.

Creación de instancias de Azure Pipelines

Azure Pipelines se implementa como archivos YAML. Se almacenan en la carpeta deploy/pipelines del repositorio.

Canalización de implementación del plano de control

Cree la canalización de implementación del plano de control. En la sección Canalizaciones , seleccione Nueva canalización. Seleccione Git de Azure Repos como origen del código. Configure la canalización para usar un archivo YAML de Azure Pipelines existente. Especifique la canalización con la siguiente configuración:

Configuración Valor
Repo "Repositorio raíz" (igual que el nombre del proyecto)
Sucursal main (principal)
Ruta de acceso pipelines/01-deploy-control-plane.yml
Nombre Implementación del plano de control

Guarde la canalización. Para ver Guardar, seleccione el botón de contenido adicional junto a Ejecutar. Vaya a la sección Canalizaciones y seleccione la canalización. Elija Cambiar nombre o mover desde el menú de puntos suspensivos de la derecha y cambie el nombre de la canalización como implementación del plano de control.

Canalización de implementación de la zona de carga de trabajo de SAP

Cree la canalización de la zona de carga de trabajo de SAP. En la sección Canalizaciones , seleccione Nueva canalización. Seleccione Git de Azure Repos como origen del código. Configure la canalización para usar un archivo YAML de Azure Pipelines existente. Especifique la canalización con la siguiente configuración:

Configuración Valor
Repo "Repositorio raíz" (igual que el nombre del proyecto)
Sucursal main (principal)
Ruta de acceso pipelines/02-sap-workload-zone.yml
Nombre Implementación de la zona de carga de trabajo de SAP

Guarde la canalización. Para ver Guardar, seleccione el botón de contenido adicional junto a Ejecutar. Vaya a la sección Canalizaciones y seleccione la canalización. Elija Cambiar nombre o mover desde el menú de puntos suspensivos de la derecha y cambie el nombre de la canalización como implementación de la zona de carga de trabajo de SAP.

Canalización de implementación del sistema SAP

Cree la canalización de implementación del sistema SAP. En la sección Canalizaciones , seleccione Nueva canalización. Seleccione Git de Azure Repos como origen del código. Configure la canalización para usar un archivo YAML de Azure Pipelines existente. Especifique la canalización con la siguiente configuración:

Configuración Valor
Repo "Repositorio raíz" (igual que el nombre del proyecto)
Sucursal main (principal)
Ruta de acceso pipelines/03-sap-system-deployment.yml
Nombre Implementación del sistema SAP (infraestructura)

Guarde la canalización. Para ver Guardar, seleccione el botón de contenido adicional junto a Ejecutar. Vaya a la sección Canalizaciones y seleccione la canalización. Elija Cambiar nombre o mover desde el menú de puntos suspensivos de la derecha y cambie el nombre de la canalización como implementación del sistema SAP (infraestructura).

Canalización de adquisición de software de SAP

Cree la canalización de adquisición de software de SAP. En la sección Canalizaciones , seleccione Nueva canalización. Seleccione Git de Azure Repos como origen del código. Configure la canalización para usar un archivo YAML de Azure Pipelines existente. Especifique la canalización con la siguiente configuración:

Configuración Valor
Repo "Repositorio raíz" (igual que el nombre del proyecto)
Sucursal main (principal)
Ruta de acceso deploy/pipelines/04-sap-software-download.yml
Nombre Adquisición de software de SAP

Guarde la canalización. Para ver Guardar, seleccione el botón de contenido adicional junto a Ejecutar. Vaya a la sección Canalizaciones y seleccione la canalización. Elija Cambiar nombre o mover desde el menú de puntos suspensivos de la derecha y cambie el nombre de la canalización como adquisición de software de SAP.

Canalización de instalación de software y configuración de SAP

Cree la canalización de instalación de software y configuración de SAP. En la sección Canalizaciones , seleccione Nueva canalización. Seleccione Git de Azure Repos como origen del código. Configure la canalización para usar un archivo YAML de Azure Pipelines existente. Especifique la canalización con la siguiente configuración:

Configuración Valor
Repo "Repositorio raíz" (igual que el nombre del proyecto)
Sucursal main (principal)
Ruta de acceso pipelines/05-DB-and-SAP-installation.yml
Nombre Configuración e instalación de SAP

Guarde la canalización. Para ver Guardar, seleccione el botón de contenido adicional junto a Ejecutar. Vaya a la sección Canalizaciones y seleccione la canalización. Elija Cambiar nombre o mover desde el menú de puntos suspensivos de la derecha y cambie el nombre de la canalización como configuración de SAP e instalación de software.

Canalización de eliminación de la implementación

Cree la canalización de eliminación de implementación. En la sección Canalizaciones , seleccione Nueva canalización. Seleccione Git de Azure Repos como origen del código. Configure la canalización para usar un archivo YAML de Azure Pipelines existente. Especifique la canalización con la siguiente configuración:

Configuración Valor
Repo "Repositorio raíz" (igual que el nombre del proyecto)
Sucursal main (principal)
Ruta de acceso pipelines/10-remover-terraform.yml
Nombre Eliminación de la implementación

Guarde la canalización. Para ver Guardar, seleccione el botón de contenido adicional junto a Ejecutar. Vaya a la sección Canalizaciones y seleccione la canalización. Elija Cambiar nombre o mover desde el menú de puntos suspensivos de la derecha y cambie el nombre de la canalización como Eliminación de implementación.

Canalización de eliminación del plano de control

Cree la canalización de eliminación de implementación del plano de control. En la sección Canalizaciones , seleccione Nueva canalización. Seleccione Git de Azure Repos como origen del código. Configure la canalización para usar un archivo YAML de Azure Pipelines existente. Especifique la canalización con la siguiente configuración:

Configuración Valor
Repo "Repositorio raíz" (igual que el nombre del proyecto)
Sucursal main (principal)
Ruta de acceso pipelines/12-remove-control-plane.yml
Nombre Eliminación del plano de control

Guarde la canalización. Para ver Guardar, seleccione el botón de contenido adicional junto a Ejecutar. Vaya a la sección Canalizaciones y seleccione la canalización. Elija Cambiar nombre o mover desde el menú de puntos suspensivos de la derecha y cambie el nombre de la canalización como eliminación del plano de control.

Canalización de eliminación de implementación mediante Azure Resource Manager

Cree la canalización de Azure Resource Manager de eliminación de implementación. En la sección Canalizaciones , seleccione Nueva canalización. Seleccione Git de Azure Repos como origen del código. Configure la canalización para usar un archivo YAML de Azure Pipelines existente. Especifique la canalización con la siguiente configuración:

Configuración Valor
Repo "Repositorio raíz" (igual que el nombre del proyecto)
Sucursal main (principal)
Ruta de acceso pipelines/11-remover-arm-fallback.yml
Nombre Eliminación de la implementación mediante Azure Resource Manager

Guarde la canalización. Para ver Guardar, seleccione el botón de contenido adicional junto a Ejecutar. Vaya a la sección Canalizaciones y seleccione la canalización. Elija Cambiar nombre o mover desde el menú de puntos suspensivos de la derecha y cambie el nombre de la canalización como Eliminación de implementación mediante el procesador ARM.

Nota:

Use solo esta canalización como último recurso. Quitar solo los grupos de recursos deja restos que podrían complicar la reimplementación.

Canalización del actualizador de repositorio

Cree la canalización del actualizador del repositorio. En la sección Canalizaciones , seleccione Nueva canalización. Seleccione Git de Azure Repos como origen del código. Configure la canalización para usar un archivo YAML de Azure Pipelines existente. Especifique la canalización con la siguiente configuración:

Configuración Valor
Repo "Repositorio raíz" (igual que el nombre del proyecto)
Sucursal main (principal)
Ruta de acceso pipelines/20-update-ado-repository.yml
Nombre Actualizador de repositorio

Guarde la canalización. Para ver Guardar, seleccione el botón de contenido adicional junto a Ejecutar. Vaya a la sección Canalizaciones y seleccione la canalización. Elija Cambiar nombre o mover desde el menú de puntos suspensivos de la derecha y cambie el nombre de la canalización como actualizador del repositorio.

Esta canalización debe usarse cuando hay una actualización en el repositorio sap-automation que desea usar.

Importación de la tarea de limpieza desde Visual Studio Marketplace

Las canalizaciones usan una tarea personalizada para realizar actividades de limpieza después de la implementación. Puede instalar la tarea personalizada desde La limpieza posterior a la compilación. Instálelo en la organización de Azure DevOps antes de ejecutar las canalizaciones.

Preparativos para un agente autohospedado

  1. Cree un grupo de agentes; para ello, vaya a Configuración organizativo. En la sección Canalizaciones, seleccione Grupos de agentes>Agregar grupo. Seleccione Autohospedado como tipo de grupo. Asigne al grupo el nombre que se alineará con el entorno del plano de control. Por ejemplo, use MGMT-WEEU-POOL. Asegúrese de que la opción Conceder permiso de acceso a todas las canalizaciones está seleccionada y seleccione Crear para crear el grupo.

  2. Inicie sesión con la cuenta de usuario que planea usar en su organización de Azure DevOps .

  3. En la página principal, abra la configuración del usuario y seleccione Tokens de acceso personal.

    Diagram that shows the creation of a personal access token.

  4. Cree un token de acceso personal con esta configuración:

    • Grupos de agentes: seleccione Leer y administrar.

    • Compilación: seleccione Leer y ejecutar.

    • Código: seleccione Lectura y escritura.

    • Grupos de variables: seleccione Leer, crear y administrar.

      Anote el valor del token creado.

    Diagram that shows the attributes of the personal access token.

Definiciones de variable

Las canalizaciones de implementación están configuradas para usar un conjunto de valores de parámetro predefinidos definidos mediante grupos de variables.

Variables comunes

Todas las canalizaciones de implementación usan variables comunes. Se almacenan en un grupo de variables denominado SDAF-General.

Cree un nuevo grupo de variables denominado SDAF-General mediante la página Biblioteca de la sección Canalizaciones . Agregue las siguientes variables:

Variable Value Notas
Deployment_Configuration_Path ÁREAS DE TRABAJO Para probar la configuración de ejemplo, use samples/WORKSPACES en lugar de WORKSPACES.
Sucursal main (principal)
S-Username <SAP Support user account name>
S-Password <SAP Support user password> Cambie el tipo de variable a secret seleccionando el icono de bloqueo.
tf_version 1.6.0 Versión de Terraform que se va a usar. Consulte Descarga de Terraform.

Guarde las variables.

Como alternativa, puede usar la CLI de Azure DevOps para configurar los 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

Recuerde asignar permisos para todas las canalizaciones mediante permisos de canalización.

Variables específicas del entorno

Dado que cada entorno puede tener credenciales de implementación diferentes, debe crear un grupo de variables por entorno. Por ejemplo, use SDAF-MGMT,SDAF-DEV y SDAF-QA.

Cree un nuevo grupo de variables denominado SDAF-MGMT para el entorno del plano de control mediante la página Biblioteca de la sección Canalizaciones . Agregue las siguientes variables:

Variable Value Notas
Agente Azure Pipelines o el nombre del grupo de agentes Este grupo se crea en un paso posterior.
CP_ARM_CLIENT_ID Service principal application ID
CP_ARM_OBJECT_ID Service principal object ID
CP_ARM_CLIENT_SECRET Service principal password Cambie el tipo de variable a secret seleccionando el icono de bloqueo.
CP_ARM_SUBSCRIPTION_ID Target subscription ID
CP_ARM_TENANT_ID Tenant ID para la entidad de servicio
AZURE_CONNECTION_NAME Nombre de conexión creado anteriormente
sap_fqdn Nombre de dominio completo de SAP, por ejemplo, sap.contoso.net Solo es necesario si DNS privado no se usa.
FENCING_SPN_ID Service principal application ID para el agente de barreras Necesario para implementaciones de alta disponibilidad que usan una entidad de servicio para el agente de barreras.
FENCING_SPN_PWD Service principal password para el agente de barreras Necesario para implementaciones de alta disponibilidad que usan una entidad de servicio para el agente de barreras.
FENCING_SPN_TENANT Service principal tenant ID para el agente de barreras Necesario para implementaciones de alta disponibilidad que usan una entidad de servicio para el agente de barreras.
PAT <Personal Access Token> Use el token personal definido en el paso anterior.
GRUPO <Agent Pool name> Grupo de agentes que se va a usar para este entorno.
APP_REGISTRATION_APP_ID App registration application ID Obligatorio si se implementa la aplicación web.
WEB_APP_CLIENT_SECRET App registration password Obligatorio si se implementa la aplicación web.
SDAF_GENERAL_GROUP_ID Id. de grupo del grupo de SDAF-General El identificador se puede recuperar del parámetro variableGroupId URL al acceder al grupo de variables mediante un explorador. Por ejemplo: variableGroupId=8.
WORKLOADZONE_PIPELINE_ID Identificador de la SAP workload zone deployment canalización El identificador se puede recuperar del parámetro definitionId URL de la página de canalización en Azure DevOps. Por ejemplo: definitionId=31.
SYSTEM_PIPELINE_ID Identificador de la SAP system deployment (infrastructure) canalización El identificador se puede recuperar del parámetro definitionId URL de la página de canalización en Azure DevOps. Por ejemplo: definitionId=32.

Guarde las variables.

Recuerde asignar permisos para todas las canalizaciones mediante permisos de canalización.

Al usar la aplicación web, asegúrese de que el servicio de compilación tenga al menos permisos de Contribución.

Puede usar la funcionalidad de clonación para crear el siguiente grupo de variables de entorno. APP_REGISTRATION_APP_ID, WEB_APP_CLIENT_SECRET, SDAF_GENERAL_GROUP_ID, WORKLOADZONE_PIPELINE_ID y SYSTEM_PIPELINE_ID solo se necesitan en el grupo SDAF-MGMT.

Creación de una conexión de servicio

Para quitar los recursos de Azure, necesita una conexión de servicio de Azure Resource Manager. Para más información, consulte Administración de conexiones de servicio.

Para crear la conexión de servicio, vaya a Project Configuración. En la sección Canalizaciones , seleccione Conexiones de servicio.

Screenshot that shows how to create a service connection.

Seleccione Azure Resource Manager como el tipo de conexión de servicio y la entidad de servicio (manual) como método de autenticación. Escriba la suscripción de destino, que suele ser la suscripción del plano de control. Escriba los detalles de la entidad de servicio. Seleccione Comprobar para validar las credenciales. Para obtener más información sobre cómo crear una entidad de servicio, consulte Creación de una entidad de servicio.

Escriba un nombre de conexión de servicio, por ejemplo, use Connection to MGMT subscription. Asegúrese de que esté seleccionada la opción Conceder permiso de acceso a todas las canalizaciones. Seleccione Comprobar y guardar para guardar la conexión de servicio.

Permisos

La mayoría de las canalizaciones agregan archivos a Azure Repos y, por tanto, requieren permisos de incorporación de cambios. En Project Configuración, en la sección Repositorios, seleccione la pestaña Seguridad del repositorio de código fuente y asigne permisos de contribución a Build Service.

Screenshot that shows repository permissions.

Implementación del plano de control

Es posible que las canalizaciones recién creadas no sean visibles en la vista predeterminada. Seleccione la pestaña Recientes y vuelva a todas las pestañas para ver las nuevas canalizaciones.

Seleccione la canalización de implementación del plano de control y escriba los nombres de configuración del implementador y la biblioteca de SAP. Seleccione Ejecutar para implementar el plano de control. Asegúrese de activar la casilla Implementar la aplicación web de configuración si desea configurar la aplicación web de configuración.

Configuración manual del agente autohospedado de Azure DevOps Services

La configuración manual solo es necesaria si el agente de Azure DevOps Services no está configurado automáticamente. Compruebe que el grupo de agentes está vacío antes de continuar.

Para conectarse al implementador:

  1. Inicie sesión en Azure Portal.

  2. Vaya al grupo de recursos que contiene la máquina virtual del implementador.

  3. Conéctese la máquina virtual Linux con Azure Bastion.

  4. El nombre de usuario predeterminado es azureadm.

  5. Seleccione Clave privada SSH de Azure Key Vault.

  6. Seleccione la suscripción que contiene el plano de control.

  7. Seleccione el almacén de claves del implementador.

  8. En la lista de secretos, seleccione el secreto que termina en -sshkey.

  9. Conexión a una máquina virtual.

Ejecute el siguiente script para configurar el 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

Reinicie el implementador, vuelva a conectarse y ejecute el siguiente script para configurar el agente de Azure DevOps:

cd ~/Azure_SAP_Automated_Deployment/

$DEPLOYMENT_REPO_PATH/deploy/scripts/setup_ado.sh

Acepte la licencia y, cuando se le solicite la dirección URL del servidor, escriba la dirección URL que capturó al crear el proyecto de Azure DevOps. Para la autenticación, seleccione PAT y escriba el valor del token del paso anterior.

Cuando se le solicite, escriba el nombre del grupo de aplicaciones que creó en el paso anterior. Acepte el nombre del agente predeterminado y el nombre de la carpeta de trabajo predeterminada. El agente ahora está configurado e inicia.

Implementación de la aplicación web del plano de control

Al seleccionar el deploy the web app infrastructure parámetro al ejecutar la canalización de implementación del plano de control, se aprovisiona la infraestructura necesaria para hospedar la aplicación web. La canalización Implementar aplicación web publica el software de la aplicación en esa infraestructura.

Espere a que finalice la implementación. Seleccione la pestaña Extensiones y siga las instrucciones para finalizar la configuración. Actualice los reply-url valores del registro de la aplicación.

Como resultado de ejecutar la canalización del plano de control, parte de la dirección URL de la aplicación web necesaria se almacena en una variable denominada WEBAPP_URL_BASE en el grupo de variables específico del entorno. En cualquier momento, puede actualizar las direcciones URL de la aplicación web de aplicación registrada mediante el comando siguiente.

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

También debe conceder permisos de lector a la identidad administrada asignada por el sistema de App Service. Vaya al recurso de App Service. En el lado izquierdo, seleccione Identidad. En la pestaña Asignado por el sistema, seleccione Asignaciones>de roles de Azure Agregar asignación de roles. Seleccione Suscripción como ámbito y Lector como rol. Después, seleccione Guardar. Sin este paso, la funcionalidad desplegable de la aplicación web no funcionará.

Ahora debería poder visitar la aplicación web y usarla para implementar zonas de carga de trabajo de SAP y infraestructura del sistema SAP.

Paso siguiente