Wdrażanie płaszczyzny sterowania
Wdrożenie płaszczyzny sterowania dla programu SAP Deployment Automation Framework składa się z następujących elementów:
- Narzędzie do wdrażania
- Biblioteka SAP
Przygotowywanie poświadczeń wdrożenia
Platforma SAP Deployment Automation Framework używa jednostek usługi na potrzeby wdrożeń. Aby utworzyć jednostkę usługi dla wdrożenia płaszczyzny sterowania, użyj konta z uprawnieniami do tworzenia jednostek usługi:
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscriptionID>" --name="<environment>-Deployment-Account"
Ważne
Nazwa jednostki usługi musi być unikatowa.
Zapisz wartości wyjściowe z polecenia :
- appId
- hasło
- tenant
Opcjonalnie przypisz następujące uprawnienia do jednostki usługi:
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>
Jeśli chcesz podać rolę Administracja istratora dostępu użytkowników w zakresie tylko do grupy zasobów, użyj następującego polecenia:
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>
Wdrażanie płaszczyzny sterowania
Wszystkie artefakty wymagane do wdrożenia płaszczyzny sterowania znajdują się w repozytoriach GitHub.
Przygotuj się do wdrożenia płaszczyzny sterowania, klonując repozytoria przy użyciu następujących poleceń:
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.tfvars
konfiguracji 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.tfvars
konfiguracji 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 automatyzacji wdrażania.
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 = 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
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 = false
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 jednostki usługi do magazynu kluczy wdrażania.
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 --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}"
Ręczne konfigurowanie maszyny wirtualnej jako narzędzia do wdrażania sdAF przy użyciu usługi Azure Bastion
Aby nawiązać połączenie z modułem wdrażania:
Zaloguj się w witrynie Azure Portal.
Przejdź do grupy zasobów zawierającej maszynę wirtualną wdrażania.
Połączenie do maszyny wirtualnej 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 wdrażania.
Z listy wpisów tajnych wybierz wpis tajny kończący się ciągiem -sshkey.
Nawiąż połączenie z maszyną wirtualną.
Uruchom następujący skrypt, aby skonfigurować narzędzie do wdrażania:
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 narzędzie do wdrażania.
Ręczne konfigurowanie maszyny wirtualnej jako narzędzia do wdrażania SDAF
Połączenie do maszyny wirtualnej modułu wdrażania z komputera, który może nawiązać połączenie z siecią wirtualną platformy Azure.
Aby nawiązać połączenie z modułem wdrażania:
Zaloguj się w witrynie Azure Portal.
Wybierz lub wyszukaj magazyny kluczy.
Na stronie Magazyn kluczy znajdź magazyn kluczy wdrażania. Nazwa zaczyna się od
MGMT[REGION]DEP00user
. W razie potrzeby przefiltruj według grupy zasobów lub lokalizacji.W sekcji Ustawienia w okienku po lewej stronie wybierz pozycję Wpisy tajne.
Znajdź i wybierz wpis tajny zawierający klucz sshkey. Może to wyglądać następująco:
MGMT-[REGION]-DEP00-sshkey
.Na stronie wpisu tajnego wybierz bieżącą wersję. Następnie skopiuj wartość Wpis tajny.
Otwórz edytor zwykłego tekstu. Skopiuj wartość wpisu tajnego.
Zapisz plik, w którym zachowasz klucze SSH. Może to być na przykład
C:\Users\<your-username>\.ssh
.Zapisz plik. Jeśli zostanie wyświetlony monit o zapisanie jako typ, wybierz pozycję Wszystkie pliki , jeśli protokół SSH nie jest opcją. Użyj na przykład nazwy
deployer.ssh
.Połączenie do maszyny wirtualnej wdrażania za pośrednictwem dowolnego klienta SSH, takiego jak Visual Studio Code. Użyj prywatnego adresu IP wdrożonego modułu wdrażania i pobranego klucza SSH. Aby uzyskać instrukcje dotyczące nawiązywania połączenia z modułem wdrażania przy użyciu programu Visual Studio Code, zobacz Połączenie do narzędzia wdrażania przy użyciu programu Visual Studio Code. Jeśli używasz programu PuTTY, najpierw przekonwertuj plik klucza SSH przy użyciu programu PuTTYGen.
Uwaga
Domyślna nazwa użytkownika to azureadm.
Skonfiguruj narzędzie do wdrażania przy użyciu następującego skryptu:
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 narzędzie do wdrażania.
Zabezpieczanie płaszczyzny sterowania
Płaszczyzna sterowania jest najbardziej krytyczną częścią struktury automatyzacji SAP. Ważne jest, aby zabezpieczyć płaszczyznę sterowania. Poniższe kroki ułatwiają zabezpieczenie płaszczyzny sterowania. Jeśli płaszczyzna sterowania została utworzona przy użyciu zewnętrznej maszyny wirtualnej lub usługi Cloud Shell, należy zabezpieczyć płaszczyznę sterowania przez zaimplementowanie prywatnych punktów końcowych dla kont magazynu i magazynów kluczy.
Możesz użyć skryptu sync_deployer.sh
, aby skopiować pliki konfiguracji płaszczyzny sterowania do maszyny wirtualnej wdrażającej. Zaloguj się do maszyny wirtualnej modułu wdrażania i uruchom następujące polecenia:
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES
../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname mgtneweeutfstate### --state_subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Upewnij się, że zmienna jest ustawiona use_private_endpoint
na true
w plikach DEPLOYER
konfiguracji i .LIBRARY
Upewnij się również, że public_network_access_enabled
jest ustawiona wartość false
w plikach DEPLOYER
konfiguracji.
# 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
Uruchom ponownie wdrożenie płaszczyzny sterowania, aby włączyć prywatne punkty końcowe dla kont magazynu i magazynów 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
To krok jest opcjonalny. Jeśli chcesz, aby środowisko użytkownika oparte na przeglądarce pomogło w konfiguracji stref obciążeń i systemów SAP, uruchom następujące polecenia przed wdrożeniem płaszczyzny sterowania.
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