Freigeben über


Bereitstellen der Steuerungsebene

Die Bereitstellung der Steuerungsebene für SAP Deployment Automation Framework besteht aus:

  • Bereitsteller
  • SAP-Bibliothek

Diagram that shows the control plane.

Bereiten Sie die Anmeldeinformationen für die Bereitstellung vor

SAP Deployment Automation Framework verwendet Dienstprinzipale für Bereitstellungen. Um einen Dienstprinzipal für die Bereitstellung der Steuerungsebene zu erstellen, verwenden Sie ein Konto, das über Berechtigungen zum Erstellen von Dienstprinzipalen verfügt:

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

Wichtig

Der Name des Dienstprinzipals muss eindeutig sein.

Notieren Sie die Ausgabewerte aus dem Befehl:

  • appId
  • password
  • tenant

Weisen Sie optional dem Dienstprinzipal die folgenden Berechtigungen zu:

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

Wenn Sie die Rolle "Benutzerzugriffsadministrator" nur für die Ressourcengruppe bereitstellen möchten, verwenden Sie den folgenden Befehl:


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

Bereitstellen der Steuerungsebene

Alle Artefakte, die zum Bereitstellen der Steuerebene erforderlich sind, befinden sich in GitHub-Repositorys.

Bereiten Sie sich auf die Bereitstellung der Steuerungsebene vor, indem Sie die Repositorys mithilfe der folgenden Befehle klonen:

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

Die Konfigurationsdatei MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars für die ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE Bereitstellung des Beispiels befindet sich im Ordner.

Die SAP-Beispielbibliothekskonfigurationsdatei MGMT-WEEU-SAP_LIBRARY.tfvars befindet sich im ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY Ordner.

Sie können die Beispielkonfigurationsdateien kopieren, um mit dem Testen des Frameworks für die Bereitstellungsautomatisierung zu beginnen.

Eine minimale Terraform-Datei für das DEPLOYER Beispiel könnte wie folgt aussehen:

# 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

Notieren Sie die Terraform-Variablendateispeicherorte für zukünftige Bearbeitungen während der Bereitstellung.

Eine minimale Terraform-Datei für das LIBRARY Beispiel könnte wie folgt aussehen:

# 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

Notieren Sie die Terraform-Variablendateispeicherorte für zukünftige Bearbeitungen während der Bereitstellung.

Führen Sie den folgenden Befehl aus, um den Deployer und die SAP-Bibliothek zu erstellen. Der Befehl fügt dem Bereitstellungsschlüsseltresor die Dienstprinzipaldetails hinzu.

Legen Sie die Umgebungsvariablen für den Dienstprinzipal fest:


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

Führen Sie den folgenden Befehl aus, um die Steuerungsebene bereitzustellen:


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

Manuelles Konfigurieren eines virtuellen Computers als SDAF-Bereitstellung mit Azure Bastion

So stellen Sie eine Verbindung zum Bereitsteller her:

  1. Melden Sie sich beim Azure-Portal an.

  2. Wechseln Sie zu der Ressourcengruppe, die den virtuellen Bereitstellungscomputer (VM) enthält.

  3. Verbinden mithilfe von Azure Bastion auf den virtuellen Computer.

  4. Der Standardbenutzername lautet azureadm.

  5. Wählen Sie Privater SSH-Schlüssel aus Azure Key Vault aus.

  6. Wählen Sie das Abonnement aus, das die Steuerungsebene enthält.

  7. Wählen Sie den Schlüsseltresor des Bereitstellers aus.

  8. Wählen Sie in der Liste der geheimen Schlüssel den geheimen Schlüssel aus, der mit -sshkey endet.

  9. Stellen Sie eine Verbindung mit der VM her.

Führen Sie das folgende Skript aus, um den Deployer zu konfigurieren:


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

Das Skript installiert Terraform und Ansible und konfiguriert den Deployer.

Manuelles Konfigurieren eines virtuellen Computers als SDAF-Bereitstellung

Verbinden auf dem virtuellen Bereitstellungscomputer von einem Computer aus, der das virtuelle Azure-Netzwerk erreichen kann.

So stellen Sie eine Verbindung zum Bereitsteller her:

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie oder suchen Sie nach Schlüsseltresoren.

  3. Suchen Sie auf der Seite Schlüsseltresor nach dem Schlüsseltresor des Deployers. Der Name beginnt mit MGMT[REGION]DEP00user. Filtern Sie bei Bedarf nach der Ressourcengruppe oder dem Speicherort.

  4. Wählen Sie im linken Fensterbereich im Abschnitt Einstellungen die Option Geheimnisse aus.

  5. Wählen Sie das Geheimnis aus, das sshkey enthält. Ein Beispiel hierfür ist MGMT-[REGION]-DEP00-sshkey.

  6. Wählen Sie auf der Seite des Geheimnisses die aktuelle Version aus. Kopieren Sie dann den Geheimen Wert.

  7. Öffnen Sie einen normalen Text-Editor. Kopieren Sie den Geheimniswert.

  8. Speichern Sie die Datei, in der Sie die SSH-Schlüssel abgelegt haben. z. B. C:\Users\<your-username>\.ssh.

  9. Speichern Sie die Datei. Wenn Sie zu Speichern als Typ aufgefordert werden, wählen Sie Alle Dateien, wenn SSH keine Option ist. Verwenden Sie z. B. deployer.ssh.

  10. Stellen Sie über einen beliebigen SSH-Client wie Visual Studio Code die Verbindung zur Bereitsteller-VM her. Verwenden Sie die private IP-Adresse des Deployers und den heruntergeladenen SSH-Schlüssel. Anweisungen zum Herstellen einer Verbindung zum Bereitsteller mithilfe von Visual Studio Code finden Sie unter Herstellen einer Verbindung zum Bereitsteller mithilfe von Visual Studio Code. Konvertieren Sie zunächst die SSH-Schlüsseldatei mit PuTTYGen, wenn Sie PuTTY verwenden.

Hinweis

Der Standardbenutzername lautet azureadm.

Konfigurieren Sie die Bereitstellung mithilfe des folgenden Skripts:

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

Das Skript installiert Terraform und Ansible und konfiguriert den Deployer.

Sichern der Steuerungsebene

Die Steuerungsebene ist der wichtigste Teil des SAP-Automatisierungsframeworks. Es ist wichtig, die Steuerebene zu sichern. Die folgenden Schritte helfen Ihnen dabei, die Steuerungsebene zu sichern. Wenn Sie Ihre Kontrollebene mithilfe eines externen virtuellen Computers oder mithilfe der Cloudshell erstellt haben, sollten Sie die Steuerungsebene sichern, indem Sie private Endpunkte für die Speicherkonten und Schlüsseltresor implementieren.

Sie können das sync_deployer.sh Skript verwenden, um die Konfigurationsdateien der Steuerebene in die bereitstellende VM zu kopieren. Melden Sie sich bei der Bereitsteller-VM an, und führen Sie die folgenden Befehle aus:


cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

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

Stellen Sie sicher, dass die use_private_endpoint Variable in den DEPLOYER Dateien und LIBRARY Konfigurationsdateien festgelegt true ist. Stellen Sie außerdem sicher, dass sie public_network_access_enabled in den DEPLOYER Konfigurationsdateien festgelegt false ist.


# 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

Führen Sie die Bereitstellung der Steuerungsebene erneut aus, um private Endpunkte für die Speicherkonten und Schlüsseltresor zu aktivieren.



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

Vorbereiten der Web-App

Dieser Schritt ist optional. Wenn Sie eine browserbasierte UX zur Konfiguration von SAP-Workloadzonen und -Systemen benötigen, führen Sie die folgenden Befehle aus, bevor Sie die Steuerungsebene bereitstellen.

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

Nächster Schritt