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

En este artículo se muestra cómo configurar Azure DevOps Services para ejecutar canalizaciones de SAP Deployment Automation Framework. Esta configuración le ayuda a estandarizar y repetir las tareas de implementación de infraestructura de SAP, adquisición de software y configuración en entornos.

Configure los recursos del proyecto de Azure DevOps, las conexiones de servicio, las canalizaciones, los permisos y los grupos de variables que requiere el marco de trabajo. Después de completar estos pasos, puede ejecutar implementaciones y operaciones de entorno sap en curso desde Azure DevOps Services.

Elección de un método de configuración

Use esta tabla para elegir la ruta de instalación de su entorno.

Método Mejor cuando Resultado principal
Scripts de configuración automática Quiere arrancar rápidamente los artefactos del proyecto y usar las configuraciones predeterminadas del marco. Los scripts crean el proyecto de Azure DevOps, las conexiones de servicio y los recursos de implementación de línea base.
Configuración manual de Azure DevOps Necesita control total sobre la importación de repositorios, las conexiones de servicio y las definiciones de canalización. Cree y configure cada componente de Azure DevOps paso a paso.

Prerrequisitos

  • Una suscripción y permisos de Azure para crear recursos, identidades administradas y entidades de servicio.
  • Una organización de Azure DevOps donde puede crear proyectos, canalizaciones, conexiones de servicio y grupos de variables.
  • Cli de Azure instalada y actualizada en la estación de trabajo local (az upgrade).
  • Windows PowerShell para ejecutar los scripts proporcionados.
  • Credenciales para el soporte técnico de SAP (usuario S) si tiene previsto ejecutar procesos de adquisición de software SAP.

Inicio de sesión 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.

Configuración de Azure DevOps mediante scripts de automatización

Use este procedimiento cuando desee que los scripts del marco creen el proyecto de Azure DevOps, las conexiones de servicio y los artefactos de línea de base para el plano de control.

  1. Abra PowerShell y copie el siguiente script.

  2. Actualice todos los valores de parámetro para que coincida con el entorno.

  3. Ejecute el script. El script abre las ventanas del explorador para la autenticación y para las tareas de Azure DevOps.

    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.

    # Azure DevOps Configuration
    $AzureDevOpsOrganizationUrl = "https://dev.azure.com/ORGANIZATIONNAME"
    
    # Azure Infrastructure Configuration
    $ControlPlaneCode = "MGMT"
    $ControlPlaneRegionCode = "SECE"
    $Location = "swedencentral"
    
    $ControlPlaneName = "$ControlPlaneCode-$ControlPlaneRegionCode-DEP01"
    
    $AzureDevOpsProjectName = "SDAF-" + $ControlPlaneCode + "-" + $ControlPlaneRegionCode
    
    $ControlPlaneSubscriptionId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $TenantId = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    
    # SAP Support Credentials
    $Env:SUserName = "SXXXXXXXX"
    $Env:Password = Read-Host "Please enter your SUserName password" -AsSecureString
    
    $MSIResourceGroupName = "SDAF-MSIs"
    # Azure DevOps Agent Configuration
    $AgentPoolName = "SDAF-$ControlPlaneCode-$ControlPlaneRegionCode-POOL"
    
    #Repository information
    $repo = "Azure/sap-automation"
    $branch = "main"
    
    Remove-Module SDAFUtilities -ErrorAction SilentlyContinue
    
    # Import required modules
    $url="https://raw.githubusercontent.com/$repo/refs/heads/$branch/deploy/scripts/pwsh/Output/SDAFUtilities/SDAFUtilities.psm1"
    
    Write-Host "Downloading SDAFUtilities module from $url" -ForegroundColor Green
    
    Invoke-WebRequest -Uri $url -OutFile "SDAFUtilities.psm1"
    Unblock-File -Path ".\SDAFUtilities.psm1"
    
    Import-Module ".\SDAFUtilities.psm1"
    
    # Create Managed Identity
    $ManagedServiceIdentity = New-SDAFUserAssignedIdentity `
        -ManagedIdentityName "$ControlPlaneName" `
        -ResourceGroupName $MSIResourceGroupName `
        -SubscriptionId $ControlPlaneSubscriptionId `
        -Location $Location `
        -Verbose
    
    # Create Azure DevOps Project with Managed Identity
    New-SDAFADOProject `
        -AdoOrganization $AzureDevOpsOrganizationUrl `
        -AdoProject $AzureDevOpsProjectName `
        -TenantId $TenantId `
        -ControlPlaneCode $ControlPlaneCode `
        -ControlPlaneSubscriptionId $ControlPlaneSubscriptionId `
        -ControlPlaneName $ControlPlaneName `
        -AuthenticationMethod 'Managed Identity' `
        -AgentPoolName $AgentPoolName `
        -ManagedIdentityObjectId $ManagedServiceIdentity.PrincipalId `
        -CreateConnections `
        -EnableWebApp `
        -GitHubRepoName $repo `
        -BranchName $branch -Verbose
    
    Write-Output "Azure DevOps Project '$AzureDevOpsProjectName' created successfully."
    Write-Output "Managed Identity Id: $($ManagedServiceIdentity.Id)"
    Write-Output "Agent Pool Name: $AgentPoolName"
    
  4. En Azure DevOps, valide lo siguiente:

    • Se creó el proyecto.
    • El repositorio se ha rellenado.
    • Se crearon las canalizaciones.
  5. Decida desde dónde se ejecuta Terraform y el código de Ansible:

    • Ejecute código directamente desde GitHub.
    • Importe y ejecute código desde repositorios en el proyecto de Azure DevOps.

Configuración de artefactos para una nueva zona de carga de trabajo

Ejecute este procedimiento después de que el proyecto del plano de control esté disponible.

  1. Abra PowerShell y copie el siguiente script.
  2. Actualice todos los valores de parámetro para que coincida con el entorno.
  3. Ejecute el script.

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.

# Azure DevOps Configuration
$AzureDevOpsOrganizationUrl = "https://dev.azure.com/ORGANIZATIONNAME"

# Azure Infrastructure Configuration
$ControlPlaneCode = "MGMT"
$ControlPlaneRegionCode = "SECE"
$Location = "swedencentral"

$ControlPlaneName = "$ControlPlaneCode-$ControlPlaneRegionCode-DEP01"

$ManagedIdentityName = "$ControlPlaneName"
$MSIResourceGroupName = "SDAF-MSIs"

$AzureDevOpsProjectName = "SDAF-" + $ControlPlaneCode + "-" + $ControlPlaneRegionCode

$ControlPlaneSubscriptionId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$WorkloadSubscriptionId = "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"
$TenantId = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"

$WorkloadCode = "TEST"
$WorkloadRegionCode = "SECE"
$WorkloadZoneCode = $WorkloadCode + "-" + $WorkloadRegionCode + "-SAP01"

Remove-Module SDAFUtilities -ErrorAction SilentlyContinue
# Import required modules
#Repository information
$repo = "Azure/sap-automation"
$branch = "main"

Remove-Module SDAFUtilities -ErrorAction SilentlyContinue
# Import required modules
$url="https://raw.githubusercontent.com/$repo/refs/heads/$branch/deploy/scripts/pwsh/Output/SDAFUtilities/SDAFUtilities.psm1"

Write-Host "Downloading SDAFUtilities module from $url" -ForegroundColor Green

Invoke-WebRequest -Uri $url -OutFile "SDAFUtilities.psm1"
Unblock-File -Path ".\SDAFUtilities.psm1"

Import-Module ".\SDAFUtilities.psm1"

# Get Managed Identity
$ManagedServiceIdentity = Get-SDAFUserAssignedIdentity `
    -ManagedIdentityName $ManagedIdentityName `
    -ResourceGroupName $MSIResourceGroupName `
    -SubscriptionId $ControlPlaneSubscriptionId `
    -Verbose
Write-Output "Managed Identity Id: $($ManagedServiceIdentity.Id)"

New-SDAFADOWorkloadZone `
    -AdoOrganization $AzureDevOpsOrganizationUrl `
    -AdoProject $AzureDevOpsProjectName `
    -TenantId $TenantId `
    -ControlPlaneCode $ControlPlaneCode `
    -WorkloadZoneCode $WorkloadZoneCode `
    -WorkloadZoneSubscriptionId $WorkloadSubscriptionId `
    -AuthenticationMethod 'Managed Identity' `
    -ManagedIdentityObjectId $ManagedServiceIdentity.PrincipalId `
    -ManagedIdentityId $ManagedServiceIdentity.IdentityId `
    -ControlPlaneSubscriptionId $ControlPlaneSubscriptionId `
    -CreateConnections `
    -Verbose

En Azure DevOps, compruebe que se hayan creado el grupo de variables de la zona de carga de trabajo y la conexión de servicio.

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

Para generar una configuración inicial del plano de control, ejecute la canalización Crear configuración del implementador de ejemplo.

  1. En Azure DevOps, abra la canalización y seleccione Ejecutar.
  2. Seleccione la región de Azure adecuada.
  3. Establezca marcas de componente opcionales, como Azure Firewall, Azure Bastion y Configuration App Service.
  4. Compruebe que los archivos de ejemplo generados se agregaron al repositorio de configuración.

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

Use esta ruta de acceso cuando quiera crear y configurar manualmente los recursos del proyecto en lugar de usar los scripts de automatización.

Creación de un nuevo proyecto

  1. Abra Azure DevOps.

  2. Seleccione Nuevo proyecto y escriba los detalles del proyecto.

    El proyecto contiene Azure Repos y Azure Pipelines para las actividades de implementación.

  3. Si no ve Nuevo proyecto, compruebe que tiene permiso para crear proyectos en la organización.

  4. Registre la dirección URL del proyecto. Use esta dirección URL en Configuración manual del agente autohospedado de Azure DevOps Services.

Importación del repositorio

  1. Vaya a Repositorios y seleccione Importar un repositorio.
  2. Importe el repositorio sap-automation-bootstrap.
  3. Si se produce un error en la importación, continúe con Creación del repositorio para la importación manual e Importación manual del contenido del repositorio mediante un clon local.

Para obtener más información, consulte Importación de un repositorio.

Creación del repositorio para la importación manual

Realice este paso solo si la importación directa no está disponible.

  1. En Repositorios, en Configuración del proyecto, seleccione Crear.
  2. Seleccione el tipo de repositorio Git.
  3. Escriba un nombre de repositorio, como el repositorio de configuración de SAP.

Clonación del repositorio

  1. En Repositorios>, seleccione Clonar.

  2. Clone el repositorio en una carpeta local.

    Captura de pantalla de Azure DevOps con un repositorio listo para la clonación.

Para obtener más información, consulte Clonación de un repositorio.

Importar manualmente el contenido del repositorio mediante un clon local

  1. Descargue sap-automation-samples como un .zip archivo.

  2. Extraiga el archivo y copie el contenido en la raíz del clon local.

  3. Abra la carpeta local en Visual Studio Code y compruebe que el control de código fuente muestra los cambios pendientes.

    Captura de pantalla de Visual Studio Code en la que se muestran los cambios pendientes del control de código fuente después de copiar los archivos.

  4. Confirme el contenido importado, por ejemplo, con el mensaje Importar desde GitHub.

  5. Seleccione Sincronizar cambios para volver a insertar los cambios en Azure Repos.

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:

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.

  1. En Azure DevOps, vaya a Configuración del proyecto>Canalizaciones>Conexiones de servicio.

    Captura de pantalla que muestra cómo crear una conexión de servicio para GitHub en Azure DevOps.

  2. Seleccione GitHub como tipo de conexión de servicio.

  3. En Configuración de OAuth, seleccione Azure Pipelines.

  4. Seleccione Autorizar e iniciar sesión en GitHub.

  5. Escriba un nombre de conexión, por ejemplo, conexión de SDAF a GitHub.

  6. Seleccione Conceder permiso de acceso a todas las canalizaciones.

  7. Haga clic en Guardar.

Configuración de un registro de aplicaciones para la aplicación web (opcional)

El marco de automatización puede aprovisionar una aplicación web como parte del plano de control. Si desea usar la aplicación web, cree primero un registro de aplicación.

Abra una instancia de Azure Cloud Shell y ejecute los siguientes comandos para el entorno de shell:

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

app_registration_client_secret=$(az ad app credential reset --id $TF_VAR_app_registration_app_id --append --query "password" -o tsv)

echo "Store app_registration_client_secret in a secure location such as Azure Key Vault or an Azure DevOps secret variable. Don't store it in plain text files or source control."

rm manifest.json

Almacene el identificador de registro de la aplicación y el secreto de cliente generado en una ubicación segura, como Azure Key Vault o variables secretas de Azure DevOps. No almacene credenciales en archivos de texto sin formato, capturas de pantalla o control de código fuente.

Creación de Azure Pipelines

Azure Pipelines se implementa como archivos YAML en el repositorio. Cree cada canalización a partir de la ruta de acceso YAML correspondiente.

  1. En Azure DevOps, vaya a Canalizaciones y seleccione Nueva canalización.
  2. Seleccione Azure Repos Git.
  3. Seleccione el repositorio raíz (el mismo nombre que el proyecto).
  4. Seleccione Archivo YAML de Azure Pipelines existente.
  5. Para cada canalización en la tabla siguiente, seleccione la ruta YAML, después guarde la canalización y rénómbrela al nombre para mostrar indicado.
Tubería YAML path Nombre para mostrar
Implementación del plano de control pipelines/01-deploy-control-plane.yml Implementación del plano de control
Implementación de la zona de carga de trabajo de SAP pipelines/02-sap-workload-zone.yml Implementación de la zona de carga de trabajo de SAP
Implementación del sistema SAP (infraestructura) pipelines/03-sap-system-deployment.yml Implementación del sistema SAP (infraestructura)
Adquisición de software de SAP deploy/pipelines/04-sap-software-download.yml Adquisición de software de SAP
Configuración de SAP e instalación de software pipelines/05-DB-and-SAP-installation.yml Configuración de SAP e instalación de software
Eliminación de implementación pipelines/10-remover-terraform.yml Eliminación de implementación
Eliminación de la implementación mediante Azure Resource Manager pipelines/11-remover-arm-fallback.yml Eliminación del despliegue mediante el procesador ARM
Eliminación del plano de control pipelines/12-remove-control-plane.yml Eliminación del plano de control
Actualizador de repositorios pipelines/20-update-ado-repository.yml Actualizador de repositorios

La canalización del Actualizador de repositorio actualiza su repositorio de Azure DevOps cuando desea incorporar los cambios de sap-automation.

Nota:

Utilice la canalización Eliminación de la implementación mediante Azure Resource Manager solo como último recurso. Quitar solo los grupos de recursos puede dejar restos que complican la reimplementación.

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 Limpieza posterior a la compilación. Instaládlo en la organización de Azure DevOps antes de ejecutar los pipelines.

Preparativos para un agente autohospedado

  1. Para crear un grupo de agentes, vaya a Configuración de la organización. En la sección Canalizaciones , seleccione Grupos de agentes>Agregar grupo. Seleccione Autohospedado como tipo de pool. Asigne al grupo un nombre que esté alineado 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.

    Captura de pantalla de la configuración de usuario de Azure DevOps en la que está resaltada la opción de tokens de acceso personal.

  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.

    Almacene el token en una ubicación segura. No almacene el valor del token en archivos de texto sin formato, capturas de pantalla, registros de terminal ni control de código fuente.

    Captura de pantalla de la nueva página de token de acceso personal con los ámbitos necesarios configurados.

Configuración de grupos de variables

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 Importancia Notas
Deployment_Configuration_Path ÁREAS DE TRABAJO Para probar la configuración de ejemplo, use samples/WORKSPACES en lugar de WORKSPACES.
Rama 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>"

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 tf_version=1.6.0 --output yaml

Después de crear el grupo, agregue S-Password como una variable secreta en Azure DevOps en lugar de pasar el valor en la línea de comandos.

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-DEVy 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 Importancia Notas
Agente Azure Pipelines o el nombre del grupo de agentes Use el grupo de agentes creado en Preparación para un agente autohospedado.
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 en Creación de una conexión de servicio
sap_fqdn Nombre de dominio completo de SAP, por ejemplo, sap.contoso.net Solo es necesario si no se usa DNS privado.
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> Utilice el token personal creado en Preparativos para un agente autohospedado y establezca el tipo de variable en secreto seleccionando el icono de bloqueo.
PISCINA <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 El ID del grupo 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 ID se puede obtener del parámetro URL definitionId 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 ID se puede obtener del parámetro URL definitionId 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 son necesarios para el grupo de 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.

  1. En Azure DevOps, vaya a Configuración del proyecto>Canalizaciones>Conexiones de servicio.

    Captura de pantalla que muestra cómo crear una conexión de servicio en Azure DevOps.

  2. Seleccione Azure Resource Manager y, a continuación, seleccione Principal de servicio (manual).

  3. Introduzca los valores de la suscripción de destino (normalmente, la suscripción del plano de control) y de la entidad de servicio.

  4. Seleccione Comprobar para validar las credenciales.

  5. Escriba un nombre de conexión, por ejemplo Connection to MGMT subscription.

  6. Seleccione Conceder permiso de acceso a todas las canalizaciones.

  7. Seleccione Comprobar y guardar.

Para obtener más información sobre cómo crear una entidad de servicio, consulte Creación de una entidad de servicio.

Concesión de permisos de repositorio

La mayoría de las canalizaciones agregan archivos a Azure Repos y, por tanto, requieren permisos de extracción. En Configuración del proyecto, 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.

  1. Vaya a Configuración del proyecto>Repositorios.

  2. Abra la pestaña Seguridad del repositorio de código fuente.

  3. Conceda permiso de contribución a Build Service.

    Captura de pantalla de la configuración de seguridad del repositorio de Azure DevOps con permisos de servicio de compilación.

Implementación del plano de control

  1. Si las canalizaciones recién creadas no están visibles, seleccione Reciente y, a continuación, vuelva a Todo.
  2. Abra la canalizaciónImplementación del plano de control.
  3. Escriba los nombres de configuración para el implementador y la biblioteca de SAP.
  4. Seleccione Ejecutar.
  5. Si desea implementar la aplicación web de configuración, seleccione Implementar 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 (VM) del implementador.

  3. Conéctese a la máquina virtual mediante Azure Bastion.

  4. El nombre de usuario predeterminado es azureadm.

  5. Seleccione Ssh Private Key (Clave privada SSH) en 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 con -sshkey.

  9. Conecte a la máquina virtual.

Para configurar el implementador, ejecute el siguiente script:

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

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

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 del proyecto de Azure DevOps que registró en Creación de un nuevo proyecto. Para la autenticación, seleccione PAT y escriba el valor del token de acceso personal (PAT) que creó en Preparación para un agente autohospedado.

Cuando se le solicite, escriba el nombre del grupo de agentes que creó en Preparación para un agente autohospedado (por ejemplo, MGMT-WEEU-POOL). Acepte el nombre del agente predeterminado y el nombre de carpeta de trabajo predeterminado. 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.

  1. Ejecute la canalización de implementación del plano de control con deploy the web app infrastructure habilitado.
  2. Espere a que la implementación finalice.
  3. Abra la pestaña Extensiones y complete la configuración posterior a la implementación.
  4. Actualice los valores de registro reply-url de aplicaciones.

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.

Este comando actualiza la dirección URL de la página principal del registro de la aplicación y redirige identificadores uniformes de recursos (URI) para la aplicación web del plano de control implementado.

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

Conceda acceso de Lector en el ámbito de la suscripción a la identidad administrada asignada por el sistema del servicio de aplicaciones:

  • Abra el recurso de App Service.
  • Seleccione Identidad.
  • En Asignado por el sistema, seleccione asignaciones de roles de Azure>Agregar una asignación de roles.
  • Seleccione el ámbito Suscripción y el rol Lector, luego seleccione Guardar.

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