자습서: 엔터프라이즈 규모에 대한 SAP 배포 자동화 프레임워크 배포

이 자습서에서는 SAP Deployment Automation Framework를 사용하여 배포를 수행하는 방법을 보여 줍니다. 이 예제에서는 Azure Cloud Shell을 사용하여 컨트롤 플레인 인프라를 배포합니다. 배포자 VM(가상 머신)이 나머지 인프라 및 SAP HANA 구성을 만듭니다.

이 자습서에서는 다음 작업을 수행합니다.

  • 컨트롤 플레인(배포자 인프라 및 라이브러리)을 배포합니다.
  • 워크로드 영역(가로 및 시스템)을 배포합니다.
  • 자료 청구서를 다운로드/업로드합니다.
  • 표준 및 SAP 관련 운영 체제 설정을 구성합니다.
  • HANA 데이터베이스를 설치합니다.
  • SAP SCS(Central Services) 서버를 설치합니다.
  • HANA 데이터베이스를 로드합니다.
  • 기본 애플리케이션 서버를 설치합니다.

자동화 프레임워크를 통해 Azure에 SAP를 배포하기 위한 세 가지 주요 단계가 있습니다.

  1. 지역을 준비합니다. 지정된 Azure 지역에서 SAP 자동화 프레임워크를 지원하는 구성 요소를 배포하세요. 이 단계에서는 다음을 수행하세요.

    1. 배포 환경을 만듭니다.
    2. Terraform 상태 파일을 위한 공유 스토리지를 만듭니다.
    3. SAP 설치 미디어용 공유 스토리지를 만듭니다.
  2. 워크로드 영역을 준비합니다. 가상 네트워크 및 키 자격 증명 모음과 같은 워크로드 영역 구성 요소를 배포하세요.

  3. 시스템을 배포합니다. SAP 시스템용 인프라를 배포하세요.

배포 자동화 프로세스에는 여러 워크플로가 있습니다. 이 자습서에서는 쉽게 배포할 수 있는 하나의 워크플로에 중점을 둡니다. SAP S4 HANA 독립 실행형 환경인 이 워크플로는 Bash를 사용하여 배포할 수 있습니다. 이 자습서에서는 배포의 일반 계층 구조 및 다양한 단계에 대해 설명합니다.

환경 개요

SAP Deployment Automation Framework에는 다음 두 가지 주요 구성 요소가 있습니다.

  • 배포 인프라(컨트롤 플레인)
  • SAP 인프라(SAP 워크로드)

다음 다이어그램은 컨트롤 플레인과 애플리케이션 플레인 간의 종속성을 보여줍니다.

Diagram that shows the DevOps tutorial infrastructure design.

이 프레임워크는 인프라 배포에 Terraform을, 운영 체제 및 애플리케이션 구성에는 Ansible을 사용합니다. 다음 다이어그램에서는 컨트롤 플레인과 워크로드 영역의 논리적 분리를 보여 줍니다.

Diagram that shows the SAP Deployment Automation Framework environment.

관리 영역

관리 영역에는 다른 환경이 배포되는 컨트롤 플레인 인프라가 포함됩니다. 관리 영역이 배포된 후에는 다시 배포해야 하는 경우는 거의 없습니다.

Diagram that shows the control plane.

배포자는 SAP 자동화 프레임워크의 실행 엔진입니다. 이 미리 구성된 VM은 Terraform 및 Ansible 명령을 실행하는 데 사용됩니다.

SAP 라이브러리는 Terraform 상태 파일에 대한 영구 스토리지와 컨트롤 플레인에 대해 다운로드한 SAP 설치 미디어를 제공합니다.

Terraform .tfvars 변수 파일에서 배포자 및 라이브러리를 구성합니다. 자세한 내용은 컨트롤 플레인 구성을 참조하세요.

워크로드 영역

SAP 애플리케이션에는 일반적으로 여러 배포 계층이 있습니다. 예를 들어 개발, 품질 보증 및 프로덕션 계층이 있을 수 있습니다. SAP Deployment Automation Framework에서는 이러한 계층을 워크로드 영역이라고 합니다.

Diagram that shows the workload zone.

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 설정

  1. Azure Cloud Shell로 이동합니다.

  2. Azure 계정에 로그인합니다.

    az login
    

    로그인을 인증하세요. 메시지가 표시될 때까지 창을 닫지 마세요.

  3. 활성 구독의 유효성을 검사하고 구독 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
    
  4. 필요한 경우 활성 구독을 변경합니다.

    az account set --subscription <Subscription ID>
    

    활성 구독이 변경된 것을 확인합니다.

    az account list --query "[?isDefault].{Name: name, CloudName: cloudName, SubscriptionId: id, State: state, IsDefault: isDefault}" --output=table
    
  5. 선택적으로 모든 배포 아티팩트를 제거합니다. 이전 배포 아티팩트 잔재를 모두 제거하려면 이 명령을 사용합니다.

    
    cd ~
    
    rm -rf Azure_SAP_Automated_Deployment .sap_deployment_automation .terraform.d
    
  6. 배포 폴더를 만들고 리포지토리를 복제합니다.

    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
    
    
  7. 선택적으로 Cloud Shell 인스턴스에서 사용 가능한 Terraform 및 Azure CLI 버전의 유효성을 검사합니다.

    ./sap-automation/deploy/scripts/helpers/check_workstation.sh
    

    자동화 프레임워크를 실행하려면 다음 버전으로 업데이트합니다.

서비스 주체 만들기

SAP 자동화 배포 프레임워크는 배포에 서비스 주체를 사용합니다. 컨트롤 플레인 배포를 위한 서비스 주체를 만듭니다. 서비스 주체를 만들 수 있는 권한이 있는 계정을 사용해야 합니다.

서비스 주체의 이름을 선택할 때 이름이 Azure 테넌트 내에서 고유한지 확인합니다.

  1. 서비스 주체 기여자 및 사용자 액세스 관리자 권한을 부여합니다.

    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>"
    }
    
  2. 출력 세부 정보를 복사합니다. appId, passwordTenant 값을 저장해야 합니다.

    출력은 다음 매개 변수에 매핑됩니다. 이후의 단계에서 자동화 명령에 이 매개 변수를 사용합니다.

    매개 변수 입력 이름 출력 이름
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. 필요에 따라 서비스 주체에게 사용자 액세스 관리자 역할을 할당합니다.

    export appId="<appId>"
    
    az role assignment create --assignee ${appId}   \
      --role "User Access Administrator"            \
      --scope /subscriptions/${ARM_SUBSCRIPTION_ID}
    

Important

서비스 주체에 사용자 액세스 관리자 역할을 할당하지 않으면 자동화를 사용하여 권한을 할당할 수 없습니다.

컨트롤 플레인 웹 애플리케이션 구성 자격 증명

SAP 자동화 프레임워크 컨트롤 플레인의 일부로 필요한 구성 파일을 만드는 데 도움이 되는 대화형 웹 애플리케이션을 선택적으로 만들 수 있습니다.

Screenshot that shows the web app front page.

앱 등록 만들기

웹앱을 사용하려면 먼저 인증을 위한 앱 등록을 만들어야 합니다. 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

구성 파일 보기

  1. Cloud Shell에서 Visual Studio Code를 엽니다.

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    code .
    
  2. WORKSPACES 디렉터리를 확장하세요. 6개의 하위 폴더CONFIGURATIONBOMSDEPLOYERLANDSCAPELIBRARYSYSTEM가 있습니다. 이 폴더를 각각 확장하여 지역 배포 구성 파일을 찾습니다.

  3. 적절한 하위 폴더에서 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 변수 파일 위치를 기록해 둡니다.

  4. 적절한 하위 폴더에서 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 폴더에 있습니다.

  1. 서비스 주체에 대한 환경 변수를 설정합니다.

    
    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
    
  2. 배포자와 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 작업 planapply을(를) 실행할 때까지 기다립니다.

    배포자의 배포는 약 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                       #
    #                                                                                       #
    #########################################################################################
    
  3. Azure Portal로 이동합니다.

    리소스 그룹을 선택합니다. 배포자 인프라 및 라이브러리에 대한 새 리소스 그룹을 찾습니다. 예를 들어 LAB-[region]-DEP05-INFRASTRUCTURELAB-[region]-SAP_LIBRARY이(가) 표시될 수 있습니다.

    배포자 및 SAP 라이브러리 리소스 그룹의 내용이 여기에 표시됩니다.

    Screenshot that shows deployer resources.

    Screenshot that shows library resources.

    이제 Terraform 상태 파일이 이름에tfstate이(가) 포함된 스토리지 계정에 배치됩니다. 스토리지 계정에는 배포자 및 라이브러리 상태 파일이 있는 tfstate(이)라는 컨테이너가 있습니다. 컨트롤 플레인 배포에 성공한 후 tfstate 컨테이너의 내용이 여기에 표시됩니다.

    Screenshot that shows the control plane Terraform state files.

일반적인 문제 및 솔루션

다음은 몇 가지 문제 해결 팁입니다.

  • 배포자 모듈 만들기에서 다음 오류가 발생하면 스크립트를 실행할 때 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에 연결하려면 다음을 수행합니다.

  1. Azure Portal에 로그인합니다.

  2. 키 자격 증명 모음을 선택하거나 검색합니다.

  3. 키 자격 증명 모음 페이지에서 배포자 키 자격 증명 모음을 찾습니다. 이름은 LAB[REGION]DEP05user로 시작합니다. 필요한 경우 리소스 그룹 또는 위치로 필터링합니다.

  4. 왼쪽 창의 설정 섹션에서 비밀을 선택합니다.

  5. sshkey를 포함하는 비밀을 찾아 선택합니다. LAB-[REGION]-DEP05-sshkey인 것처럼 보일 수 있습니다.

  6. 비밀 페이지에서 현재 버전을 선택합니다. 그런 다음 비밀 값을 복사합니다.

  7. 일반 텍스트 편집기를 엽니다. 비밀 값을 복사합니다.

  8. SSH 키가 담긴 파일을 저장합니다. 예를 들면 C:\\Users\\<your-username>\\.ssh를 사용합니다.

  9. 파일을 저장합니다. 저장 형식 메시지가 표시될 경우 SSH가 옵션에 없으면 모든 파일을 선택합니다. 예를 들면 deployer.ssh를 사용합니다.

  10. 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을 사용합니다.

배포자에 연결하려면 다음을 수행합니다.

  1. Azure Portal에 로그인합니다.

  2. 배포자 VM이 포함된 리소스 그룹으로 이동합니다.

  3. Azure Bastion을 사용하여 VM에 연결합니다.

  4. 기본 사용자 이름은 azureadm입니다.

  5. Azure Key Vault의 SSH 프라이빗 키를 선택합니다.

  6. 컨트롤 플레인을 포함하는 구독을 선택합니다.

  7. 배포자 키 자격 증명 모음을 선택합니다.

  8. 비밀 목록에서 -sshkey로 끝나는 비밀을 선택합니다.

  9. VM에 연결.

나머지 작업은 배포자에서 실행해야 합니다.

컨트롤 플레인 보안

컨트롤 플레인은 SAP 자동화 프레임워크에서 가장 중요한 부분입니다. 컨트롤 플레인을 보호하는 것은 중요합니다. 다음 단계는 컨트롤 플레인을 보호하는 데 도움이 됩니다.

프라이빗 엔드포인트를 사용하도록 설정하고 스토리지 계정 및 키 자격 증명 모음에 대한 공용 액세스를 차단하도록 컨트롤 플레 tfvars 인 파일을 업데이트해야 합니다.

  1. 컨트롤 플레인 구성 파일을 배포자 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 합니다.

  2. 컨트롤 플레인의 구성 파일을 다음으로 변경합니다.

    
        # 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 
    
    
  3. 배포를 다시 실행하여 변경 내용을 적용합니다. 스크립트에서 스토리지 계정 이름 및 키 자격 증명 모음 이름을 업데이트합니다.

    
    export ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export       ARM_CLIENT_ID="<appId>"
    export   ARM_CLIENT_SECRET="<password>"
    export       ARM_TENANT_ID="<tenantId>"
    
    
  4. 배포자 및 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 

워크로드 영역 정보 수집

  1. 텍스트 편집기에서 다음 정보를 수집합니다. 이 정보는 “컨트롤 플레인 배포” 단계가 끝날 때 수집되었습니다.

    1. 라이브러리 리소스 그룹의 Terraform 상태 파일 스토리지 계정 이름입니다.

      • 앞의 예제에 이어 리소스 그룹은 LAB-SECE-SAP_LIBRARY입니다.
      • 스토리지 계정의 이름에 labsecetfstate이(가) 포함됩니다.
    2. 배포자 리소스 그룹에서 키 자격 증명 모음의 이름.

      • 앞의 예제에 이어 리소스 그룹은 LAB-SECE-DEP05-INFRASTRUCTURE입니다.
      • 키 자격 증명 모음의 이름에는 LABSECEDEP05user이(가) 포함됩니다.
    3. 배포자 VM의 공용 IP 주소입니다. 배포자의 리소스 그룹으로 이동하고, 배포자 VM을 열고, 공용 IP 주소를 복사합니다.

  2. 다음 정보를 수집해야 합니다.

    1. 배포자 상태 파일의 이름은 라이브러리 리소스 그룹 아래에 있습니다.
      • 라이브러리 리소스 그룹>State 스토리지 계정>컨테이너>tfstate를 선택합니다. 배포자 상태 파일의 이름을 복사합니다.
      • 앞의 예제에 이어 blob의 이름은 LAB-SECE-DEP05-INFRASTRUCTURE.terraform.tfstate입니다.
  3. 필요한 경우 서비스 주체를 등록합니다. 이 자습서에서는 이 단계가 필요하지 않습니다.

    환경을 처음 인스턴스화할 때 서비스 주체를 등록해야 합니다. 이 자습서에서는 컨트롤 플레인이 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 워크로드 영역을 배포합니다.

  1. 배포자 VM에서 Azure_SAP_Automated_Deployment 폴더로 이동합니다.

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/LAB-SECE-SAP04-INFRASTRUCTURE
    
  2. 선택적으로 워크로드 영역 구성 파일을 열고 필요한 경우 네트워크 이름과 일치하도록 네트워크 논리적 이름을 변경합니다.

  3. 워크로드 영역의 배포를 시작합니다. 앞에서 수집한 세부 정보는 다음과 같습니다.

    • 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이(가) 포함됩니다. 이 정보를 사용하여 배포자의 키 자격 증명 모음 비밀을 구성합니다.

  1. 다음 단계를 위해 배포자 VM에 연결합니다. 이제 리포지토리의 복사본이 있습니다.

  2. 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}";
    
  3. 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}";
    
  4. 다운로드 프로세스에 대한 SAP 매개 변수 파일을 구성합니다. 그런 다음 Ansible 플레이북을 사용하여 SAP 소프트웨어를 다운로드합니다. 다음 명령을 실행합니다.

    cd ${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES
    mkdir BOMS
    cd BOMS
    
    vi sap-parameters.yaml
    
  5. 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
    
    
  6. Ansible 플레이북을 실행하여 소프트웨어를 다운로드합니다. 플레이북을 실행할 수 있는 한 가지 방법은 다운로더 메뉴를 사용하는 것입니다. download_menu 스크립트를 실행합니다.

    ${HOME}/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/download_menu.sh
    
  7. 실행할 플레이북을 선택합니다.

    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.yamlL00_host.yaml 등의 파일이 있는지 확인합니다.

독립 실행형 SAP S/4HANA 시스템의 경우 순서대로 실행되는 8개의 플레이북이 있습니다. 플레이북을 실행할 수 있는 한 가지 방법은 구성 메뉴를 사용하는 것입니다.

configuration_menu 스크립트를 실행합니다.

${HOME}/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/configuration_menu.sh

Diagram that shows the SAP Deployment Automation Ansible configuration menu.

실행할 플레이북을 선택합니다.

플레이북: 기본 운영 체제 구성

이 플레이북은 소프트웨어 리포지토리, 패키지 및 서비스의 구성을 포함하는 모든 컴퓨터에서 일반 운영 체제 구성 설정을 수행합니다.

구성 메뉴 또는 명령줄을 사용하여 플레이북을 실행할 수 있습니다.


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

모든 리소스가 정리되었는지 확인합니다.

다음 단계