Azure DevOps Services에서 SAP Deployment Automation Framework 사용

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

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

Azure DevOps Services에 등록

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

SAP Deployment Automation Framework용 Azure DevOps Services 구성

다음 스크립트를 사용하여 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가 설치되어 있는지 확인합니다.

새 워크로드 영역에 대한 Azure DevOps Services 아티팩트 구성

다음 스크립트를 사용하여 새 워크로드 영역을 지원하는 데 필요한 아티팩트를 배포합니다. 이 프로세스는 Azure DevOps 및 필요에 따라 배포 서비스 주체에서 변수 그룹 및 서비스 연결을 만듭니다.

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

    $Env:SDAF_ADO_ORGANIZATION = "https://dev.azure.com/ORGANIZATIONNAME"
    $Env:SDAF_ADO_PROJECT = "SAP Deployment Automation Framework"
    $Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"
    
    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-SDAFDevopsWorkloadZone.ps1") {
        remove-item .\New-SDAFDevopsWorkloadZone.ps1
    }
    
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/New-SDAFDevopsWorkloadZone.ps1 -OutFile .\New-SDAFDevopsWorkloadZone.ps1 ; .\New-SDAFDevopsWorkloadZone.ps1
    

샘플 컨트롤 플레인 구성 만들기

Create Sample Deployer Configuration 파이프라인을 실행하여 컨트롤 플레인에 대한 샘플 구성을 만들 수 있습니다. 실행 중일 때 적절한 Azure 지역을 선택합니다. Azure Firewall 및 Azure Bastion을 배포할지 제어할 수도 있습니다.

SAP 배포 자동화 프레임워크용 Azure DevOps Services 수동 구성

SAP 배포 자동화 프레임워크용 Azure DevOps Services를 수동으로 구성할 수 있습니다.

새 프로젝트 만들기

Azure Repos를 사용하여 sap-automation GitHub 리포지토리의 코드와 환경 구성 파일을 모두 저장할 수 있습니다.

Azure DevOps를 열고 새 프로젝트를 선택하고 프로젝트 세부 정보를 입력하여 새 프로젝트를 만듭니다. 이 프로젝트에는 배포 작업을 수행하기 위한 Azure Repos 소스 제어 리포지토리와 Azure Pipelines가 포함되어 있습니다.

새 프로젝트가 표시되지 않으면 조직에서 새 프로젝트를 만들 수 있는 권한이 있는지 확인합니다.

프로젝트의 URL을 기록합니다.

리포지토리 가져오기

먼저 SAP 배포 자동화 프레임워크 Bootstrap GitHub 리포지토리를 Azure Repos로 가져옵니다.

리포지토리 섹션으로 이동하여 리포지토리 가져오기를 선택합니다. https://github.com/Azure/sap-automation-bootstrap.git 리포지토리를 Azure DevOps로 가져옵니다. 자세한 내용은 리포지토리 가져오기를 참조하세요.

리포지토리를 가져올 수 없는 경우 리포지토리를 수동으로 만들 수 있습니다. 그런 다음 SAP 배포 자동화 프레임워크 GitHub Bootstrap 리포지토리에서 해당 리포지토리로 콘텐츠를 가져올 수 있습니다.

수동 가져오기를 위한 리포지토리 만들기

리포지토리를 직접 가져올 수 없는 경우에만 이 단계를 수행합니다.

작업 영역 리포지토리를 만들려면 리포지토리 섹션의 프로젝트 설정 아래에서 만들기를 선택합니다.

리포지토리를 선택하고 Git을 입력하고 리포지토리의 이름을 입력합니다. 예를 들어 SAP 구성 리포지토리를 사용합니다.

리포지토리 복제

콘텐츠에 대한 보다 포괄적인 편집 기능을 제공하기 위해 리포지토리를 로컬 폴더에 복제하고 로컬에서 콘텐츠를 편집할 수 있습니다.

리포지토리를 로컬 폴더에 복제하려면 포털의 리포지토리 섹션에서 파일 아래에서 복제를 선택합니다. 자세한 내용은 리포지토리 복제를 참조하세요.

Screenshot that shows how to clone the repository.

로컬 클론을 사용하여 리포지토리 콘텐츠를 수동으로 가져옵니다.

SAP 배포 자동화 프레임워크 리포지토리에서 콘텐츠를 수동으로 다운로드하고 Azure DevOps 리포지토리의 로컬 복제본에 추가할 수도 있습니다.

https://github.com/Azure/SAP-automation-samples 리포지토리로 이동하여 리포지토리 콘텐츠를 .zip 파일로 다운로드합니다. 코드를 선택하고 ZIP 다운로드를 선택합니다.

.zip 파일의 콘텐츠를 로컬 클론의 루트 폴더로 복사합니다.

Visual Studio Code에서 로컬 폴더를 엽니다. 여기에 표시된 소스 제어 아이콘을 통해 표시기에서 변경 내용을 동기화해야 합니다.

Screenshot that shows that source code is changed.

소스 제어 아이콘을 선택하고 변경 내용에 대한 메시지를 제공합니다. 예를 들어 GitHub 가져오기를 입력하고 Ctrl+Enter를 선택하여 변경 내용을 커밋합니다. 그런 다음 변경 내용 동기화를 선택하여 변경 내용을 리포지토리로 다시 동기화합니다.

Terraform 및 Ansible 코드의 소스 선택

GitHub에서 직접 SAP 배포 자동화 프레임워크 코드를 실행하거나 로컬로 가져올 수 있습니다.

로컬 리포지토리에서 코드 실행

로컬 Azure DevOps 프로젝트에서 SAP 배포 자동화 프레임워크 코드를 실행하려면 Azure DevOps 프로젝트에서 별도의 코드 리포지토리와 구성 리포지토리를 만들어야 합니다.

  • 구성 리포지토리의 이름: Same as the DevOps Project name. 소스는 https://github.com/Azure/sap-automation-bootstrap.git입니다.
  • 코드 리포지토리의 이름: sap-automation. 소스는 https://github.com/Azure/sap-automation.git입니다.
  • 샘플 및 템플릿 리포지토리의 이름: sap-samples. 소스는 https://github.com/Azure/sap-automation-samples.git입니다.

GitHub에서 직접 코드 실행

GitHub에서 직접 코드를 실행하려면 Azure DevOps가 GitHub에서 콘텐츠를 끌어올 수 있도록 자격 증명을 제공해야 합니다.

GitHub 서비스 연결 만들기

GitHub에서 코드를 끌어오려면 GitHub 서비스 연결이 필요합니다. 자세한 내용은 서비스 연결 관리를 참조하세요.

서비스 연결을 만들려면 프로젝트 설정으로 이동하고 Pipelines 섹션에서 서비스 연결로 이동합니다.

Screenshot that shows how to create a service connection for GitHub.

GitHub를 서비스 연결 유형으로 선택합니다. OAuth 구성 드롭다운에서 Azure Pipelines를 선택합니다.

권한 부여를 선택하여 GitHub에 로그인합니다.

서비스 연결 이름을 입력합니다(예: GitHub에 대한 SDAF 연결). 모든 파이프라인에 대한 액세스 권한 부여 확인란이 선택되어 있는지 확인합니다. 저장을 선택하여 서비스 연결을 저장합니다.

웹앱 설정

자동화 프레임워크는 선택적으로 웹앱을 컨트롤 플레인의 일부로 프로비저닝하여 SAP 워크로드 영역 및 시스템 구성 파일을 지원합니다. 웹앱을 사용하려면 먼저 인증을 위한 앱 등록을 만들어야 합니다. Azure Cloud Shell을 열고 다음 명령을 실행합니다.

필요에 따라 MGMT를 사용자 환경으로 대체합니다.

echo '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' >> manifest.json

TF_VAR_app_registration_app_id=$(az ad app create --display-name MGMT-webapp-registration --enable-id-token-issuance true --sign-in-audience AzureADMyOrg --required-resource-access @manifest.json --query "appId" | tr -d '"')

echo $TF_VAR_app_registration_app_id

az ad app credential reset --id $TF_VAR_app_registration_app_id --append --query "password"

rm manifest.json

나중에 사용하기 위해 앱 등록 ID 및 암호 값을 저장합니다.

Azure Pipelines 만들기

Azure Pipelines는 YAML 파일로 구현됩니다. 리포지토리의 배포/파이프라인 폴더에 저장됩니다.

컨트롤 플레인 배포 파이프라인

컨트롤 플레인 배포 파이프라인을 만듭니다. 파이프라인 섹션에서 새 파이프라인을 선택합니다. Azure Repos Git을 코드의 소스로 선택합니다. 기존 Azure Pipelines YAML 파일을 사용하도록 파이프라인을 구성합니다. 다음 설정으로 파이프라인을 지정합니다.

설정
리포지토리 "루트 리포지토리"(프로젝트 이름과 동일)
지점 main
Path pipelines/01-deploy-control-plane.yml
이름 컨트롤 플레인 배포

파이프라인 저장 저장을 보려면 실행 옆에 있는 펼침 단추를 선택합니다. 파이프라인 섹션으로 이동하여 파이프라인을 선택합니다. 오른쪽의 줄임표 메뉴에서 이름 바꾸기/이동을 선택하고 파이프라인의 이름을 컨트롤 플레인 배포로 바꿉니다.

SAP 워크로드 영역 배포 파이프라인

SAP 워크로드 영역 파이프라인을 만듭니다. 파이프라인 섹션에서 새 파이프라인을 선택합니다. Azure Repos Git을 코드의 소스로 선택합니다. 기존 Azure Pipelines YAML 파일을 사용하도록 파이프라인을 구성합니다. 다음 설정으로 파이프라인을 지정합니다.

설정
리포지토리 "루트 리포지토리"(프로젝트 이름과 동일)
지점 main
Path pipelines/02-sap-workload-zone.yml
이름 SAP 워크로드 영역 배포

파이프라인 저장 저장을 보려면 실행 옆에 있는 펼침 단추를 선택합니다. 파이프라인 섹션으로 이동하여 파이프라인을 선택합니다. 오른쪽의 줄임표 메뉴에서 이름 바꾸기/이동을 선택하고 파이프라인의 이름을 SAP 워크로드 영역 배포로 바꿉니다.

SAP 시스템 배포 파이프라인

SAP 시스템 배포 파이프라인을 만듭니다. 파이프라인 섹션에서 새 파이프라인을 선택합니다. Azure Repos Git을 코드의 소스로 선택합니다. 기존 Azure Pipelines YAML 파일을 사용하도록 파이프라인을 구성합니다. 다음 설정으로 파이프라인을 지정합니다.

설정
리포지토리 "루트 리포지토리"(프로젝트 이름과 동일)
지점 main
Path pipelines/03-sap-system-deployment.yml
이름 SAP 시스템 배포(인프라)

파이프라인 저장 저장을 보려면 실행 옆에 있는 펼침 단추를 선택합니다. 파이프라인 섹션으로 이동하여 파이프라인을 선택합니다. 오른쪽의 줄임표 메뉴에서 이름 바꾸기/이동을 선택하고 파이프라인의 이름을 SAP 시스템 배포(인프라)로 바꿉니다.

SAP 소프트웨어 인수 파이프라인

SAP 소프트웨어 취득 파이프라인을 만듭니다. 파이프라인 섹션에서 새 파이프라인을 선택합니다. Azure Repos Git을 코드의 소스로 선택합니다. 기존 Azure Pipelines YAML 파일을 사용하도록 파이프라인을 구성합니다. 다음 설정으로 파이프라인을 지정합니다.

설정
리포지토리 "루트 리포지토리"(프로젝트 이름과 동일)
지점 main
Path deploy/pipelines/04-sap-software-download.yml
이름 SAP 소프트웨어 인수

파이프라인 저장 저장을 보려면 실행 옆에 있는 펼침 단추를 선택합니다. 파이프라인 섹션으로 이동하여 파이프라인을 선택합니다. 오른쪽의 줄임표 메뉴에서 이름 바꾸기/이동을 선택하고 파이프라인의 이름을 SAP 소프트웨어 취득으로 바꿉니다.

SAP 구성 및 소프트웨어 설치 파이프라인

SAP 구성 및 소프트웨어 설치 파이프라인을 만듭니다. 파이프라인 섹션에서 새 파이프라인을 선택합니다. Azure Repos Git을 코드의 소스로 선택합니다. 기존 Azure Pipelines YAML 파일을 사용하도록 파이프라인을 구성합니다. 다음 설정으로 파이프라인을 지정합니다.

설정
리포지토리 "루트 리포지토리"(프로젝트 이름과 동일)
지점 main
Path pipelines/05-DB-and-SAP-installation.yml
이름 구성 및 SAP 설치

파이프라인 저장 저장을 보려면 실행 옆에 있는 펼침 단추를 선택합니다. 파이프라인 섹션으로 이동하여 파이프라인을 선택합니다. 오른쪽의 줄임표 메뉴에서 이름 바꾸기/이동을 선택하고 파이프라인의 이름을 SAP 구성 및 소프트웨어 설치로 바꿉니다.

배포 제거 파이프라인

배포 제거 파이프라인을 만듭니다. 파이프라인 섹션에서 새 파이프라인을 선택합니다. Azure Repos Git을 코드의 소스로 선택합니다. 기존 Azure Pipelines YAML 파일을 사용하도록 파이프라인을 구성합니다. 다음 설정으로 파이프라인을 지정합니다.

설정
리포지토리 "루트 리포지토리"(프로젝트 이름과 동일)
지점 main
Path pipelines/10-remover-terraform.yml
이름 배포 제거

파이프라인 저장 저장을 보려면 실행 옆에 있는 펼침 단추를 선택합니다. 파이프라인 섹션으로 이동하여 파이프라인을 선택합니다. 오른쪽의 줄임표 메뉴에서 이름 바꾸기/이동을 선택하고 파이프라인의 이름을 배포 제거로 바꿉니다.

컨트롤 플레인 제거 파이프라인

컨트롤 플레인 배포 제거 파이프라인을 만듭니다. 파이프라인 섹션에서 새 파이프라인을 선택합니다. Azure Repos Git을 코드의 소스로 선택합니다. 기존 Azure Pipelines YAML 파일을 사용하도록 파이프라인을 구성합니다. 다음 설정으로 파이프라인을 지정합니다.

설정
리포지토리 "루트 리포지토리"(프로젝트 이름과 동일)
지점 main
Path pipelines/12-remove-control-plane.yml
이름 컨트롤 플레인 제거

파이프라인 저장 저장을 보려면 실행 옆에 있는 펼침 단추를 선택합니다. 파이프라인 섹션으로 이동하여 파이프라인을 선택합니다. 오른쪽의 줄임표 메뉴에서 이름 바꾸기/이동을 선택하고 파이프라인의 이름을 컨트롤 플레인 제거로 바꿉니다.

Azure Resource Manager를 사용하여 배포 제거 파이프라인

배포 제거 Azure Resource Manager 파이프라인을 만듭니다. 파이프라인 섹션에서 새 파이프라인을 선택합니다. Azure Repos Git을 코드의 소스로 선택합니다. 기존 Azure Pipelines YAML 파일을 사용하도록 파이프라인을 구성합니다. 다음 설정으로 파이프라인을 지정합니다.

설정
리포지토리 "루트 리포지토리"(프로젝트 이름과 동일)
지점 main
Path pipelines/11-remover-arm-fallback.yml
이름 Azure Resource Manager를 사용하여 배포 제거

파이프라인 저장 저장을 보려면 실행 옆에 있는 펼침 단추를 선택합니다. 파이프라인 섹션으로 이동하여 파이프라인을 선택합니다. 오른쪽의 줄임표 메뉴에서 이름 바꾸기/이동을 선택하고 파이프라인의 이름을 ARM 프로세서를 사용하여 배포 제거로 바꿉니다.

참고 항목

이 파이프라인은 최후의 수단으로만 사용합니다. 리소스 그룹만 제거하면 재배포가 복잡해질 수 있는 잔여가 남습니다.

리포지토리 업데이트 프로그램 파이프라인

리포지토리 업데이트 관리자 파이프라인을 만듭니다. 파이프라인 섹션에서 새 파이프라인을 선택합니다. Azure Repos Git을 코드의 소스로 선택합니다. 기존 Azure Pipelines YAML 파일을 사용하도록 파이프라인을 구성합니다. 다음 설정으로 파이프라인을 지정합니다.

설정
리포지토리 "루트 리포지토리"(프로젝트 이름과 동일)
지점 main
Path pipelines/20-update-ado-repository.yml
이름 리포지토리 업데이트 프로그램

파이프라인 저장 저장을 보려면 실행 옆에 있는 펼침 단추를 선택합니다. 파이프라인 섹션으로 이동하여 파이프라인을 선택합니다. 오른쪽의 줄임표 메뉴에서 이름 바꾸기/이동을 선택하고 파이프라인의 이름을 리포지토리 업데이트 프로그램으로 바꿉니다.

이 파이프라인은 사용하려는 sap-automation 리포지토리에 업데이트가 있을 때 사용해야 합니다.

Visual Studio Marketplace에서 정리 작업 가져오기

파이프라인은 사용자 지정 작업을 사용하여 배포 후 정리 작업을 수행합니다. 사용자 지정 작업은 빌드 후 정리에서 설치할 수 있습니다. 파이프라인을 실행하기 전에 Azure DevOps 조직에 설치합니다.

자체 호스팅 에이전트 준비

  1. 조직 설정으로 이동하여 에이전트 풀을 만듭니다. 파이프라인 섹션에서 에이전트 풀>풀 추가를 선택합니다. 풀 유형으로 자체 호스팅을 선택합니다. 컨트롤 플레인 환경에 맞게 풀 이름을 지정합니다. 예를 들면 MGMT-WEEU-POOL를 사용합니다. 모든 파이프라인에 대한 액세스 권한 부여가 선택되어 있는지 확인하고 만들기를 선택하여 풀을 만듭니다.

  2. Azure DevOps 조직에서 사용할 사용자 계정으로 로그인합니다.

  3. 홈페이지에서 사용자 설정을 열고 개인용 액세스 토큰을 선택합니다.

    Diagram that shows the creation of a personal access token.

  4. 다음 설정을 사용하여 개인용 액세스 토큰을 만듭니다.

    • 에이전트 풀: 읽기 및 관리룰 선택합니다.

    • 빌드: 읽기 및 실행을 선택합니다.

    • 코드: 읽기 및 쓰기를 선택합니다.

    • 변수 그룹: 읽기, 만들기 및 관리를 선택합니다.

      만들어진 토큰 값을 기록합니다.

    Diagram that shows the attributes of the personal access token.

변수 정의

배포 파이프라인은 변수 그룹을 사용하여 미리 정의된 매개 변수 값 집합을 사용하도록 구성됩니다.

일반적인 변수

공통 변수는 모든 배포 파이프라인에서 사용됩니다. SDAF-General이라는 변수 그룹에 저장됩니다.

Pipelines 섹션의 라이브러리 페이지를 사용하여 SDAF-General이라는 새 변수 그룹을 만듭니다. 다음 변수를 추가합니다.

변수 주의
Deployment_Configuration_Path 작업 영역 샘플 구성을 테스트하려면 WORKSPACES 대신 samples/WORKSPACES를 사용합니다.
지점 main
S-사용자 이름 <SAP Support user account name>
S-암호 <SAP Support user password> 잠금 아이콘을 선택하여 변수 유형을 비밀로 변경합니다.
tf_version 1.6.0 사용할 Terraform 버전입니다. Terraform 다운로드를 참조하세요.

변수를 저장합니다.

또는 Azure DevOps CLI를 사용하여 그룹을 설정할 수 있습니다.

s-user="<SAP Support user account name>"
s-password="<SAP Support user password>"

az devops login

az pipelines variable-group create --name SDAF-General --variables ANSIBLE_HOST_KEY_CHECKING=false Deployment_Configuration_Path=WORKSPACES Branch=main S-Username=$s-user S-Password=$s-password tf_varsion=1.3.0 --output yaml

파이프라인 권한을 사용하여 모든 파이프라인에 권한을 할당해야 합니다.

환경별 변수

환경마다 배포 자격 증명이 다를 수 있으므로 환경별로 변수 그룹을 만들어야 합니다. 예를 들면 SDAF-MGMT, SDAF-DEVSDAF-QA를 사용합니다.

파이프라인 섹션의 라이브러리 페이지를 사용하여 컨트롤 플레인 환경에 대한 SDAF-MGMT라는 새 변수 그룹을 만듭니다. 다음 변수를 추가합니다.

변수 주의
에이전트 Azure Pipelines 또는 에이전트 풀의 이름 이 풀은 이후 단계에서 만들어집니다.
CP_ARM_CLIENT_ID Service principal application ID
CP_ARM_OBJECT_ID Service principal object ID
CP_ARM_CLIENT_SECRET Service principal password 잠금 아이콘을 선택하여 변수 유형을 비밀로 변경합니다.
CP_ARM_SUBSCRIPTION_ID Target subscription ID
CP_ARM_TENANT_ID 서비스 주체에 대한 Tenant ID
AZURE_CONNECTION_NAME 이전에 만들어진 연결 이름
sap_fqdn SAP 정규화된 도메인 이름(예: sap.contoso.net) 프라이빗 DNS를 사용하지 않는 경우에만 필요합니다.
FENCING_SPN_ID 펜싱 에이전트에 대한 Service principal application ID 펜싱 에이전트에 대한 서비스 주체를 사용하는 고가용성 배포에 필요합니다.
FENCING_SPN_PWD 펜싱 에이전트에 대한 Service principal password 펜싱 에이전트에 대한 서비스 주체를 사용하는 고가용성 배포에 필요합니다.
FENCING_SPN_TENANT 펜싱 에이전트에 대한 Service principal tenant ID 펜싱 에이전트에 대한 서비스 주체를 사용하는 고가용성 배포에 필요합니다.
PAT <Personal Access Token> 이전 단계에서 정의한 개인 토큰을 사용합니다.
POOL <Agent Pool name> 이 환경에 사용할 에이전트 풀입니다.
APP_REGISTRATION_APP_ID App registration application ID 웹앱을 배포하는 경우 필수입니다.
WEB_APP_CLIENT_SECRET App registration password 웹앱을 배포하는 경우 필수입니다.
SDAF_GENERAL_GROUP_ID SDAF-General 그룹의 그룹 ID 브라우저를 사용하여 변수 그룹에 액세스할 때 URL 매개 변수 variableGroupId에서 ID를 검색할 수 있습니다. 예: variableGroupId=8
WORKLOADZONE_PIPELINE_ID SAP workload zone deployment 파이프라인의 ID Azure DevOps의 파이프라인 페이지에 있는 URL 매개 변수 definitionId에서 ID를 검색할 수 있습니다. 예: definitionId=31
SYSTEM_PIPELINE_ID SAP system deployment (infrastructure) 파이프라인의 ID Azure DevOps의 파이프라인 페이지에 있는 URL 매개 변수 definitionId에서 ID를 검색할 수 있습니다. 예: definitionId=32

변수를 저장합니다.

파이프라인 권한을 사용하여 모든 파이프라인에 권한을 할당해야 합니다.

웹앱을 사용하는 경우 빌드 서비스에 최소한 기여 권한이 있는지 확인합니다.

복제 기능을 사용하여 다음 환경 변수 그룹을 만들 수 있습니다. APP_REGISTRATION_APP_ID, WEB_APP_CLIENT_SECRET, SDAF_GENERAL_GROUP_ID, WORKLOADZONE_PIPELINE_ID 및 SYSTEM_PIPELINE_ID는 SDAF-MGMT 그룹에만 필요합니다.

서비스 연결 만들기

Azure 리소스를 제거하려면 Azure Resource Manager 서비스 연결이 필요합니다. 자세한 내용은 서비스 연결 관리를 참조하세요.

서비스 연결을 만들려면 프로젝트 설정으로 이동합니다. 파이프라인 섹션에서 서비스 연결을 선택합니다.

Screenshot that shows how to create a service connection.

서비스 연결 형식으로 Azure Resource Manager를 선택하고 인증 방법으로 서비스 주체(수동)를 선택합니다. 대상 구독(일반적으로 컨트롤 플레인 구독)을 입력합니다. 서비스 주체 세부 정보를 입력합니다. 확인을 선택하여 자격 증명의 유효성을 검사합니다. 서비스 주체를 만드는 방법에 대한 자세한 내용은 서비스 주체 만들기를 참조하세요.

서비스 연결 이름을 입력합니다(예: Connection to MGMT subscription 사용). 모든 파이프라인에 대한 액세스 권한 부여 확인란이 선택되어 있는지 확인합니다. 확인 및 저장을 선택하여 서비스 연결을 저장합니다.

사용 권한

대부분의 파이프라인은 Azure Repos에 파일을 추가하므로 끌어오기 권한이 필요합니다. 프로젝트 설정리포지토리 섹션에서 소스 코드 리포지토리의 보안 탭을 선택하고 Build Service에 참가 권한을 할당합니다.

Screenshot that shows repository permissions.

컨트롤 플레인 배포

새로 만들어진 파이프라인은 기본 보기에 표시되지 않을 수 있습니다. 최근 탭을 선택하고 모든 탭으로 돌아가서 새 파이프라인을 봅니다.

컨트롤 플레인 배포 파이프라인을 선택하고 배포자 및 SAP 라이브러리의 구성 이름을 입력합니다. 실행을 선택하여 컨트롤 플레인을 배포합니다. 구성 웹앱을 설정하려면 구성 웹 애플리케이션 배포 확인란을 선택해야 합니다.

Azure DevOps Services 자체 호스팅 에이전트를 수동으로 구성

수동 구성은 Azure DevOps Services 에이전트가 자동으로 구성되지 않은 경우에만 필요합니다. 계속하기 전에 에이전트 풀이 비어 있는지 확인합니다.

배포자에 연결하려면:

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

  2. 배포자 가상 머신이 포함된 리소스 그룹으로 이동합니다.

  3. Azure Bastion을 사용하여 가상 머신에 연결합니다.

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

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

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

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

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

  9. 가상 컴퓨터에 연결합니다.

다음 스크립트를 실행하여 배포자를 구성합니다.

mkdir -p ~/Azure_SAP_Automated_Deployment

cd ~/Azure_SAP_Automated_Deployment

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

cd sap-automation/deploy/scripts

./configure_deployer.sh

배포자를 다시 부팅하고, 다시 연결하고, 다음 스크립트를 실행하여 Azure DevOps 에이전트를 설정합니다.

cd ~/Azure_SAP_Automated_Deployment/

$DEPLOYMENT_REPO_PATH/deploy/scripts/setup_ado.sh

라이선스에 동의하고 서버 URL을 입력하라는 메시지가 표시되면 Azure DevOps 프로젝트를 만들 때 캡처한 URL을 입력합니다. 인증을 위해 PAT를 선택하고 이전 단계의 토큰 값을 입력합니다.

메시지가 표시되면 이전 단계에서 만든 애플리케이션 풀 이름을 입력합니다. 기본 에이전트 이름과 기본 작업 폴더 이름을 수락합니다. 이제 에이전트가 구성되고 시작됩니다.

컨트롤 플레인 웹 애플리케이션 배포

컨트롤 플레인 배포 파이프라인을 실행할 때 deploy the web app infrastructure 매개 변수를 선택하면 웹앱을 호스팅하는 데 필요한 인프라가 프로비전됩니다. 웹앱 배포 파이프라인은 애플리케이션의 소프트웨어를 해당 인프라에 게시합니다.

배포가 완료될 때까지 기다립니다. 확장 탭을 선택하고 지침에 따라 구성을 완료합니다. 앱 등록에 대한 reply-url 값을 업데이트합니다.

컨트롤 플레인 파이프라인을 실행한 결과 필요한 웹앱 URL의 일부가 환경별 변수 그룹의 WEBAPP_URL_BASE라는 변수에 저장됩니다. 언제든지 다음 명령을 사용하여 등록된 애플리케이션 웹앱의 URL을 업데이트할 수 있습니다.

webapp_url_base=<WEBAPP_URL_BASE>
az ad app update --id $TF_VAR_app_registration_app_id --web-home-page-url https://${webapp_url_base}.azurewebsites.net --web-redirect-uris https://${webapp_url_base}.azurewebsites.net/ https://${webapp_url_base}.azurewebsites.net/.auth/login/aad/callback

또한 앱 서비스 시스템이 할당한 관리 ID에 대한 읽기 권한자 권한을 부여해야 합니다. 앱 서비스 리소스로 이동합니다. 왼쪽에서 ID를 선택합니다. 시스템 할당 탭에서 Azure 역할 할당>역할 할당 추가를 선택합니다. 범위로 구독을 선택하고 역할로 읽기 권한자를 선택합니다. 그런 다음 저장을 선택합니다. 이 단계가 없으면 웹앱 드롭다운 기능이 작동하지 않습니다.

이제 웹앱을 방문하여 SAP 워크로드 영역 및 SAP 시스템 인프라를 배포하는 데 사용할 수 있습니다.

다음 단계