Compartir a través de


Implementación del plano de control

La implementación del plano de control para SAP Deployment Automation Framework consta de:

  • Implementador
  • Biblioteca de SAP

Diagram that shows the control plane.

Preparación de las credenciales de implementación

SAP Deployment Automation Framework usa entidades de servicio para implementaciones. Para crear una entidad de servicio para la implementación del plano de control, use una cuenta que tenga permisos para crear entidades de servicio:

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscriptionID>" --name="<environment>-Deployment-Account"
  

Importante

El nombre de la entidad de servicio debe ser único.

Registre los valores de salida del comando:

  • appId
  • password
  • tenant

Opcionalmente, asigne los permisos siguientes a la entidad de servicio:

az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>

Si desea proporcionar el rol de Administración istrator de acceso de usuario solo al grupo de recursos, use el siguiente comando:


az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>

Implementación del plano de control

Todos los artefactos necesarios para implementar el plano de control se encuentran en repositorios de GitHub.

Prepárese para la implementación del plano de control mediante la clonación de los repositorios mediante los siguientes comandos:

mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_

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

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

El archivo MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars de configuración del implementador de ejemplo se encuentra en la ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE carpeta .

El archivo MGMT-WEEU-SAP_LIBRARY.tfvars de configuración de la biblioteca SAP de ejemplo se encuentra en la ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY carpeta .

Puede copiar los archivos de configuración de ejemplo para empezar a probar el marco de automatización de la implementación.

Un archivo de Terraform mínimo para el DEPLOYER podría tener un aspecto similar al de este ejemplo:

# The environment value is a mandatory field, it is used for partitioning the environments.
environment = "MGMT"
# The location/region value is a mandatory field, it is used to control where the resources are deployed
location = "westeurope"

# management_network_address_space is the address space for management virtual network
management_network_address_space = "10.10.20.0/25"
# management_subnet_address_prefix is the address prefix for the management subnet
management_subnet_address_prefix = "10.10.20.64/28"

# management_firewall_subnet_address_prefix is the address prefix for the firewall subnet
management_firewall_subnet_address_prefix = "10.10.20.0/26"
firewall_deployment = false

# management_bastion_subnet_address_prefix is the address prefix for the bastion subnet
management_bastion_subnet_address_prefix = "10.10.20.128/26"
bastion_deployment = true

# deployer_enable_public_ip controls if the deployer Virtual machines will have Public IPs
deployer_enable_public_ip = false

# deployer_count defines how many deployer VMs will be deployed
deployer_count = 1

# use_service_endpoint defines that the management subnets have service endpoints enabled
use_service_endpoint = true

# use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
use_private_endpoint = false

# enable_firewall_for_keyvaults_and_storage defines that the storage accounts and key vaults have firewall enabled
enable_firewall_for_keyvaults_and_storage = false

# public_network_access_enabled controls if storage account and key vaults have public network access enabled
public_network_access_enabled = true

Anote las ubicaciones de los archivos de variables de Terraform para futuras modificaciones durante la implementación.

Un archivo de Terraform mínimo para el LIBRARY podría tener un aspecto similar al de este ejemplo:

# The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP.
environment = "MGMT"
# The location/region value is a mandatory field, it is used to control where the resources are deployed
location = "westeurope"

#Defines the DNS suffix for the resources
dns_label = "azure.contoso.net"

# use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
use_private_endpoint = false

Anote las ubicaciones de los archivos de variables de Terraform para futuras modificaciones durante la implementación.

Ejecute el siguiente comando para crear el implementador y la biblioteca de SAP. El comando agrega los detalles de la entidad de servicio al almacén de claves de implementación.

Establezca las variables de entorno de la entidad de servicio:


export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export       ARM_CLIENT_ID="<appId>"
export   ARM_CLIENT_SECRET="<password>"
export       ARM_TENANT_ID="<tenantId>"

Ejecute el comando siguiente para implementar el plano de control:


export            env_code="MGMT"
export         region_code="WEEU"
export           vnet_code="DEP00"

export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"

az logout
az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"

cd ~/Azure_SAP_Automated_Deployment/WORKSPACES


deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"

${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh  \
    --deployer_parameter_file "${deployer_parameter_file}"         \
    --library_parameter_file "${library_parameter_file}"            \
    --subscription "${ARM_SUBSCRIPTION_ID}"                        \
    --spn_id "${ARM_CLIENT_ID}"                                    \
    --spn_secret "${ARM_CLIENT_SECRET}"                            \
    --tenant_id "${ARM_TENANT_ID}"

Configuración manual de una máquina virtual como implementador de SDAF mediante Azure Bastion

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. Conectar a la máquina virtual mediante 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, elija el secreto que termina con -sshkey.

  9. Conecte a la máquina virtual.

Ejecute el siguiente script para configurar el implementador:


mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_

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

# Source the new variables

. /etc/profile.d/deploy_server.sh

El script instala Terraform y Ansible, y configura el implementador.

Configurar manualmente una máquina virtual como un implementador de SDAF

Conectar a la máquina virtual del implementador desde un equipo que pueda acceder a la red virtual de Azure.

Para conectarse al implementador:

  1. Inicie sesión en Azure Portal.

  2. Busque o seleccione Almacenes de claves.

  3. En la página Almacén de claves, busque el almacén de claves del implementador. El nombre empieza por MGMT[REGION]DEP00user. Filtre por el grupo de recursos o la ubicación, si es necesario.

  4. En la sección Configuración en el panel izquierdo, seleccione Secretos.

  5. Busque y seleccione el secreto que contiene sshkey. Es posible que tenga este aspecto: MGMT-[REGION]-DEP00-sshkey.

  6. En la página del secreto, seleccione la versión actual. A continuación, copie el valor secreto.

  7. Abra un editor de texto sin formato. Copie el valor del secreto.

  8. Guarde el archivo donde se mantienen las claves SSH. Un ejemplo es C:\Users\<your-username>\.ssh.

  9. Guarde el archivo. Si se le pide Guardar como tipo, seleccione Todos los archivos si SSH no es una opción. Por ejemplo, use deployer.ssh.

  10. Conéctese a la máquina virtual del implementador a través de cualquier cliente SSH, como Visual Studio Code. Use la dirección IP privada del implementador y la clave SSH que descargó. Para obtener instrucciones sobre cómo conectarse al implementador mediante Visual Studio Code, consulte Conexión al implementador mediante Visual Studio Code. Si usa PuTTY, convierta primero el archivo de clave SSH mediante PuTTYGen.

Nota:

El nombre de usuario predeterminado es azureadm.

Configure el implementador mediante el siguiente script:

mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_

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

# Source the new variables

. /etc/profile.d/deploy_server.sh

El script instala Terraform y Ansible, y configura el implementador.

Protección del plano de control

El plano de control es la parte más crítica del marco de automatización de SAP. Por lo tanto, es importante protegerlo. Los pasos siguientes le ayudarán a proteger el plano de control. Si ha creado el plano de control mediante una máquina virtual externa o mediante Cloud Shell, debe proteger el plano de control mediante la implementación de puntos de conexión privados para las cuentas de almacenamiento y los almacenes de claves.

Puede usar el sync_deployer.sh script para copiar los archivos de configuración del plano de control en la máquina virtual del implementador. Inicie sesión en la máquina virtual del implementador y ejecute los siguientes comandos:


cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname mgtneweeutfstate### --state_subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Asegúrese de que la use_private_endpoint variable está establecida true en en los DEPLOYER archivos de configuración y LIBRARY . Asegúrese también de que public_network_access_enabled está establecido false en en los archivos de DEPLOYER configuración.


# use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
use_private_endpoint = true

# public_network_access_enabled controls if storage account and key vaults have public network access enabled
public_network_access_enabled = false

Vuelva a ejecutar la implementación del plano de control para habilitar puntos de conexión privados para las cuentas de almacenamiento y los almacenes de claves.



export            env_code="MGMT"
export         region_code="WEEU"
export           vnet_code="DEP00"
export  storageaccountname=<storageaccountname>

export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"

az logout
az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"

cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"

${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh  \
    --deployer_parameter_file "${deployer_parameter_file}"         \
    --library_parameter_file "${library_parameter_file}"            \
    --subscription "${ARM_SUBSCRIPTION_ID}"                        \
    --spn_id "${ARM_CLIENT_ID}"                                    \
    --spn_secret "${ARM_CLIENT_SECRET}"                            \
    --tenant_id "${ARM_TENANT_ID}"                                 \
    --storageaccountname "${storageaccountname}"                   \
    --recover

Preparación de la aplicación web

Este paso es opcional. Si desea que una experiencia de usuario basada en explorador ayude a configurar sistemas y zonas de carga de trabajo de SAP, ejecute los siguientes comandos antes de implementar el plano de control.

echo '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' >> manifest.json

region_code=WEEU

export TF_VAR_app_registration_app_id=$(az ad app create \
    --display-name ${region_code}-webapp-registration \
    --enable-id-token-issuance true \
    --sign-in-audience AzureADMyOrg \
    --required-resource-access @manifest.json \
    --query "appId" | tr -d '"')

export TF_VAR_webapp_client_secret=$(az ad app credential reset \
    --id $TF_VAR_app_registration_app_id --append               \
    --query "password" | tr -d '"')

export TF_VAR_use_webapp=true
rm manifest.json

Paso siguiente