Bereitstellen der Steuerungsebene
Die Bereitstellung der Steuerungsebene für SAP Deployment Automation Framework besteht aus:
- Bereitsteller
- SAP-Bibliothek
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:
Melden Sie sich beim Azure-Portal an.
Wechseln Sie zu der Ressourcengruppe, die den virtuellen Bereitstellungscomputer (VM) enthält.
Verbinden mithilfe von Azure Bastion auf den virtuellen Computer.
Der Standardbenutzername lautet azureadm.
Wählen Sie Privater SSH-Schlüssel aus Azure Key Vault aus.
Wählen Sie das Abonnement aus, das die Steuerungsebene enthält.
Wählen Sie den Schlüsseltresor des Bereitstellers aus.
Wählen Sie in der Liste der geheimen Schlüssel den geheimen Schlüssel aus, der mit -sshkey endet.
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:
Melden Sie sich beim Azure-Portal an.
Wählen Sie oder suchen Sie nach Schlüsseltresoren.
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.Wählen Sie im linken Fensterbereich im Abschnitt Einstellungen die Option Geheimnisse aus.
Wählen Sie das Geheimnis aus, das sshkey enthält. Ein Beispiel hierfür ist
MGMT-[REGION]-DEP00-sshkey
.Wählen Sie auf der Seite des Geheimnisses die aktuelle Version aus. Kopieren Sie dann den Geheimen Wert.
Öffnen Sie einen normalen Text-Editor. Kopieren Sie den Geheimniswert.
Speichern Sie die Datei, in der Sie die SSH-Schlüssel abgelegt haben. z. B.
C:\Users\<your-username>\.ssh
.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
.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