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 $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
}
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
}
}
$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
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.
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í.
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 eshttps://github.com/Azure/sap-automation-bootstrap.git
. - Nombre del repositorio de código:
sap-automation
. El origen eshttps://github.com/Azure/sap-automation.git
. - Nombre del repositorio de ejemplo y plantilla:
sap-samples
. El origen eshttps://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.
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
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.Inicie sesión con la cuenta de usuario que planea usar en su organización de Azure DevOps .
En la página principal, abra la configuración del usuario y seleccione Tokens de acceso personal.
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.
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_version=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.
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
.
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:
Inicie sesión en Azure Portal.
Vaya al grupo de recursos que contiene la máquina virtual del implementador.
Conéctese la máquina virtual Linux con Azure Bastion.
El nombre de usuario predeterminado es azureadm.
Seleccione Clave privada SSH de Azure Key Vault.
Seleccione la suscripción que contiene el plano de control.
Seleccione el almacén de claves del implementador.
En la lista de secretos, seleccione el secreto que termina en -sshkey.
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.