Het besturingsvlak implementeren

De implementatie van het besturingsvlak voor SAP Deployment Automation Framework bestaat uit:

  • Deployer
  • SAP-bibliotheek

Diagram that shows the control plane.

De implementatiereferenties voorbereiden

SAP Deployment Automation Framework maakt gebruik van service-principals voor implementaties. Als u een service-principal wilt maken voor de implementatie van het besturingsvlak, gebruikt u een account met machtigingen voor het maken van service-principals:

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

Belangrijk

De naam van de service-principal moet uniek zijn.

Noteer de uitvoerwaarden van de opdracht:

  • appId
  • password
  • AD-tenant

Wijs eventueel de volgende machtigingen toe aan de service-principal:

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

Als u de rol Gebruikerstoegang alleen wilt opgeven Beheer istrator voor de resourcegroep, gebruikt u de volgende opdracht:


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

Het besturingsvlak implementeren

Alle artefacten die nodig zijn om het besturingsvlak te implementeren, bevinden zich in GitHub-opslagplaatsen.

Bereid u voor op de implementatie van het besturingsvlak door de opslagplaatsen te klonen met behulp van de volgende opdrachten:

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

Het configuratiebestand MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars voor de voorbeeld-implementatie bevindt zich in de ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE map.

Het voorbeeldconfiguratiebestand MGMT-WEEU-SAP_LIBRARY.tfvars van de SAP-bibliotheek bevindt zich in de ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY map.

U kunt de voorbeeldconfiguratiebestanden kopiëren om het implementatieautomatiseringsframework te testen.

Een minimaal Terraform-bestand voor het DEPLOYER bestand kan er als volgt uitzien:

# 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

Let op de locaties van het Terraform-variabelebestand voor toekomstige bewerkingen tijdens de implementatie.

Een minimaal Terraform-bestand voor het LIBRARY bestand kan er als volgt uitzien:

# 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

Let op de locaties van het Terraform-variabelebestand voor toekomstige bewerkingen tijdens de implementatie.

Voer de volgende opdracht uit om de deployer en de SAP-bibliotheek te maken. Met de opdracht worden de details van de service-principal toegevoegd aan de implementatiesleutelkluis.

Stel de omgevingsvariabelen voor de service-principal in:


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

Voer de volgende opdracht uit om het besturingsvlak te implementeren:


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

Een virtuele machine handmatig configureren als een SDAF-implementatie met behulp van Azure Bastion

Verbinding maken met de deployer:

  1. Meld u aan bij de Azure-portal.

  2. Ga naar de resourcegroep die de virtuele machine (VM) van de deployer bevat.

  3. Verbinding maken naar de virtuele machine met behulp van Azure Bastion.

  4. De standaardgebruikersnaam is azureadm.

  5. Selecteer persoonlijke SSH-sleutel in Azure Key Vault.

  6. Selecteer het abonnement dat het besturingsvlak bevat.

  7. Selecteer de sleutelkluis van de deployer.

  8. Kies in de lijst met geheimen het geheim dat eindigt op -sshkey.

  9. Maak verbinding met de VM.

Voer het volgende script uit om de implementatie te configureren:


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

Met het script worden Terraform en Ansible geïnstalleerd en wordt de implementatie geconfigureerd.

Een virtuele machine handmatig configureren als SDAF-implementatie

Verbinding maken naar de deployer-VM vanaf een computer die het virtuele Azure-netwerk kan bereiken.

Verbinding maken met de deployer:

  1. Meld u aan bij de Azure-portal.

  2. Selecteer of zoek naar sleutelkluizen.

  3. Zoek op de pagina Sleutelkluis de sleutelkluis voor de implementatie. De naam begint met MGMT[REGION]DEP00user. Filter indien nodig op de resourcegroep of locatie.

  4. Selecteer Geheimen in de sectie Instellingen in het linkerdeelvenster.

  5. Zoek en selecteer het geheim dat sshkey bevat. Het kan er als MGMT-[REGION]-DEP00-sshkeyvolgt uitzien.

  6. Selecteer op de pagina van het geheim de huidige versie. Kopieer vervolgens de geheime waarde.

  7. Open een editor voor tekst zonder opmaak. Kopieer de geheime waarde.

  8. Sla het bestand op waarin u SSH-sleutels bewaart. Een voorbeeld is C:\Users\<your-username>\.ssh.

  9. Sla het bestand op. Als u wordt gevraagd om Opslaan als te typen, selecteert u Alle bestanden als SSH geen optie is. Gebruik bijvoorbeeld deployer.ssh.

  10. Verbinding maken via een SSH-client naar de deployer-VM, zoals Visual Studio Code. Gebruik het privé-IP-adres van de implementatie en de SSH-sleutel die u hebt gedownload. Zie Verbinding maken met behulp van Visual Studio Code voor instructies over het maken van verbinding met de deployer met behulp van Visual Studio Code. Als u PuTTY gebruikt, converteert u eerst het SSH-sleutelbestand met behulp van PuTTYGen.

Notitie

De standaardgebruikersnaam is azureadm.

Configureer de implementatie met behulp van het volgende 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

Met het script worden Terraform en Ansible geïnstalleerd en wordt de implementatie geconfigureerd.

Het besturingsvlak beveiligen

Het besturingsvlak is het belangrijkste onderdeel van het SAP-automatiseringsframework. Het is belangrijk om het besturingsvlak te beveiligen. Met de volgende stappen kunt u het besturingsvlak beveiligen. Als u uw besturingsvlak hebt gemaakt met behulp van een externe virtuele machine of met behulp van de Cloud Shell, moet u het besturingsvlak beveiligen door privé-eindpunten te implementeren voor de opslagaccounts en sleutelkluizen.

U kunt het sync_deployer.sh script gebruiken om de configuratiebestanden van het besturingsvlak te kopiëren naar de vm van de deployer. Meld u aan bij de implementatie-VM en voer de volgende opdrachten uit:


cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

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

Zorg ervoor dat de use_private_endpoint variabele is ingesteld true op in de DEPLOYER en LIBRARY configuratiebestanden. Zorg er ook voor dat deze public_network_access_enabled is ingesteld false in de DEPLOYER configuratiebestanden.


# 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

Voer de implementatie van het besturingsvlak opnieuw uit om privé-eindpunten in te schakelen voor de opslagaccounts en sleutelkluizen.



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

De web-app voorbereiden

Deze stap is optioneel. Als u een op een browser gebaseerde UX wilt gebruiken om de configuratie van SAP-workloadzones en -systemen te helpen, voert u de volgende opdrachten uit voordat u het besturingsvlak implementeert.

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

Volgende stap