Condividi tramite


Distribuire il piano di controllo

La distribuzione del piano di controllo per SAP Deployment Automation Framework è costituita da:

  • Deployer
  • Libreria SAP

Diagram that shows the control plane.

Preparare le credenziali di distribuzione

SAP Deployment Automation Framework usa le entità servizio per le distribuzioni. Per creare un'entità servizio per la distribuzione del piano di controllo, usare un account con autorizzazioni per creare entità servizio:

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

Importante

Il nome dell'entità servizio deve essere univoco.

Registrare i valori di output dal comando :

  • appId
  • password
  • tenant

Facoltativamente, assegnare le autorizzazioni seguenti all'entità servizio:

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

Se si vuole specificare il ruolo Accesso utente Amministrazione istrator con ambito solo al gruppo di risorse, usare il comando seguente:


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

Distribuire il piano di controllo

Tutti gli artefatti necessari per distribuire il piano di controllo si trovano nei repository GitHub.

Preparare la distribuzione del piano di controllo clonando i repository usando i comandi seguenti:

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

Il file MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars di configurazione del deployer di esempio si trova nella ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE cartella .

Il file MGMT-WEEU-SAP_LIBRARY.tfvars di configurazione della libreria SAP di esempio si trova nella ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY cartella .

È possibile copiare i file di configurazione di esempio per avviare il test del framework di automazione della distribuzione.

Un file Terraform minimo per potrebbe essere simile all'esempio DEPLOYER seguente:

# 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

Si notino i percorsi dei file delle variabili Terraform per le modifiche future durante la distribuzione.

Un file Terraform minimo per potrebbe essere simile all'esempio LIBRARY seguente:

# 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

Si notino i percorsi dei file delle variabili Terraform per le modifiche future durante la distribuzione.

Eseguire il comando seguente per creare il deployer e la libreria SAP. Il comando aggiunge i dettagli dell'entità servizio all'insieme di credenziali delle chiavi di distribuzione.

Impostare le variabili di ambiente per l'entità servizio:


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

Eseguire il comando seguente per distribuire il piano di controllo:


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}"

Configurare manualmente una macchina virtuale come deployer SDAF usando Azure Bastion

Per connettersi al deployer:

  1. Accedere al portale di Azure.

  2. Passare al gruppo di risorse che contiene la macchina virtuale del deployer.

  3. Connessione alla macchina virtuale usando Azure Bastion.

  4. Il nome utente predefinito è azureadm.

  5. Selezionare Chiave privata SSH da Azure Key Vault.

  6. Selezionare la sottoscrizione che contiene il piano di controllo.

  7. Selezionare l'insieme di credenziali delle chiavi del deployer.

  8. Nell'elenco dei segreti scegliere il segreto che termina con -sshkey.

  9. Connettersi alla VM.

Eseguire lo script seguente per configurare il deployer:


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

Lo script installa Terraform e Ansible e configura il deployer.

Configurare manualmente una macchina virtuale come deployer SDAF

Connessione alla macchina virtuale del deployer da un computer in grado di raggiungere la rete virtuale di Azure.

Per connettersi al deployer:

  1. Accedere al portale di Azure.

  2. Selezionare o cercare Insiemi di credenziali delle chiavi.

  3. Nella pagina Insieme di credenziali delle chiavi trovare l'insieme di credenziali delle chiavi del deployer. Il nome inizia con MGMT[REGION]DEP00user. Filtrare in base al gruppo di risorse o alla località, se necessario.

  4. Nella sezione Impostazioni nel riquadro sinistro selezionare Segreti.

  5. Trovare e selezionare il segreto che contiene sshkey. Potrebbe essere simile MGMT-[REGION]-DEP00-sshkeya .

  6. Nella pagina del segreto selezionare la versione corrente. Copiare quindi il valore secret.

  7. Aprire un editor di testo normale. Copiare il valore del segreto.

  8. Salvare il file in cui si mantengono le chiavi SSH. Un esempio è C:\Users\<your-username>\.ssh.

  9. Salvare il file. Se viene richiesto di salvare con nome, selezionare Tutti i file se SSH non è un'opzione. Ad esempio, usare deployer.ssh.

  10. Connessione alla macchina virtuale di distribuzione tramite qualsiasi client SSH, ad esempio Visual Studio Code. Usare l'indirizzo IP privato del deployer e la chiave SSH scaricata. Per istruzioni su come connettersi al deployer usando Visual Studio Code, vedere Connessione al deployer usando Visual Studio Code. Se si usa PuTTY, convertire prima il file di chiave SSH usando PuTTYGen.

Nota

Il nome utente predefinito è azureadm.

Configurare il deployer usando lo script seguente:

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

Lo script installa Terraform e Ansible e configura il deployer.

Protezione del piano di controllo

Il piano di controllo è la parte più critica del framework di automazione SAP. È importante proteggere il piano di controllo. I passaggi seguenti consentono di proteggere il piano di controllo. Se è stato creato il piano di controllo usando una macchina virtuale esterna o cloud shell, è necessario proteggere il piano di controllo implementando endpoint privati per gli account di archiviazione e gli insiemi di credenziali delle chiavi.

È possibile usare lo sync_deployer.sh script per copiare i file di configurazione del piano di controllo nella macchina virtuale del deployer. Accedere alla macchina virtuale deployer ed eseguire i comandi seguenti:


cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

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

Assicurarsi che la use_private_endpoint variabile sia impostata su true nei DEPLOYER file di configurazione e LIBRARY . Assicurarsi anche che public_network_access_enabled sia impostato su false nei file di DEPLOYER configurazione.


# 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

Eseguire di nuovo la distribuzione del piano di controllo per abilitare gli endpoint privati per gli account di archiviazione e gli insiemi di credenziali delle chiavi.



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

Preparare l'app Web

Questo passaggio è facoltativo. Se si vuole un'esperienza utente basata su browser per facilitare la configurazione delle zone e dei sistemi del carico di lavoro SAP, eseguire i comandi seguenti prima di distribuire il piano di controllo.

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

Passaggio successivo