Развертывание уровня управления

Развертывание уровня управления для sap Deployment Automation Framework состоит из следующих элементов:

  • Учетные данные средства развертывания
  • библиотека SAP.

Diagram that shows the control plane.

Подготовка учетных данных для развертывания

SAP Deployment Automation Framework использует субъекты-службы для развертываний. Чтобы создать субъект-службу для развертывания уровня управления, используйте учетную запись с разрешениями на создание субъектов-служб:

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

Важно!

Имя субъекта-службы должно быть уникальным.

Запишите выходные значения из команды:

  • appId
  • password
  • tenant

При необходимости назначьте субъекту-службе следующие разрешения:

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

Если вы хотите предоставить роль пользователя Администратор istrator, область только группе ресурсов, используйте следующую команду:


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

Развертывание уровня управления

Все артефакты, необходимые для развертывания плоскости управления, находятся в репозиториях GitHub.

Подготовьтесь к развертыванию плоскости управления, клонируя репозитории с помощью следующих команд:

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

Пример файла MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars конфигурации развертывающегося находится в папке ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE .

Пример файла MGMT-WEEU-SAP_LIBRARY.tfvars конфигурации библиотеки SAP находится в папке ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY .

Вы можете скопировать примеры файлов конфигурации, чтобы начать тестирование платформы для автоматизации развертывания.

Минимальный файл Terraform для DEPLOYER этого примера может выглядеть следующим образом:

# 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

Запомните расположения файлов переменных Terraform, чтобы вносить изменения во время развертывания.

Минимальный файл Terraform для LIBRARY этого примера может выглядеть следующим образом:

# 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

Запомните расположения файлов переменных Terraform, чтобы вносить изменения во время развертывания.

Выполните следующую команду, чтобы создать развертыватель и библиотеку SAP. Команда добавляет сведения субъекта-службы в хранилище ключей развертывания.

Задайте переменные среды для субъекта-службы:


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

Выполните следующую команду, чтобы развернуть уровень управления.


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

Вручную настройте виртуальную машину в качестве средства развертывания SDAF с помощью Бастиона Azure

Чтобы подключиться к развертыванию, выполните следующие действия.

  1. Войдите на портал Azure.

  2. Перейдите в группу ресурсов, содержащую виртуальную машину развертывания.

  3. Подключение на виртуальную машину с помощью Бастиона Azure.

  4. Имя пользователя по умолчанию — azureadm.

  5. Выберите закрытый ключ SSH из Azure Key Vault.

  6. Выберите подписку, содержащую плоскость управления.

  7. Выберите хранилище ключей средства развертывания.

  8. В списке секретов выберите секрет, который заканчивается - sshkey.

  9. Подключитесь к виртуальной машине.

Выполните следующий скрипт, чтобы настроить средство развертывания:


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

Скрипт устанавливает Terraform и Ansible и настраивает средство развертывания.

Вручную настройте виртуальную машину в качестве средства развертывания SDAF

Подключение на виртуальную машину развертывающегося с компьютера, который может получить доступ к виртуальной сети Azure.

Чтобы подключиться к развертыванию, выполните следующие действия.

  1. Войдите на портал Azure.

  2. Выберите или найдите хранилища ключей.

  3. На странице Хранилище ключей найдите хранилище ключей средства развертывания. Имя начинается с MGMT[REGION]DEP00user. При необходимости фильтруйте по группе ресурсов или расположению.

  4. В разделе Параметры в левой области выберите "Секреты".

  5. Найдите и выберите секрет, содержащий sshkey. Это может выглядеть так MGMT-[REGION]-DEP00-sshkey.

  6. На странице секрета выберите текущую версию. Затем скопируйте значение Secret.

  7. Откройте редактор обычного текста. Скопируйте значение секрета.

  8. Сохраните файл, в котором хранятся ключи SSH. Например, C:\Users\<your-username>\.ssh.

  9. Сохраните файл. Если будет предложено Сохранить как тип, выберите Все файлы, если нет варианта SSH. Например, укажите deployer.ssh.

  10. Подключение на виртуальную машину развертывания через любой клиент SSH, например Visual Studio Code. Используйте частный IP-адрес средства развертывания и скачанный ключ SSH. Инструкции по подключению к средству развертывания с помощью Visual Studio Code см. в Подключение в средстве развертывания с помощью Visual Studio Code. Если вы используете PuTTY, сначала преобразуйте файл ключа SSH с помощью PuTTYGen.

Примечание.

Имя пользователя по умолчанию — azureadm.

Настройте средство развертывания с помощью следующего скрипта:

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

Скрипт устанавливает Terraform и Ansible и настраивает средство развертывания.

Защита плоскости управления

Уровень управления является наиболее важной частью платформы автоматизации SAP. Важно обеспечить безопасность плоскости управления. Следующие действия помогут защитить плоскость управления. Если вы создали плоскость управления с помощью внешней виртуальной машины или с помощью облачной оболочки, необходимо защитить плоскость управления путем реализации частных конечных точек для учетных записей хранения и хранилищ ключей.

Скрипт можно использовать sync_deployer.sh для копирования файлов конфигурации уровня управления на виртуальную машину развертывающего средства. Войдите на виртуальную машину развертывания и выполните следующие команды:


cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

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

Убедитесь, что use_private_endpoint переменная задана true в файлах конфигурации и LIBRARY файлах DEPLOYER конфигурации. Кроме того, убедитесь, что public_network_access_enabled он задан false в файлах DEPLOYER конфигурации.


# 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

Повторно выполните развертывание плоскости управления, чтобы включить частные конечные точки для учетных записей хранения и хранилищ ключей.



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

Подготовка веб-приложения

Этот шаг необязательный. Если вы хотите, чтобы ПОЛЬЗОВАТЕЛЬСКИЙ интерфейс на основе браузера помог настроить зоны и системы рабочих нагрузок SAP, выполните следующие команды перед развертыванием плоскости управления.

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

Следующий шаг