SAP 배포 자동화 프레임워크 시작

SAP 배포 자동화 프레임워크 빠르게 시작

필수 조건

SAP 배포 자동화 프레임워크를 시작하려면 다음이 필요합니다.

  • Azure 구독 Azure 구독이 없는 경우 무료 계정을 만들 수 있습니다.
  • Azure 환경에서 SAP 소프트웨어를 다운로드할 수 있는 권한이 있는 SAP 사용자 계정입니다. S-User에 대한 자세한 내용은 SAP S-User를 참조 하세요.
  • Azure CLI 설치.
  • 컨트롤 플레인 배포에 사용할 MS(사용자 할당 ID) 또는 서비스 주체입니다.
  • 워크로드 영역 배포에 사용할 MS(사용자 할당 ID) 또는 서비스 주체입니다.
  • 배포에 Azure DevOps를 사용하려는 경우 Azure DevOps 프로젝트를 만드는 기능.

일부 필수 구성 요소는 배포 환경에 이미 설치되어 있을 수 있습니다. Azure Cloud Shell과 배포자 모두 Terraform과 Azure CLI가 설치되어 있습니다.

서비스 주체 만들기

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

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

사용자 할당 ID 만들기

SAP 자동화 배포 프레임워크는 배포에 MSI(사용자 할당 ID)를 사용할 수도 있습니다. ID를 만드는 스크립트를 실행할 때 사용 권한이 있는 계정을 사용하여 관리 ID를 만들어야 합니다.

  1. 관리 ID를 만듭니다.

    export    ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export control_plane_env_code="LAB"
    
    az identity create --name ${control_plane_env_code}-Deployment-Identity --resource-group <ExistingResourceGroup>
    

    출력을 검토합니다. 예시:

       {
         "clientId": "<appId>",
         "id": "<armId>",
         "location": "<location>",
         "name": "${control_plane_env_code}-Deployment-Identity",
         "principalId": "<objectId>",
         "resourceGroup": "<ExistingResourceGroup>",
         "systemData": null,
         "tags": {},
         "tenantId": "<TenantId>",
         "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
       }
    
  2. 출력 세부 정보를 복사합니다.

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

    매개 변수 입력 이름 출력 이름
    app_id appId
    msi_id armId
  3. ID에 기여자 역할을 할당합니다.

    export appId="<appId>"
    
    az role assignment create --assignee $appId  --role "Contributor"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    
  4. 필요에 따라 ID에 사용자 액세스 관리istrator 역할을 할당합니다.

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

Important

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

사전 검사

다음 스크립트를 사용하여 비행 전 검사 수행할 수 있습니다. 스크립트는 다음 검사 및 테스트를 수행합니다.

  • 서비스 주체가 구독에서 리소스를 만들 수 있는 올바른 권한이 있는지 확인합니다.
  • 서비스 주체에 사용자 액세스 관리 주체 권한이 있는지 확인합니다.
  • Azure Virtual Network를 만듭니다.
  • 프라이빗 엔드포인트를 사용하여 Azure Virtual Key Vault를 만듭니다.
  • Azure Files NSF 공유를 만듭니다.
  • Premium Storage v2를 사용하여 데이터 디스크가 있는 Azure Virtual Machine을 만듭니다.
  • 배포된 가상 머신을 사용하여 필요한 URL에 대한 액세스를 확인합니다.

$sdaf_path = Get-Location
if ( $PSVersionTable.Platform -eq "Unix") {
    if ( -Not (Test-Path "SDAF") ) {
      $sdaf_path = New-Item -Path "SDAF" -Type Directory
    }
}
else {
    $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
    if ( -not (Test-Path $sdaf_path)) {
        New-Item -Path $sdaf_path -Type Directory
    }
}

Set-Location -Path $sdaf_path

git clone https://github.com/Azure/sap-automation.git 

cd sap-automation
cd deploy
cd scripts

if ( $PSVersionTable.Platform -eq "Unix") {
./Test-SDAFReadiness.ps1
}
else {
.\Test-SDAFReadiness.ps1
}

Azure DevOps Services에서 SAP Deployment Automation Framework 사용

Azure DevOps를 사용하면 배포 프로세스가 간소화됩니다. Azure DevOps는 인프라 배포 및 구성 및 SAP 설치 작업을 수행하기 위해 실행할 수 있는 파이프라인을 제공합니다.

Azure Repos를 사용하여 구성 파일을 저장할 수 있습니다. Azure Pipelines는 인프라 및 SAP 애플리케이션을 배포하고 구성하는 데 사용할 수 있는 파이프라인을 제공합니다.

Azure DevOps Services에 등록

Azure DevOps Services를 사용하려면 Azure DevOps 조직이 필요합니다. 조직은 관련 프로젝트 그룹을 연결하는 데 사용됩니다. 회사 또는 학교 계정을 사용하여 조직을 Microsoft Entra ID에 자동으로 연결합니다. 계정을 만들려면 Azure DevOps를 열고 로그인하거나 새 계정을 만듭니다.

Azure DevOps를 사용하여 SAP 배포 자동화 프레임워크 환경 만들기

다음 스크립트를 사용하여 SAP 배포 자동화 프레임워크용 Azure DevOps Services의 기본 설치를 수행할 수 있습니다.

PowerShell ISE를 열고 다음 스크립트를 복사하고 환경과 일치하도록 매개 변수를 업데이트합니다.

    $Env:SDAF_ADO_ORGANIZATION = "https://dev.azure.com/ORGANIZATIONNAME"
    $Env:SDAF_ADO_PROJECT = "SAP Deployment Automation Framework"
    $Env:SDAF_CONTROL_PLANE_CODE = "MGMT"
    $Env:SDAF_WORKLOAD_ZONE_CODE = "DEV"
    $Env:SDAF_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"

    $UniqueIdentifier = Read-Host "Please provide an identifier that makes the service principal names unique, for instance a project code"

    $confirmation = Read-Host "Do you want to create a new Application registration (needed for the Web Application) y/n?"
    if ($confirmation -eq 'y') {
        $Env:SDAF_APP_NAME = $UniqueIdentifier + " SDAF Control Plane"
    }

    else {
      $Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
    }

    $confirmation = Read-Host "Do you want to create a new Service Principal for the Control plane y/n?"
    if ($confirmation -eq 'y') {
        $Env:SDAF_MGMT_SPN_NAME = $UniqueIdentifier + " SDAF " + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
    }
        else {
      $Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane Service Principal Name"
    }

    $confirmation = Read-Host "Do you want to create a new Service Principal for the Workload zone y/n?"
    if ($confirmation -eq 'y') {
        $Env:SDAF_WorkloadZone_SPN_NAME = $UniqueIdentifier + " SDAF " + $Env:SDAF_WORKLOAD_ZONE_CODE + " SPN"
    }
        else {
      $Env:SDAF_WorkloadZone_SPN_NAME = Read-Host "Please provide the Workload Zone Service Principal Name"
    }

    if ( $PSVersionTable.Platform -eq "Unix") {
        if ( Test-Path "SDAF") {
        }
        else {
            $sdaf_path = New-Item -Path "SDAF" -Type Directory
        }
    }
    else {
        $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
        if ( Test-Path $sdaf_path) {
        }
        else {
            New-Item -Path $sdaf_path -Type Directory
        }
    }

    Set-Location -Path $sdaf_path

    if ( Test-Path "New-SDAFDevopsProject.ps1") {
        remove-item .\New-SDAFDevopsProject.ps1
    }

    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile .\New-SDAFDevopsProject.ps1 ; .\New-SDAFDevopsProject.ps1

스크립트를 실행하고 지침을 따릅니다. 이 스크립트는 Azure DevOps 프로젝트에서 인증 및 작업을 수행하기 위한 브라우저 창을 엽니다.

GitHub에서 직접 코드를 실행하거나 코드 복사본을 Azure DevOps 프로젝트로 가져올 수 있습니다.

프로젝트가 생성되었는지 확인하려면 Azure DevOps 포털로 이동하여 프로젝트를 선택합니다. 리포지토리가 채워지고 파이프라인이 생성되었는지 확인합니다.

Important

로컬 워크스테이션에서 다음 단계를 실행합니다. 또한 az upgrade 명령을 실행하여 최신 Azure CLI가 설치되어 있는지 확인합니다.

SAP 배포 자동화 프레임워크용 Azure DevOps를 구성하는 방법에 대한 자세한 내용은 SAP 배포 자동화 프레임워크용 Azure DevOps 구성을 참조하세요.

Azure DevOps 없이 SAP 배포 자동화 프레임워크 환경 만들기

Azure의 가상 머신에서 SAP 배포 자동화 프레임워크를 실행할 수 있습니다. 다음 단계에서는 환경을 만드는 방법을 설명합니다.

Important

가상 머신이 구독에 대한 권한이 있는 시스템 할당 ID 또는 사용자 할당 ID를 사용하여 리소스를 만드는지 확인합니다.

가상 머신에 다음과 같은 필수 구성 요소가 설치되어 있는지 확인합니다.

  • git
  • jq
  • unzip
  • virtualenv(Ubuntu에서 실행되는 경우)

다음 명령을 사용하여 Ubuntu 가상 머신에 필수 구성 요소를 설치할 수 있습니다.

sudo apt-get install -y git jq unzip virtualenv

그런 다음, 다음 명령을 사용하여 배포자 구성 요소를 설치할 수 있습니다.


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

샘플

~/Azure_SAP_Automated_Deployment/samples 폴더에는 배포 자동화 프레임워크 테스트를 시작하기 위한 샘플 구성 파일 집합이 포함되어 있습니다. 다음 명령을 사용하여 복사할 수 있습니다.

cd ~/Azure_SAP_Automated_Deployment

cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment

다음 단계