Implementación del plano de control
La implementación del plano de control para SAP Deployment Automation Framework consta de:
- Implementador
- Biblioteca de SAP
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:
Inicie sesión en Azure Portal.
Vaya al grupo de recursos que contiene la máquina virtual (VM) del implementador.
Conectar a la máquina virtual mediante 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, elija el secreto que termina con -sshkey.
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:
Inicie sesión en Azure Portal.
Busque o seleccione Almacenes de claves.
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.En la sección Configuración en el panel izquierdo, seleccione Secretos.
Busque y seleccione el secreto que contiene sshkey. Es posible que tenga este aspecto:
MGMT-[REGION]-DEP00-sshkey
.En la página del secreto, seleccione la versión actual. A continuación, copie el valor secreto.
Abra un editor de texto sin formato. Copie el valor del secreto.
Guarde el archivo donde se mantienen las claves SSH. Un ejemplo es
C:\Users\<your-username>\.ssh
.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
.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