Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Płaszczyzna sterowania to infrastruktura wdrażania platformy SAP Deployment Automation Framework (SDAF). Zapewnia agentów wdrażania, magazyn stanów i zarządzanie poświadczeniami, które struktura musi mieć do aprowizacji i konfiguracji środowisk SAP na platformie Azure.
Bez płaszczyzny sterowania nie można uruchamiać przepływów pracy programu Terraform i rozwiązania Ansible, które wdrażają strefy obciążeń i systemy SAP. Skonfigurowanie płaszczyzny sterowania jest pierwszym krokiem wdrażania w strukturze.
W tym artykule przygotujesz poświadczenia wdrożenia, skonfigurujesz składniki modułu wdrażania i biblioteki SAP oraz uruchomisz skrypty, które tworzą zasoby płaszczyzny sterowania w ramach subskrypcji platformy Azure.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.
- Uprawnienia do tworzenia jednostek usługi lub tożsamości zarządzanych dla subskrypcji.
- Interfejs wiersza polecenia platformy Azure zainstalowany na stacji roboczej z systemem Linux lub dostęp do usługi Azure DevOps.
Przygotowywanie poświadczeń wdrożenia
SDAF używa tożsamości zarządzanych (zalecanych) lub podmiotów zabezpieczeń usługi na potrzeby wdrożeń.
Utwórz poświadczenia uwierzytelniania dla wdrożenia płaszczyzny sterowania. Użyj konta, które ma uprawnienia do tworzenia głównych usług.
Aby utworzyć jednostkę usługi:
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscriptionID>" --name="<environment>-Deployment-Account"Aby utworzyć tożsamość zarządzaną:
az identity create --name "<environment>-Deployment-Identity" --resource-group $ResourceGroupName --location $Location --query "{id:id, principalId:principalId, clientId:clientId}" az role assignment create --assignee-object-id <principalId> --role "Contributor" --scope /subscriptions/<subscriptionID>Ważne
Nazwa jednostki usługi musi być unikatowa.
Zapisz wartości wyjściowe z polecenia :
- Identyfikator aplikacji
- hasło
- dzierżawa
Opcjonalnie przypisz rolę administratora dostępu użytkowników do jednostki usługi lub tożsamości zarządzanej:
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>Aby ograniczyć zakres roli do określonej grupy zasobów, użyj następującego polecenia:
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>
Uruchom wdrożenie płaszczyzny sterowania
Wszystkie artefakty wymagane do wdrożenia płaszczyzny sterowania znajdują się w repozytoriach GitHub. Sklonuj repozytoria, aby przygotować się do wdrożenia płaszczyzny sterowania:
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
Przykładowy plik
MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvarskonfiguracji narzędzia wdrażania znajduje się w folderze~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE.Przykładowy plik
MGMT-WEEU-SAP_LIBRARY.tfvarskonfiguracji biblioteki SAP znajduje się w folderze~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY.
Możesz skopiować przykładowe pliki konfiguracji, aby rozpocząć testowanie struktury.
Minimalny plik Terraform dla DEPLOYER tego pliku może wyglądać następująco:
# 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 = true
# 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 = true
# 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 = false
Zanotuj lokalizacje plików zmiennych programu Terraform na potrzeby przyszłych edycji podczas wdrażania.
Minimalny plik Terraform dla LIBRARY tego pliku może wyglądać następująco:
# 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 = true
Zanotuj lokalizacje plików zmiennych programu Terraform na potrzeby przyszłych edycji podczas wdrażania.
Uruchom następujące polecenie, aby utworzyć narzędzie wdrażania i bibliotekę SAP. Polecenie dodaje szczegóły obiektu zabezpieczeń usługi do magazynu kluczy związanego z wdrażaniem.
Ustaw zmienne środowiskowe dla tożsamości zarządzanej:
export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export ARM_CLIENT_ID="<managedIdentityAppId>"
export ARM_TENANT_ID="<tenantId>"
Ustaw zmienne środowiskowe dla jednostki usługi:
export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export ARM_CLIENT_ID="<appId>"
export ARM_CLIENT_SECRET="<password>"
export ARM_TENANT_ID="<tenantId>"
Uruchom następujące polecenie, aby wdrożyć płaszczyznę sterowania:
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 --identity --client-id "${ARM_CLIENT_ID}"
# Uncomment next line for service principal based login
# 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"
#When using managed identity use:
${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}" \
--msi
#When using a service principal use:
${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}"
Ręczne konfigurowanie maszyny wirtualnej
Aby nawiązać połączenie z modułem wdrażania:
Zaloguj się do portalu Azure.
Przejdź do grupy zasobów zawierającej maszynę wirtualną "deployer".
Nawiąż połączenie z maszyną wirtualną przy użyciu usługi Azure Bastion. Domyślna nazwa użytkownika to azureadm.
Wybierz pozycję Klucz prywatny SSH z usługi Azure Key Vault.
Wybierz subskrypcję zawierającą płaszczyznę sterowania.
Wybierz magazyn kluczy dla wdrożeniowca.
Z listy sekretów wybierz sekret kończący się na -sshkey.
Nawiąż połączenie z maszyną wirtualną.
Aby skonfigurować narzędzie do wdrażania, uruchom następujący skrypt:
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
Skrypt instaluje program Terraform i rozwiązanie Ansible oraz konfiguruje program deployer.
Zabezpieczanie płaszczyzny sterowania
Płaszczyzna sterowania jest najbardziej krytyczną częścią SDAF. Jeśli płaszczyzna sterowania została utworzona przy użyciu zewnętrznej maszyny wirtualnej lub usługi Cloud Shell, zabezpiecz ją, implementując prywatne punkty końcowe dla kont magazynu i magazynów kluczy.
Zaloguj się do maszyny wirtualnej narzędzia wdrażającego i skopiuj pliki konfiguracji płaszczyzny sterowania przy użyciu skryptu
sync_deployer.sh:cd ~/Azure_SAP_Automated_Deployment/WORKSPACES ../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname mgtneweeutfstate### --state_subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxUstaw zmienną
use_private_endpointnatruew plikach konfiguracjiDEPLOYERiLIBRARY. Ustaw również wartośćpublic_network_access_enablednafalsew plikachDEPLOYERkonfiguracji:# Defines that the storage accounts and key vaults have private endpoints enabled use_private_endpoint = true # Controls if storage account and key vaults have public network access enabled public_network_access_enabled = falseUruchom ponownie wdrożenie płaszczyzny kontrolnej, aby włączyć prywatne punkty końcowe dla kont magazynu i skrytek kluczy.
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
Przygotowywanie aplikacji internetowej
Ten krok jest opcjonalny. Jeśli chcesz, aby interfejs użytkownika oparty na przeglądarce pomógł skonfigurować strefy obciążeń i systemy SAP, przed wdrożeniem płaszczyzny sterowania uruchom następujące polecenia.
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