Kontrol düzlemini dağıtma

SAP Deployment Automation Framework için denetim düzlemi dağıtımı şunlardan oluşur:

  • Dağıtıcı
  • SAP kitaplığı

Diagram that shows the control plane.

Dağıtım kimlik bilgilerini hazırlama

SAP Deployment Automation Framework, dağıtımlar için hizmet sorumlularını kullanır. Denetim düzlemi dağıtımı için hizmet sorumlusu oluşturmak için hizmet sorumluları oluşturma izinlerine sahip bir hesap kullanın:

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

Önemli

Hizmet sorumlusunun adı benzersiz olmalıdır.

Komuttan çıkış değerlerini kaydedin:

  • appId
  • password
  • tenant

İsteğe bağlı olarak, hizmet sorumlusuna aşağıdaki izinleri atayın:

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

Kapsamı yalnızca kaynak grubuna göre belirlenmiş Kullanıcı Erişimi Yönetici istrator rolünü sağlamak istiyorsanız aşağıdaki komutu kullanın:


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

Kontrol düzlemini dağıtma

Denetim düzlemini dağıtmak için gereken tüm yapıtlar GitHub depolarında bulunur.

Aşağıdaki komutları kullanarak depoları kopyalayarak denetim düzlemi dağıtımına hazırlanın:

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

Örnek dağıtımcı yapılandırma dosyası MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars klasöründe bulunur ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE .

Örnek SAP kitaplığı yapılandırma dosyası MGMT-WEEU-SAP_LIBRARY.tfvars klasöründe bulunur ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY .

Dağıtım otomasyonu çerçevesini test etmeye başlamak için örnek yapılandırma dosyalarını kopyalayabilirsiniz.

için DEPLOYER en düşük Terraform dosyası şu örneğe benzer olabilir:

# 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

Dağıtım sırasında gelecekteki düzenlemeler için Terraform değişken dosya konumlarına dikkat edin.

için LIBRARY en düşük Terraform dosyası şu örneğe benzer olabilir:

# 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

Dağıtım sırasında gelecekteki düzenlemeler için Terraform değişken dosya konumlarına dikkat edin.

Dağıtıcıyı ve SAP kitaplığını oluşturmak için aşağıdaki komutu çalıştırın. komutu, hizmet sorumlusu ayrıntılarını dağıtım anahtarı kasasına ekler.

Hizmet sorumlusu için ortam değişkenlerini ayarlayın:


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

Denetim düzlemini dağıtmak için aşağıdaki komutu çalıştırın:


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

Azure Bastion kullanarak sanal makineyi SDAF dağıtıcısı olarak el ile yapılandırma

Dağıtımcıya bağlanmak için:

  1. Azure Portal oturum açın.

  2. Dağıtıcı sanal makinesini (VM) içeren kaynak grubuna gidin.

  3. Azure Bastion kullanarak VM'ye Bağlan.

  4. Varsayılan kullanıcı adı azureadm'dir.

  5. Azure Key Vault'tan SSH Özel Anahtarı'na tıklayın.

  6. Denetim düzlemini içeren aboneliği seçin.

  7. Dağıtımcı anahtar kasasını seçin.

  8. Gizli dizi listesinden -sshkey ile biten gizli diziyi seçin.

  9. VM’ye bağlanın.

Dağıtıcıyı yapılandırmak için aşağıdaki betiği çalıştırın:


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

Betik Terraform ve Ansible'ı yükler ve dağıtıcıyı yapılandırir.

Sanal makineyi SDAF dağıtıcısı olarak el ile yapılandırma

Azure sanal ağına ulaşabilen bir bilgisayardan dağıtıcı VM'sine Bağlan.

Dağıtımcıya bağlanmak için:

  1. Azure Portal oturum açın.

  2. Anahtar kasalarını seçin veya arayın.

  3. Anahtar kasası sayfasında dağıtan anahtar kasasını bulun. Ad ile MGMT[REGION]DEP00userbaşlar. Gerekirse Kaynak grubuna veya Konuma göre filtreleyin.

  4. Sol bölmedeki Ayarlar bölümünde Gizli Diziler'i seçin.

  5. sshkey içeren gizli diziyi bulun ve seçin. gibi MGMT-[REGION]-DEP00-sshkeygörünebilir.

  6. Gizli dizinin sayfasında geçerli sürümü seçin. Ardından Gizli dizi değerini kopyalayın.

  7. Düz metin düzenleyicisini açın. Gizli dizi değerini kopyalayın.

  8. SSH anahtarlarını tuttuğunuz dosyayı kaydedin. C:\Users\<your-username>\.ssh bunun bir örneğidir.

  9. Dosyayı kaydedin. Kayıt türü istenirse, SSH bir seçenek değilse Tüm dosyalar'ı seçin. Örneğin, kullanın deployer.ssh.

  10. Visual Studio Code gibi herhangi bir SSH istemcisi aracılığıyla dağıtıcı VM'sine Bağlan. Dağıtanın özel IP adresini ve indirdiğiniz SSH anahtarını kullanın. Visual Studio Code kullanarak dağıtıcıya bağlanma yönergeleri için bkz. Visual Studio Code kullanarak dağıtıcıya Bağlan. PuTTY kullanıyorsanız önce PuTTYGen kullanarak SSH anahtar dosyasını dönüştürün.

Dekont

Varsayılan kullanıcı adı azureadm'dir.

Aşağıdaki betiği kullanarak dağıtıcıyı yapılandırın:

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

Betik Terraform ve Ansible'ı yükler ve dağıtıcıyı yapılandırir.

Kontrol düzleminin güvenliğini sağlama

Kontrol düzlemi SAP otomasyon çerçevesinin en kritik parçasıdır. Kontrol düzleminin güvenliğini sağlamak önemlidir. Aşağıdaki adımlar kontrol düzleminin güvenliğini sağlamaya yardımcı olur. Bir dış sanal makine kullanarak veya cloud shell kullanarak denetim düzleminizi oluşturduysanız, depolama hesapları ve anahtar kasaları için özel uç noktalar uygulayarak denetim düzleminin güvenliğini sağlamalısınız.

Denetim düzlemi sync_deployer.sh yapılandırma dosyalarını dağıtıcı VM'ye kopyalamak için betiği kullanabilirsiniz. Dağıtan VM'de oturum açın ve aşağıdaki komutları çalıştırın:


cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

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

değişkeninin use_private_endpoint ve LIBRARY yapılandırma dosyalarında olarak ayarlandığından DEPLOYERtrue emin olun. Bunun yapılandırma dosyalarında olarak ayarlandığından falseDEPLOYER da emin olunpublic_network_access_enabled.


# 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

Depolama hesapları ve anahtar kasaları için özel uç noktaları etkinleştirmek için denetim düzlemi dağıtımını yeniden çalıştırın.



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

Web uygulamasını hazırlama

Bu adım isteğe bağlıdır. TARAYıCı tabanlı bir UX'in SAP iş yükü bölgelerinin ve sistemlerinin yapılandırılmasına yardımcı olmasını istiyorsanız, denetim düzlemini dağıtmadan önce aşağıdaki komutları çalıştırın.

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

Sonraki adım