자습서: 엔터프라이즈 규모에 대한 SAP 배포 자동화 프레임워크 배포
이 자습서에서는 SAP Deployment Automation Framework를 사용하여 배포를 수행하는 방법을 보여 줍니다. 이 예제에서는 Azure Cloud Shell을 사용하여 컨트롤 플레인 인프라를 배포합니다. 배포자 VM(가상 머신)이 나머지 인프라 및 SAP HANA 구성을 만듭니다.
이 자습서에서는 다음 작업을 수행합니다.
- 컨트롤 플레인(배포자 인프라 및 라이브러리)을 배포합니다.
- 워크로드 영역(가로 및 시스템)을 배포합니다.
- 자료 청구서를 다운로드/업로드합니다.
- 표준 및 SAP 관련 운영 체제 설정을 구성합니다.
- HANA 데이터베이스를 설치합니다.
- SAP SCS(Central Services) 서버를 설치합니다.
- HANA 데이터베이스를 로드합니다.
- 기본 애플리케이션 서버를 설치합니다.
자동화 프레임워크를 통해 Azure에 SAP를 배포하기 위한 세 가지 주요 단계가 있습니다.
지역을 준비합니다. 지정된 Azure 지역에서 SAP 자동화 프레임워크를 지원하는 구성 요소를 배포하세요. 이 단계에서는 다음을 수행하세요.
- 배포 환경을 만듭니다.
- Terraform 상태 파일을 위한 공유 스토리지를 만듭니다.
- SAP 설치 미디어용 공유 스토리지를 만듭니다.
워크로드 영역을 준비합니다. 가상 네트워크 및 키 자격 증명 모음과 같은 워크로드 영역 구성 요소를 배포하세요.
시스템을 배포합니다. SAP 시스템용 인프라를 배포하세요.
배포 자동화 프로세스에는 여러 워크플로가 있습니다. 이 자습서에서는 쉽게 배포할 수 있는 하나의 워크플로에 중점을 둡니다. SAP S4 HANA 독립 실행형 환경인 이 워크플로는 Bash를 사용하여 배포할 수 있습니다. 이 자습서에서는 배포의 일반 계층 구조 및 다양한 단계에 대해 설명합니다.
환경 개요
SAP Deployment Automation Framework에는 다음 두 가지 주요 구성 요소가 있습니다.
- 배포 인프라(컨트롤 플레인)
- SAP 인프라(SAP 워크로드)
다음 다이어그램은 컨트롤 플레인과 애플리케이션 플레인 간의 종속성을 보여줍니다.
이 프레임워크는 인프라 배포에 Terraform을, 운영 체제 및 애플리케이션 구성에는 Ansible을 사용합니다. 다음 다이어그램에서는 컨트롤 플레인과 워크로드 영역의 논리적 분리를 보여 줍니다.
관리 영역
관리 영역에는 다른 환경이 배포되는 컨트롤 플레인 인프라가 포함됩니다. 관리 영역이 배포된 후에는 다시 배포해야 하는 경우는 거의 없습니다.
배포자는 SAP 자동화 프레임워크의 실행 엔진입니다. 이 미리 구성된 VM은 Terraform 및 Ansible 명령을 실행하는 데 사용됩니다.
SAP 라이브러리는 Terraform 상태 파일에 대한 영구 스토리지와 컨트롤 플레인에 대해 다운로드한 SAP 설치 미디어를 제공합니다.
Terraform .tfvars
변수 파일에서 배포자 및 라이브러리를 구성합니다. 자세한 내용은 컨트롤 플레인 구성을 참조하세요.
워크로드 영역
SAP 애플리케이션에는 일반적으로 여러 배포 계층이 있습니다. 예를 들어 개발, 품질 보증 및 프로덕션 계층이 있을 수 있습니다. SAP Deployment Automation Framework에서는 이러한 계층을 워크로드 영역이라고 합니다.
SAP 워크로드 영역에는 SAP VM에 대한 네트워킹 및 공유 구성 요소가 포함됩니다. 이러한 구성 요소에는 경로 테이블, 네트워크 보안 그룹 및 가상 네트워크가 포함됩니다. Landscape는 배포를 다른 환경으로 나눌 수 있는 기회를 제공합니다. 자세한 내용은 워크로드 영역 구성을 참조하세요.
시스템 배포는 웹, 앱 및 데이터베이스 계층을 포함하여 SAP 애플리케이션을 실행하는 VM으로 구성됩니다. 자세한 내용은 SAP 시스템 구성을 참조하세요.
필수 조건
SAP Deployment Automation Framework 리포지토리는 GitHub에서 사용할 수 있습니다.
Azure Bastion을 배포하거나 SSH(Secure Shell) 클라이언트를 사용하여 배포자에 연결해야 합니다. 익숙한 SSH 클라이언트를 사용합니다.
Azure 구독 할당량 검토
Azure 구독에 선택된 지역의 DdSV4 및 EdsV4 제품군 SKU에 대한 충분한 코어 견적이 있는지 확인하세요. 각 VM 제품군에 사용할 수 있는 약 50개의 코어면 충분합니다.
SAP 소프트웨어 다운로드를 위한 S-User 계정
SAP 소프트웨어를 다운로드하려면 소프트웨어 다운로드 권한이 있는 유효한 SAP 사용자 계정(SAP-User 또는 S-User 계정)이 필요합니다.
Cloud Shell 설정
Azure Cloud Shell로 이동합니다.
Azure 계정에 로그인합니다.
az login
로그인을 인증하세요. 메시지가 표시될 때까지 창을 닫지 마세요.
활성 구독의 유효성을 검사하고 구독 ID를 기록합니다.
az account list --query "[?isDefault].{Name: name, CloudName: cloudName, SubscriptionId: id, State: state, IsDefault: isDefault}" --output=table
또는
az account list --output=table | grep True
필요한 경우 활성 구독을 변경합니다.
az account set --subscription <Subscription ID>
활성 구독이 변경된 것을 확인합니다.
az account list --query "[?isDefault].{Name: name, CloudName: cloudName, SubscriptionId: id, State: state, IsDefault: isDefault}" --output=table
선택적으로 모든 배포 아티팩트를 제거합니다. 이전 배포 아티팩트 잔재를 모두 제거하려면 이 명령을 사용합니다.
cd ~ rm -rf Azure_SAP_Automated_Deployment .sap_deployment_automation .terraform.d
배포 폴더를 만들고 리포지토리를 복제합니다.
mkdir -p ${HOME}/Azure_SAP_Automated_Deployment; cd $_ git clone https://github.com/Azure/sap-automation-bootstrap.git config git clone https://github.com/Azure/sap-automation.git sap-automation git clone https://github.com/Azure/sap-automation-samples.git samples cp -Rp samples/Terraform/WORKSPACES ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
선택적으로 Cloud Shell 인스턴스에서 사용 가능한 Terraform 및 Azure CLI 버전의 유효성을 검사합니다.
./sap-automation/deploy/scripts/helpers/check_workstation.sh
자동화 프레임워크를 실행하려면 다음 버전으로 업데이트합니다.
az
버전 2.5.0 이상.terraform
버전 1.5 이상. 필요에 따라 Terraform 지침을 사용하여 업그레이드합니다.
서비스 주체 만들기
SAP 자동화 배포 프레임워크는 배포에 서비스 주체를 사용합니다. 컨트롤 플레인 배포를 위한 서비스 주체를 만듭니다. 서비스 주체를 만들 수 있는 권한이 있는 계정을 사용해야 합니다.
서비스 주체의 이름을 선택할 때 이름이 Azure 테넌트 내에서 고유한지 확인합니다.
서비스 주체 기여자 및 사용자 액세스 관리자 권한을 부여합니다.
export ARM_SUBSCRIPTION_ID="<subscriptionId>" export control_plane_env_code="LAB" az ad sp create-for-rbac --role="Contributor" \ --scopes="/subscriptions/${ARM_SUBSCRIPTION_ID}" \ --name="${control_plane_env_code}-Deployment-Account"
출력을 검토합니다. 예시:
{ "appId": "<AppId>", "displayName": "<environment>-Deployment-Account ", "name": "<AppId>", "password": "<AppSecret>", "tenant": "<TenantId>" }
출력 세부 정보를 복사합니다.
appId
,password
및Tenant
값을 저장해야 합니다.출력은 다음 매개 변수에 매핑됩니다. 이후의 단계에서 자동화 명령에 이 매개 변수를 사용합니다.
매개 변수 입력 이름 출력 이름 spn_id
appId
spn_secret
password
tenant_id
tenant
필요에 따라 서비스 주체에게 사용자 액세스 관리자 역할을 할당합니다.
export appId="<appId>" az role assignment create --assignee ${appId} \ --role "User Access Administrator" \ --scope /subscriptions/${ARM_SUBSCRIPTION_ID}
Important
서비스 주체에 사용자 액세스 관리자 역할을 할당하지 않으면 자동화를 사용하여 권한을 할당할 수 없습니다.
컨트롤 플레인 웹 애플리케이션 구성 자격 증명
SAP 자동화 프레임워크 컨트롤 플레인의 일부로 필요한 구성 파일을 만드는 데 도움이 되는 대화형 웹 애플리케이션을 선택적으로 만들 수 있습니다.
앱 등록 만들기
웹앱을 사용하려면 먼저 인증을 위한 앱 등록을 만들어야 합니다. Cloud Shell을 열고 다음 명령을 실행합니다.
필요에 따라 LAB을 사용자 환경으로 대체합니다.
export env_code="LAB"
echo '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' >> manifest.json
export TF_VAR_app_registration_app_id=$(az ad app create \
--display-name ${env_code}-webapp-registration \
--enable-id-token-issuance true \
--sign-in-audience AzureADMyOrg \
--required-resource-access @manifest.json \
--query "appId" --output tsv )
#remove the placeholder manifest.json
rm manifest.json
export TF_VAR_webapp_client_secret=$(az ad app credential reset \
--id $TF_VAR_app_registration_app_id --append \
--query "password" --output tsv )
export TF_use_webapp=true
echo "App registration ID: ${TF_VAR_app_registration_app_id}"
echo "App registration password: ${TF_VAR_webapp_client_secret}"
참고 항목
애플리케이션 등록을 만드는 데 필요한 권한이 있는 사용자 계정을 사용하여 로그온했는지 확인합니다. 앱 등록에 대한 자세한 내용은 앱 등록 만들기를 참조하세요.
출력 세부 정보를 복사합니다. 에 대한 App registration ID
값을 저장해야 합니다 App registration password
.
출력은 다음 매개 변수에 매핑됩니다. 이후의 단계에서 자동화 명령에 이 매개 변수를 사용합니다.
매개 변수 입력 이름 | 출력 이름 |
---|---|
app_registration_app_id |
App registration ID |
webapp_client_secret |
App registration password |
구성 파일 보기
Cloud Shell에서 Visual Studio Code를 엽니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES code .
WORKSPACES
디렉터리를 확장하세요. 6개의 하위 폴더CONFIGURATION
BOMS
DEPLOYER
LANDSCAPE
LIBRARY
SYSTEM
가 있습니다. 이 폴더를 각각 확장하여 지역 배포 구성 파일을 찾습니다.적절한 하위 폴더에서 Terraform 변수 파일을 찾습니다. 예를 들어
DEPLOYER
Terraform 변수 파일은 다음 예제와 같이 보일 수 있습니다.# The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP. environment = "LAB" # The location/region value is a mandatory field, it is used to control where the resources are deployed location = "swedencentral" # 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 = true # 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 변수 파일 위치를 기록해 둡니다.
적절한 하위 폴더에서 SAP 라이브러리에 대한 Terraform 변수 파일을 찾습니다. 예를 들어
LIBRARY
Terraform 변수 파일은 다음 예제와 같이 보일 수 있습니다.# The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP. environment = "LAB" # The location/region value is a mandatory field, it is used to control where the resources are deployed location = "swedencentral" #Defines the DNS suffix for the resources dns_label = "lab.sdaf.contoso.net" # use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled use_private_endpoint = false
나중에 배포 중의 편집을 위해 Terraform 변수 파일 위치를 기록해 둡니다.
Important
dns_label
Azure 프라이빗 DNS 인스턴스와 일치하는지 확인합니다.
컨트롤 플레인 배포
deploy_controlplane.sh 스크립트를 사용하여 배포자 및 라이브러리를 배포합니다. 이러한 배포 조각은 선택한 자동화 영역에 대한 컨트롤 플레인을 구성합니다.
배포는 인프라 배포, 상태 새로 고침, 라이브러리 스토리지 계정에 Terraform 상태 파일 업로드의 주기를 거칩니다. 이러한 모든 단계는 단일 배포 스크립트로 패키지됩니다. 스크립트에는 배포자 및 라이브러리에 대한 구성 파일의 위치와 다른 매개 변수가 필요합니다.
예를 들어 배포 위치로 서유럽을 선택하고, 앞서 설명한 대로 4자로 된 이름을 SECE
을(를) 지정합니다. 샘플 배포자 구성 파일 LAB-SECE-DEP05-INFRASTRUCTURE.tfvars
는 ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/LAB-SECE-DEP05-INFRASTRUCTURE
폴더에 있습니다.
샘플 SAP 라이브러리 구성 파일 LAB-SECE-SAP_LIBRARY.tfvars
는 ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/LAB-SECE-SAP_LIBRARY
폴더에 있습니다.
서비스 주체에 대한 환경 변수를 설정합니다.
export ARM_SUBSCRIPTION_ID="<subscriptionId>" export ARM_CLIENT_ID="<appId>" export ARM_CLIENT_SECRET="<password>" export ARM_TENANT_ID="<tenantId>"
배포 네트워크의 일부가 아닌 워크스테이션 또는 Cloud Shell에서 스크립트를 실행하는 경우 다음 명령을 사용하여 IP 주소에서 연결을 허용하는 환경 변수를 설정할 수 있습니다.
export TF_VAR_Agent_IP=<your-public-ip-address>
구성 웹 애플리케이션을 배포하는 경우 다음 환경 변수도 설정해야 합니다.
export TF_VAR_app_registration_app_id=<appRegistrationId> export TF_VAR_webapp_client_secret=<appRegistrationPassword> export TF_use_webapp=true
배포자와 SAP 라이브러리를 만들고 다음 스크립트를 사용하여 배포 키 자격 증명 모음에 서비스 주체 세부 정보를 추가합니다.
export env_code="LAB" export vnet_code="DEP05" export region_code="SECE" 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" cd $CONFIG_REPO_PATH az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}" 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}"
인증 문제가 발생하면
az logout
을(를) 실행하여 로그아웃하고token-cache
을(를) 지웁니다. 그런 다음az login
을(를) 실행하여 다시 인증합니다.자동화 프레임워크가 Terraform 작업
plan
및apply
을(를) 실행할 때까지 기다립니다.배포자의 배포는 약 15-20분 동안 실행될 수 있습니다.
예정된 단계에 대한 몇 가지 값을 유의해야 합니다. 출력에서 이 텍스트 블록을 찾으세요.
######################################################################################### # # # Please save these values: # # - Key Vault: LABSECEDEP05user39B # # - Deployer IP: x.x.x.x # # - Storage Account: labsecetfstate53e # # - Web Application Name: lab-sece-sapdeployment39B # # - App registration Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # # # #########################################################################################
Azure Portal로 이동합니다.
리소스 그룹을 선택합니다. 배포자 인프라 및 라이브러리에 대한 새 리소스 그룹을 찾습니다. 예를 들어
LAB-[region]-DEP05-INFRASTRUCTURE
및LAB-[region]-SAP_LIBRARY
이(가) 표시될 수 있습니다.배포자 및 SAP 라이브러리 리소스 그룹의 내용이 여기에 표시됩니다.
이제 Terraform 상태 파일이 이름에
tfstate
이(가) 포함된 스토리지 계정에 배치됩니다. 스토리지 계정에는 배포자 및 라이브러리 상태 파일이 있는tfstate
(이)라는 컨테이너가 있습니다. 컨트롤 플레인 배포에 성공한 후tfstate
컨테이너의 내용이 여기에 표시됩니다.
일반적인 문제 및 솔루션
다음은 몇 가지 문제 해결 팁입니다.
배포자 모듈 만들기에서 다음 오류가 발생하면 스크립트를 실행할 때
WORKSPACES
디렉터리에 있는지 확인합니다.Incorrect parameter file. The file must contain the environment attribute!!
다음 오류는 일시적입니다. 동일한 명령
deploy_controlplane.sh
를 다시 실행합니다.Error: file provisioner error .. timeout - last error: dial tcp
스크립트
deploy_controlplane.sh
을(를) 실행한 직후 인증 문제가 있는 경우 다음 명령을 실행합니다.az logout az login
배포자 VM에 연결
컨트롤 플레인을 배포한 후 Terraform 상태는 원격 백 엔드 azurerm
를 사용하여 저장됩니다. 배포자 VM에 연결하기 위한 모든 비밀은 배포자의 리소스 그룹에 있는 키 자격 증명 모음에서 사용할 수 있습니다.
배포자 VM에 연결하려면 다음을 수행합니다.
Azure Portal에 로그인합니다.
키 자격 증명 모음을 선택하거나 검색합니다.
키 자격 증명 모음 페이지에서 배포자 키 자격 증명 모음을 찾습니다. 이름은
LAB[REGION]DEP05user
로 시작합니다. 필요한 경우 리소스 그룹 또는 위치로 필터링합니다.왼쪽 창의 설정 섹션에서 비밀을 선택합니다.
sshkey를 포함하는 비밀을 찾아 선택합니다.
LAB-[REGION]-DEP05-sshkey
인 것처럼 보일 수 있습니다.비밀 페이지에서 현재 버전을 선택합니다. 그런 다음 비밀 값을 복사합니다.
일반 텍스트 편집기를 엽니다. 비밀 값을 복사합니다.
SSH 키가 담긴 파일을 저장합니다. 예를 들면
C:\\Users\\<your-username>\\.ssh
를 사용합니다.파일을 저장합니다. 저장 형식 메시지가 표시될 경우 SSH가 옵션에 없으면 모든 파일을 선택합니다. 예를 들면
deployer.ssh
를 사용합니다.Visual Studio Code와 같은 모든 SSH 클라이언트를 통해 배포자 VM에 연결합니다. 이전에 기록한 공용 IP 주소와 다운로드한 SSH 키를 사용합니다. Visual Studio Code를 사용하여 배포자에 연결하는 방법에 대한 지침은 Visual Studio Code를 사용하여 배포자에 연결을 참조하세요. PuTTY를 사용하는 경우 먼저 PuTTYGen을 사용하여 SSH 키 파일을 변환합니다.
참고 항목
기본 사용자 이름은 azureadm입니다.
SSH 키를 저장하는 데 사용하는 파일이 올바른 형식(즉, CR(캐리지 리턴) 문자 없이 파일을 저장할 수 있는지 확인합니다. Visual Studio Code 또는 Notepad++를 사용합니다.
배포자 VM에 연결되면 BOM(제품 구성 정보)을 사용하여 SAP 소프트웨어를 다운로드할 수 있습니다.
공용 IP를 사용하지 않는 경우 배포자 VM에 연결
공용 IP 연결이 없는 배포의 경우 인터넷을 통한 직접 연결이 허용되지 않습니다. 이러한 경우 Azure Bastion 점프 상자를 사용하거나 Azure 가상 네트워크에 연결된 컴퓨터에서 다음 단계를 수행할 수 있습니다.
다음 예제에서는 Azure Bastion을 사용합니다.
배포자에 연결하려면 다음을 수행합니다.
Azure Portal에 로그인합니다.
배포자 VM이 포함된 리소스 그룹으로 이동합니다.
Azure Bastion을 사용하여 VM에 연결합니다.
기본 사용자 이름은 azureadm입니다.
Azure Key Vault의 SSH 프라이빗 키를 선택합니다.
컨트롤 플레인을 포함하는 구독을 선택합니다.
배포자 키 자격 증명 모음을 선택합니다.
비밀 목록에서 -sshkey로 끝나는 비밀을 선택합니다.
VM에 연결.
나머지 작업은 배포자에서 실행해야 합니다.
컨트롤 플레인 보안
컨트롤 플레인은 SAP 자동화 프레임워크에서 가장 중요한 부분입니다. 컨트롤 플레인을 보호하는 것은 중요합니다. 다음 단계는 컨트롤 플레인을 보호하는 데 도움이 됩니다.
프라이빗 엔드포인트를 사용하도록 설정하고 스토리지 계정 및 키 자격 증명 모음에 대한 공용 액세스를 차단하도록 컨트롤 플레 tfvars
인 파일을 업데이트해야 합니다.
컨트롤 플레인 구성 파일을 배포자 VM에 복사하기 위해
sync_deployer.sh
스크립트를 사용할 수 있습니다. 배포자 VM에 로그인하고 Terraform 상태 스토리지 계정 이름을 사용하도록 다음 명령을 업데이트합니다. 그런 다음, 다음 스크립트를 실행합니다.terraform_state_storage_account=labsecetfstate### cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES ../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname $terraform_state_storage_account --state_subscription $ARM_SUBSCRIPTION_ID
이 명령은 SAP 라이브러리의 스토리지 계정에서 배포자 VM으로 구성 파일을 복사
tfvars
합니다.컨트롤 플레인의 구성 파일을 다음으로 변경합니다.
# 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 = true # public_network_access_enabled controls if storage account and key vaults have public network access enabled public_network_access_enabled = false #if you want to use the webapp use_webapp=true
배포를 다시 실행하여 변경 내용을 적용합니다. 스크립트에서 스토리지 계정 이름 및 키 자격 증명 모음 이름을 업데이트합니다.
export ARM_SUBSCRIPTION_ID="<subscriptionId>" export ARM_CLIENT_ID="<appId>" export ARM_CLIENT_SECRET="<password>" export ARM_TENANT_ID="<tenantId>"
배포자 및 SAP 라이브러리를 만듭니다.
export env_code="LAB" export vnet_code="DEP05" export region_code="SECE" terraform_state_storage_account=labsecetfstate### vault_name="LABSECEDEP05user###" 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" cd $CONFIG_REPO_PATH 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" az logout az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}" ${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}" \ --storageaccountname "${terraform_state_storage_account}" \ --vault "${vault_name}"
웹 애플리케이션 배포
다음 스크립트를 사용하여 웹 애플리케이션을 배포할 수 있습니다.
export env_code="LAB"
export vnet_code="DEP05"
export region_code="SECE"
export webapp_name="<webAppName>"
export app_id="<appRegistrationId>"
export webapp_id="<webAppId>"
export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
cd $DEPLOYMENT_REPO_PATH
cd Webapp/SDAF
dotnet build SDAFWebApp.csproj
dotnet publish SDAFWebApp.csproj --output publish
cd publish
zip -r SDAF.zip .
az webapp deploy --resource-group ${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE --name $webapp_name --src-path SDAF.zip --type zip
az ad app update --id $app_id --web-home-page-url https://$webapp_name.azurewebsites.net --web-redirect-uris https://$webapp_name.azurewebsites.net/ https://$webapp_name.azurewebsites.net/.auth/login/aad/callback
az role assignment create --assignee $webapp_id --role reader --subscription $ARM_SUBSCRIPTION_ID --scope /subscriptions/$ARM_SUBSCRIPTION_ID
az webapp restart --resource-group ${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE --name $webapp_name
워크로드 영역 정보 수집
텍스트 편집기에서 다음 정보를 수집합니다. 이 정보는 “컨트롤 플레인 배포” 단계가 끝날 때 수집되었습니다.
라이브러리 리소스 그룹의 Terraform 상태 파일 스토리지 계정 이름입니다.
- 앞의 예제에 이어 리소스 그룹은
LAB-SECE-SAP_LIBRARY
입니다. - 스토리지 계정의 이름에
labsecetfstate
이(가) 포함됩니다.
- 앞의 예제에 이어 리소스 그룹은
배포자 리소스 그룹에서 키 자격 증명 모음의 이름.
- 앞의 예제에 이어 리소스 그룹은
LAB-SECE-DEP05-INFRASTRUCTURE
입니다. - 키 자격 증명 모음의 이름에는
LABSECEDEP05user
이(가) 포함됩니다.
- 앞의 예제에 이어 리소스 그룹은
배포자 VM의 공용 IP 주소입니다. 배포자의 리소스 그룹으로 이동하고, 배포자 VM을 열고, 공용 IP 주소를 복사합니다.
다음 정보를 수집해야 합니다.
- 배포자 상태 파일의 이름은 라이브러리 리소스 그룹 아래에 있습니다.
- 라이브러리 리소스 그룹>State 스토리지 계정>컨테이너>
tfstate
를 선택합니다. 배포자 상태 파일의 이름을 복사합니다. - 앞의 예제에 이어 blob의 이름은
LAB-SECE-DEP05-INFRASTRUCTURE.terraform.tfstate
입니다.
- 라이브러리 리소스 그룹>State 스토리지 계정>컨테이너>
- 배포자 상태 파일의 이름은 라이브러리 리소스 그룹 아래에 있습니다.
필요한 경우 서비스 주체를 등록합니다. 이 자습서에서는 이 단계가 필요하지 않습니다.
환경을 처음 인스턴스화할 때 서비스 주체를 등록해야 합니다. 이 자습서에서는 컨트롤 플레인이
LAB
환경에 있으며 워크로드 영역도LAB
에 있습니다. 이러한 이유로 서비스 주체를LAB
환경에 등록해야 합니다.export ARM_SUBSCRIPTION_ID="<subscriptionId>" export ARM_CLIENT_ID="<appID>" export ARM_CLIENT_SECRET="<password>" export ARM_TENANT_ID="<tenant>" export key_vault="<vaultName>" export env_code="LAB" export region_code="SECE" export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation" export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/set_secrets.sh \ --environment "${env_code}" \ --region "${region_code}" \ --vault "${key_vault}" \ --subscription "${ARM_SUBSCRIPTION_ID}" \ --spn_id "${ARM_CLIENT_ID}" \ --spn_secret "${ARM_CLIENT_SECRET}" \ --tenant_id "${ARM_TENANT_ID}"
워크로드 영역 배포 준비
다음 단계를 위해 배포자 VM에 연결합니다. 이제 리포지토리의 복사본이 있습니다.
워크로드 영역 배포
Install_workloadzone 스크립트를 사용하여 SAP 워크로드 영역을 배포합니다.
배포자 VM에서
Azure_SAP_Automated_Deployment
폴더로 이동합니다.cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/LAB-SECE-SAP04-INFRASTRUCTURE
선택적으로 워크로드 영역 구성 파일을 열고 필요한 경우 네트워크 이름과 일치하도록 네트워크 논리적 이름을 변경합니다.
워크로드 영역의 배포를 시작합니다. 앞에서 수집한 세부 정보는 다음과 같습니다.
tfstate
파일의 배포자 이름(tfstate
컨테이너에 있음)tfstate
스토리지 계정의 이름- 배포자 키 자격 증명 모음의 이름
export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export ARM_CLIENT_ID="<appId>"
export ARM_CLIENT_SECRET="<password>"
export ARM_TENANT_ID="<tenantId>"
export deployer_env_code="LAB"
export sap_env_code="LAB"
export region_code="SECE"
export deployer_vnet_code="DEP05"
export vnet_code="SAP04"
export tfstate_storage_account="<storageaccountName>"
export key_vault="<vaultName>"
export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
cd "${CONFIG_REPO_PATH}/LANDSCAPE/${sap_env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE"
parameterFile="${sap_env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
deployerState="${deployer_env_code}-${region_code}-${deployer_vnet_code}-INFRASTRUCTURE.terraform.tfstate"
$SAP_AUTOMATION_REPO_PATH/deploy/scripts/install_workloadzone.sh \
--parameterfile "${parameterFile}" \
--deployer_environment "${deployer_env_code}" \
--deployer_tfstate_key "${deployerState}" \
--keyvault "${key_vault}" \
--storageaccountname "${tfstate_storage_account}" \
--subscription "${ARM_SUBSCRIPTION_ID}" \
--spn_id "${ARM_CLIENT_ID}" \
--spn_secret "${ARM_CLIENT_SECRET}" \
--tenant_id "${ARM_TENANT_ID}"
워크로드 영역 배포가 자동으로 시작됩니다.
배포가 완료될 때까지 기다립니다. 새 리소스 그룹이 Azure Portal에 나타납니다.
SAP 시스템 인프라 배포 준비
다음 단계를 위해 배포자 VM에 연결합니다. 이제 리포지토리의 복사본이 있습니다.
WORKSPACES/SYSTEM
폴더로 이동하여 리포지토리에서 사용할 샘플 구성 파일을 복사합니다.
SAP 시스템 인프라 배포
워크로드 영역이 완료되면 SAP 시스템 인프라 리소스를 배포할 수 있습니다. SAP 시스템은 SAP 애플리케이션용 VM 및 지원 구성 요소를 만듭니다. installer.sh 스크립트를 사용하여 SAP 시스템을 배포합니다.
SAP 시스템은 다음을 배포합니다.
- 데이터베이스 VM 및 해당 디스크 및 Azure 표준 Load Balancer 인스턴스를 배포하는 데이터베이스 계층입니다. 이 계층에서 HANA 데이터베이스 또는 AnyDB 데이터베이스를 실행할 수 있습니다.
- 고객이 정의한 수의 VM 및 Azure 표준 Load Balancer 인스턴스를 배포하는 SCS 계층입니다.
- VM과 해당 디스크를 배포하는 애플리케이션 계층
- 웹 디스패처 계층입니다.
SAP 시스템을 배포합니다.
export sap_env_code="LAB"
export region_code="SECE"
export vnet_code="SAP04"
export SID="L00"
export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
cd ${CONFIG_REPO_PATH}/SYSTEM/${sap_env_code}-${region_code}-${vnet_code}-${SID}
${DEPLOYMENT_REPO_PATH}/deploy/scripts/installer.sh \
--parameterfile "${sap_env_code}-${region_code}-${vnet_code}-${SID}.tfvars" \
--type sap_system
시스템 리소스 그룹이 현재 Azure Portal에 있는지 확인합니다.
제품 구성 정보를 사용하여 SAP 소프트웨어 가져오기
자동화 프레임워크는 SAP BOM을 사용하여 SAP에서 소프트웨어를 다운로드할 수 있는 도구를 제공합니다. 소프트웨어는 SAP 라이브러리에 다운로드되며, SAP를 배포하는 데 필요한 모든 미디어에 대한 보관의 역할을 합니다.
SAP BOM은 SAP 유지 관리 플래너를 모방합니다. 관련 제품 식별자와 다운로드 URL 집합이 있습니다.
BOM 파일의 샘플 추출은 다음 예제와 같습니다.
---
name: 'S41909SPS03_v0010'
target: 'S/4 HANA 1909 SPS 03'
version: 7
product_ids:
dbl: NW_ABAP_DB:S4HANA1909.CORE.HDB.ABAP
scs: NW_ABAP_ASCS:S4HANA1909.CORE.HDB.ABAP
scs_ha: NW_ABAP_ASCS:S4HANA1909.CORE.HDB.ABAPHA
pas: NW_ABAP_CI:S4HANA1909.CORE.HDB.ABAP
pas_ha: NW_ABAP_CI:S4HANA1909.CORE.HDB.ABAPHA
app: NW_DI:S4HANA1909.CORE.HDB.PD
app_ha: NW_DI:S4HANA1909.CORE.HDB.ABAPHA
web: NW_Webdispatcher:NW750.IND.PD
ers: NW_ERS:S4HANA1909.CORE.HDB.ABAP
ers_ha: NW_ERS:S4HANA1909.CORE.HDB.ABAPHA
materials:
dependencies:
- name: HANA_2_00_055_v0005ms
media:
# SAPCAR 7.22
- name: SAPCAR
archive: SAPCAR_1010-70006178.EXE
checksum: dff45f8df953ef09dc560ea2689e53d46a14788d5d184834bb56544d342d7b
filename: SAPCAR
permissions: '0755'
url: https://softwaredownloads.sap.com/file/0020000002208852020
# Kernel
- name: "Kernel Part I ; OS: Linux on x86_64 64bit ; DB: Database independent"
이 예제 구성의 경우 리소스 그룹은 LAB-SECE-DEP05-INFRASTRUCTURE
입니다. 배포자 키 자격 증명 모음 이름에는 이름에 LABSECEDEP05user
이(가) 포함됩니다. 이 정보를 사용하여 배포자의 키 자격 증명 모음 비밀을 구성합니다.
다음 단계를 위해 배포자 VM에 연결합니다. 이제 리포지토리의 복사본이 있습니다.
SAP 사용자 계정의 사용자 이름을 통해 비밀을 추가합니다.
<vaultName>
을 배포자 자격 증명 모음의 이름으로 바꿉니다.<sap-username>
도 SAP 사용자 이름으로 바꿉니다.export key_vault=<vaultName> sap_username=<sap-username> az keyvault secret set --name "S-Username" --vault-name $key_vault --value "${sap_username}";
SAP 사용자 계정에 대한 암호를 통해 비밀을 추가합니다.
<vaultName>
을(를) 배포자 키 자격 증명 모음 이름으로 바꾸고<sap-password>
을(를) SAP 암호로 바꿉니다.참고 항목
sap_user_password
을(를) 설정할 때 작은따옴표를 사용하는 것이 중요합니다. 암호에 특수 문자를 사용하면 예기치 못한 결과가 발생할 수 있습니다.sap_user_password='<sap-password>' az keyvault secret set --name "S-Password" --vault-name "${key_vault}" --value="${sap_user_password}";
다운로드 프로세스에 대한 SAP 매개 변수 파일을 구성합니다. 그런 다음 Ansible 플레이북을 사용하여 SAP 소프트웨어를 다운로드합니다. 다음 명령을 실행합니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES mkdir BOMS cd BOMS vi sap-parameters.yaml
bom_base_name
이름 BOM으로 업데이트합니다. 배포자 리소스 그룹의 Azure 키 자격 증명 모음 이름으로 바꿉<Deployer KeyVault Name>
니다.파일은 다음 예제 구성과 비슷해야 합니다.
bom_base_name: S42022SPS00_v0001ms deployer_kv_name: <vaultName> BOM_directory: ${HOME}/Azure_SAP_Automated_Deployment/samples/SAP
Ansible 플레이북을 실행하여 소프트웨어를 다운로드합니다. 플레이북을 실행할 수 있는 한 가지 방법은 다운로더 메뉴를 사용하는 것입니다.
download_menu
스크립트를 실행합니다.${HOME}/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/download_menu.sh
실행할 플레이북을 선택합니다.
1) BoM Downloader 3) Quit Please select playbook:
플레이북
1) BoM Downloader
을(를) 선택하여 BOM 파일에서 설명하는 SAP 소프트웨어를 스토리지 계정으로 다운로드합니다.sapbits
컨테이너에 설치를 위한 미디어가 모두 있는지 확인합니다.구성 메뉴를 사용하거나 명령줄에서 직접 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/BOMS/ export ANSIBLE_PRIVATE_KEY_FILE=sshkey playbook_options=( --inventory-file="${sap_sid}_hosts.yaml" --private-key=${ANSIBLE_PRIVATE_KEY_FILE} --extra-vars="_workspace_directory=`pwd`" --extra-vars="@sap-parameters.yaml" --extra-vars="bom_processing=true" "${@}" ) # Run the playbook to retrieve the ssh key from the Azure key vault ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml # Run the playbook to perform the Operating System configuration ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_bom_downloader.yaml
원하는 경우 SAP 사용자 자격 증명을 매개 변수로 전달할 수도 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/BOMS/ sap_username=<sap-username> sap_user_password='<sap-password>' export ANSIBLE_PRIVATE_KEY_FILE=sshkey playbook_options=( --inventory-file="${sap_sid}_hosts.yaml" --private-key=${ANSIBLE_PRIVATE_KEY_FILE} --extra-vars="_workspace_directory=`pwd`" --extra-vars="@sap-parameters.yaml" --extra-vars="s_user=${sap_username}" --extra-vars="s_password=${sap_user_password}" --extra-vars="bom_processing=true" "${@}" ) # Run the playbook to retrieve the ssh key from the Azure key vault ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml # Run the playbook to perform the Operating System configuration ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_bom_downloader.yaml
SAP 애플리케이션 설치
SAP 애플리케이션 설치는 Ansible 플레이북을 통해 수행됩니다.
시스템 배포 폴더로 이동합니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
현재 폴더에 sap-parameters.yaml
및 L00_host.yaml
등의 파일이 있는지 확인합니다.
독립 실행형 SAP S/4HANA 시스템의 경우 순서대로 실행되는 8개의 플레이북이 있습니다. 플레이북을 실행할 수 있는 한 가지 방법은 구성 메뉴를 사용하는 것입니다.
configuration_menu
스크립트를 실행합니다.
${HOME}/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/configuration_menu.sh
실행할 플레이북을 선택합니다.
플레이북: 기본 운영 체제 구성
이 플레이북은 소프트웨어 리포지토리, 패키지 및 서비스의 구성을 포함하는 모든 컴퓨터에서 일반 운영 체제 구성 설정을 수행합니다.
구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to perform the Operating System configuration
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_01_os_base_config.yaml
플레이북: SAP별 운영 체제 구성
이 플레이북은 모든 컴퓨터에서 SAP 운영 체제 구성 설정을 수행합니다. 단계에는 볼륨 그룹, 파일 시스템 만들기, 소프트웨어 리포지토리, 패키지 및 서비스 구성이 포함됩니다.
구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to perform the SAP Specific Operating System configuration
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_02_os_sap_specific_config.yaml
플레이북: BOM 처리
이 플레이북은 SAP 소프트웨어를 SCS VM에 다운로드합니다.
구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_03_bom_processing.yaml
플레이북: SCS 설치
이 플레이북은 SAP Central Services를 설치합니다. 고가용성 구성의 경우 플레이북은 SAP ERS 인스턴스도 설치하고 Pacemaker를 구성합니다.
구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_00_00_sap_scs_install.yaml
플레이북: 데이터베이스 인스턴스 설치
이 플레이북은 데이터베이스 인스턴스를 설치합니다.
구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04_00_00_db_install.yaml
플레이북: 데이터베이스 로드
이 플레이북은 기본 애플리케이션 서버로부터 데이터베이스 로드 작업을 호출합니다.
구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_01_sap_dbload.yaml
플레이북: 데이터베이스 고가용성 설정
이 플레이북은 데이터베이스 고가용성을 구성합니다. HANA의 경우 HANA 데이터베이스에 대한 HANA 시스템 복제본(replica) 및 Pacemaker가 수반됩니다.
구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04_00_01_db_ha.yaml
플레이북: 기본 애플리케이션 서버 설치
이 플레이북은 기본 애플리케이션 서버를 설치합니다. 구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_02_sap_pas_install.yaml
플레이북: 애플리케이션 서버 설치
이 플레이북은 애플리케이션 서버를 설치합니다. 구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_02_sap_app_install.yaml
플레이북: Web Dispatcher 설치
이 플레이북은 웹 디스패처를 설치합니다. 구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.
이제 독립 실행형 HANA 시스템을 배포하고 구성했습니다. 고가용성(HA) SAP HANA 데이터베이스를 구성해야 하는 경우 HANA HA 플레이북을 실행합니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/LAB-SECE-SAP04-L00/
export sap_sid=L00
export ANSIBLE_PRIVATE_KEY_FILE=sshkey
playbook_options=(
--inventory-file="${sap_sid}_hosts.yaml"
--private-key=${ANSIBLE_PRIVATE_KEY_FILE}
--extra-vars="_workspace_directory=`pwd`"
--extra-vars ansible_ssh_pass='{{ lookup("env", "ANSIBLE_PASSWORD") }}'
--extra-vars="@sap-parameters.yaml"
"${@}"
)
# Run the playbook to retrieve the ssh key from the Azure key vault
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/pb_get-sshkey.yaml
# Run the playbook to download the software from the SAP Library
ansible-playbook "${playbook_options[@]}" ~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05_04_sap_web_install.yaml
설치 정리
완료되면 이 자습서에서 SAP 설치를 클린 것이 중요합니다. 그렇지 않으면 리소스와 관련한 비용이 계속해 서 발생합니다.
배포한 전체 SAP 인프라를 제거하려면 다음을 수행해야 합니다.
- SAP 시스템 인프라 리소스를 제거합니다.
- 모든 워크로드 영역(Landscape)을 제거합니다.
- 컨트롤 플레인을 제거합니다.
배포자 VM에서 SAP 인프라 리소스 및 워크로드 영역 제거를 실행합니다. Cloud Shell에서 컨트롤 플레인의 제거를 실행합니다.
시작하기 전에 Azure 계정에 로그인합니다. 그런 다음, 올바른 구독에 있는지 확인합니다.
SAP 인프라 제거
SYSTEM
폴더 내의 LAB-SECE-SAP01-L00
하위 폴더로 이동합니다. 그런 후 다음 명령을 실행합니다.
export sap_env_code="LAB"
export region_code="SECE"
export sap_vnet_code="SAP04"
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/${sap_env_code}-${region_code}-${sap_vnet_code}-L00
${DEPLOYMENT_REPO_PATH}/deploy/scripts/remover.sh \
--parameterfile "${sap_env_code}-${region_code}-${sap_vnet_code}-L00.tfvars" \
--type sap_system
SAP 워크로드 영역 제거
LANDSCAPE
폴더 내의 LAB-XXXX-SAP01-INFRASTRUCTURE
하위 폴더로 이동합니다. 그런 후 다음 명령을 실행합니다.
export sap_env_code="LAB"
export region_code="SECE"
export sap_vnet_code="SAP01"
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/${sap_env_code}-${region_code}-${sap_vnet_code}-INFRASTRUCTURE
${DEPLOYMENT_REPO_PATH}/deploy/scripts/remover.sh \
--parameterfile ${sap_env_code}-${region_code}-${sap_vnet_code}-INFRASTRUCTURE.tfvars \
--type sap_landscape
컨트롤 플레인 제거
Cloud Shell에 로그인합니다.
WORKSPACES
폴더로 이동합니다.
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/
다음 두 환경 변수를 내보냅니다.
export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export ARM_SUBSCRIPTION_ID="<subscriptionId>"
다음 명령을 실행합니다.
export region_code="SECE"
export env_code="LAB"
export vnet_code="DEP05"
cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
${DEPLOYMENT_REPO_PATH}/deploy/scripts/remove_controlplane.sh \
--deployer_parameter_file DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars \
--library_parameter_file LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars
모든 리소스가 정리되었는지 확인합니다.