次の方法で共有


Azure DevOps Services から SAP デプロイ自動化フレームワークを使用する

Azure DevOps は、インフラストラクチャのデプロイと、構成および SAP インストール アクティビティを実行するパイプラインを提供することで、デプロイ プロセスを効率化します。

Azure Repos を使用して構成ファイルを格納し、Azure Pipelines を使用してインフラストラクチャと SAP アプリケーションをデプロイして構成できます。

Azure DevOps Services にサインアップする

Azure DevOps Services を使用するには、Azure DevOps 組織が必要です。 組織は、関連するプロジェクトのグループを結合するために使用されます。 職場または学校アカウントを使用して、組織を Microsoft Entra ID に自動的に接続します。 アカウントを作成するには、Azure DevOps を開き、サインインするか、新しいアカウントを作成します。

SAP デプロイ自動化フレームワーク用に 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_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"

    $Env:MSI_OBJECT_ID = $null

    $branchName = "main"
        
    $UniqueIdentifier = "SDAF" + $ShortCode
    
    if ($Env:ARM_TENANT_ID.Length -eq 0) {
      az login --output none --only-show-errors --scope https://graph.microsoft.com//.default
    }
    else {
      az login --output none --tenant $Env:ARM_TENANT_ID --only-show-errors --scope https://graph.microsoft.com//.default
    }

    az config set extension.use_dynamic_install=yes_without_prompt --only-show-errors

    az extension add --name azure-devops --only-show-errors

    $differentTenant = Read-Host "Is your Azure DevOps organization hosted in a different tenant than the one you are currently logged in to? y/n"
    if ($differentTenant -eq 'y') {
        $env:AZURE_DEVOPS_EXT_PAT = Read-Host "Please enter your Personal Access Token (PAT) with permissions to add new projects, manage agent pools to the Azure DevOps organization $Env:ADO_Organization"
        try {
            az devops project list
        }
        catch {
            $_
        }
    }
    
    $confirmationWebAppDeployment = Read-Host "Do you want to use the Web Application for editing the configuration files (recommended) y/n?"
    if ($confirmationWebAppDeployment -eq 'y') {
        $Env:SDAF_WEBAPP = "true"
        $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 = "SDAF " + $UniqueIdentifier + " SDAF Control Plane"
        }
        else {
            $Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
        }
    }
    else {
        $Env:SDAF_WEBAPP = "false"
    }
    
    $Env:SDAF_AuthenticationMethod = 'Managed Identity'
    
    $confirmationDeployment = Read-Host "Do you want to use Managed Identities for the deployment (recommended) y/n?"
    
    if ($confirmationDeployment -eq 'n') {
        $Env:SDAF_AuthenticationMethod = 'Service Principal'
         
        $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 = "SDAF " + $UniqueIdentifier + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
        }
        else {
            $Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane 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") {
        if ( $PSVersionTable.Platform -eq "Unix") {
            Remove-Item "New-SDAFDevopsProject.ps1"
        }
        else {
            Remove-Item ".\New-SDAFDevopsProject.ps1"
        }
    }
        
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/$branchName/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile New-SDAFDevopsProject.ps1 
    
    
    if ( $PSVersionTable.Platform -eq "Unix") {
        Unblock-File ./New-SDAFDevopsProject.ps1
        ./New-SDAFDevopsProject.ps1
    }
    else {
        Unblock-File .\New-SDAFDevopsProject.ps1
        .\New-SDAFDevopsProject.ps1
    }
    

スクリプトを実行し、手順に従います。 このスクリプトを実行すると、認証用と Azure DevOps プロジェクトのタスクを実行するためのブラウザー ウィンドウが開きます。

GitHub から直接コードを実行するか、コードのコピーを Azure DevOps プロジェクトにインポートするかを選択できます。

プロジェクトが作成されたことを確認するには、Azure DevOps ポータルに移動し、プロジェクトを選択します。 リポジトリが設定されたこと、およびパイプラインが作成されたことを確認します。

重要

ローカル ワークステーションで次の手順を実行します。 また、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
        }
    }

    $branchName = "main"
    
    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/$branchName/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 Deployment Automation Framework Bootstrap GitHub リポジトリを Azure Repos にインポートします。

[リポジトリ] セクションに移動し、[リポジトリをインポートする] を選択します。 https://github.com/Azure/sap-automation-bootstrap.git リポジトリを Azure DevOps にインポートします。 詳細については、リポジトリのインポートに関する記事を参照してください。

リポジトリをインポートできない場合は、リポジトリを手動で作成できます。 その後、SAP Deployment Automation Framework 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 コードのソースの選択

SAP デプロイ自動化フレームワーク コードは GitHub から直接実行することも、ローカルにインポートすることもできます。

ローカル リポジトリからコードを実行する

ローカルの 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 から直接コードを実行する場合は、GitHub からコンテンツをプルできるように Azure DevOps の資格情報を指定する必要があります。

GitHub サービス接続を作成する

GitHub からコードをプルするには、GitHub サービス接続が必要です。 詳細については、「サービス接続の管理」を参照してください。

サービス接続を作成するには、[プロジェクト設定] に移動し、[パイプライン] セクションの [サービス接続] に移動します。

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

サービス接続の種類として [GitHub] を選択します。 [OAuth 構成] ドロップダウンで [Azure Pipelines] を選択します。

[承認] を選択して GitHub にサインインします。

サービス接続名 (例: GitHub への SDAF 接続) を入力します。 必ず [すべてのパイプラインにアクセス許可を付与する] チェックボックスをオンにしてください。 [Save] (保存) を選択して、サービス接続を保存します。

Web アプリを設定する

自動化フレームワークでは、必要に応じて、コントロール プレーンの一部として Web アプリをプロビジョニングして、SAP ワークロード ゾーンとシステムの構成ファイルを支援します。 この Web アプリを使用する場合は、最初に認証のためにアプリ登録を作成する必要があります。 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 ファイルとして実装されます。 これらは、リポジトリ内の deploy/pipelines フォルダーに格納されます。

コントロール プレーンのデプロイ パイプライン

コントロール プレーンのデプロイ パイプラインを作成します。 [パイプライン] セクションで、[New Pipeline]\(新しいパイプライン\) 選択します。 コードのソースとして [Azure Repos Git] を選択します。 既存の Azure Pipelines YAML ファイルを使用するようにパイプラインを構成します。 次の設定でパイプラインを指定します。

設定 Value
リポジトリ "ルート リポジトリ" (プロジェクト名と同じ)
分岐 メイン
Path pipelines/01-deploy-control-plane.yml
名前 コントロール プレーンのデプロイ

パイプラインを保存します。 [保存] を表示するには、[実行] の横にあるシェブロンを選択します。 [パイプライン] セクションに移動し、パイプラインを選択します。 右側の省略記号メニューから [名前の変更/移動] を選択して、パイプラインの名前を「コントロール プレーンのデプロイ」に変更します。

SAP ワークロード ゾーンのデプロイ パイプライン

SAP ワークロード ゾーン パイプラインを作成します。 [パイプライン] セクションで、[New Pipeline]\(新しいパイプライン\) 選択します。 コードのソースとして [Azure Repos Git] を選択します。 既存の Azure Pipelines YAML ファイルを使用するようにパイプラインを構成します。 次の設定でパイプラインを指定します。

設定 Value
リポジトリ "ルート リポジトリ" (プロジェクト名と同じ)
分岐 メイン
Path pipelines/02-sap-workload-zone.yml
名前 SAP ワークロード ゾーンのデプロイ

パイプラインを保存します。 [保存] を表示するには、[実行] の横にあるシェブロンを選択します。 [パイプライン] セクションに移動し、パイプラインを選択します。 右側の省略記号メニューから [名前の変更/移動] を選択して、パイプラインの名前を「SAP ワークロード ゾーンのデプロイ」に変更します。

SAP システムのデプロイ パイプライン

SAP システムのデプロイ パイプラインを作成します。 [パイプライン] セクションで、[New Pipeline]\(新しいパイプライン\) 選択します。 コードのソースとして [Azure Repos Git] を選択します。 既存の Azure Pipelines YAML ファイルを使用するようにパイプラインを構成します。 次の設定でパイプラインを指定します。

設定 Value
リポジトリ "ルート リポジトリ" (プロジェクト名と同じ)
分岐 メイン
Path pipelines/03-sap-system-deployment.yml
名前 SAP システムのデプロイ (インフラストラクチャ)

パイプラインを保存します。 [保存] を表示するには、[実行] の横にあるシェブロンを選択します。 [パイプライン] セクションに移動し、パイプラインを選択します。 右側の省略記号メニューから [名前の変更/移動] を選択して、パイプラインの名前を「SAP システムのデプロイ (インフラストラクチャ)」に変更します。

SAP ソフトウェアの取得パイプライン

SAP ソフトウェアの取得パイプラインを作成します。 [パイプライン] セクションで、[New Pipeline]\(新しいパイプライン\) 選択します。 コードのソースとして [Azure Repos Git] を選択します。 既存の Azure Pipelines YAML ファイルを使用するようにパイプラインを構成します。 次の設定でパイプラインを指定します。

設定 Value
リポジトリ "ルート リポジトリ" (プロジェクト名と同じ)
分岐 メイン
Path deploy/pipelines/04-sap-software-download.yml
名前 SAP ソフトウェアの取得

パイプラインを保存します。 [保存] を表示するには、[実行] の横にあるシェブロンを選択します。 [パイプライン] セクションに移動し、パイプラインを選択します。 右側の省略記号メニューから [名前の変更/移動] を選択して、パイプラインの名前を「SAP ソフトウェアの取得」に変更します。

SAP の構成とソフトウェアのインストール パイプライン

SAP の構成とソフトウェアのインストール パイプラインを作成します。 [パイプライン] セクションで、[New Pipeline]\(新しいパイプライン\) 選択します。 コードのソースとして [Azure Repos Git] を選択します。 既存の Azure Pipelines YAML ファイルを使用するようにパイプラインを構成します。 次の設定でパイプラインを指定します。

設定 Value
リポジトリ "ルート リポジトリ" (プロジェクト名と同じ)
分岐 メイン
Path pipelines/05-DB-and-SAP-installation.yml
名前 SAP の構成とインストール

パイプラインを保存します。 [保存] を表示するには、[実行] の横にあるシェブロンを選択します。 [パイプライン] セクションに移動し、パイプラインを選択します。 右側の省略記号メニューから [名前の変更/移動] を選択して、パイプラインの名前を「SAP の構成とソフトウェアのインストール」に変更します。

デプロイの削除パイプライン

デプロイの削除パイプラインを作成します。 [パイプライン] セクションで、[New Pipeline]\(新しいパイプライン\) 選択します。 コードのソースとして [Azure Repos Git] を選択します。 既存の Azure Pipelines YAML ファイルを使用するようにパイプラインを構成します。 次の設定でパイプラインを指定します。

設定 Value
リポジトリ "ルート リポジトリ" (プロジェクト名と同じ)
分岐 メイン
Path pipelines/10-remover-terraform.yml
名前 デプロイの削除

パイプラインを保存します。 [保存] を表示するには、[実行] の横にあるシェブロンを選択します。 [パイプライン] セクションに移動し、パイプラインを選択します。 右側の省略記号メニューから [名前の変更/移動] を選択して、パイプラインの名前を「デプロイの削除」に変更します。

コントロール プレーンの削除パイプライン

コントロール プレーンのデプロイの削除パイプラインを作成します。 [パイプライン] セクションで、[New Pipeline]\(新しいパイプライン\) 選択します。 コードのソースとして [Azure Repos Git] を選択します。 既存の Azure Pipelines YAML ファイルを使用するようにパイプラインを構成します。 次の設定でパイプラインを指定します。

設定 Value
リポジトリ "ルート リポジトリ" (プロジェクト名と同じ)
分岐 メイン
Path pipelines/12-remove-control-plane.yml
名前 コントロール プレーンの削除

パイプラインを保存します。 [保存] を表示するには、[実行] の横にあるシェブロンを選択します。 [パイプライン] セクションに移動し、パイプラインを選択します。 右側の省略記号メニューから [名前の変更/移動] を選択して、パイプラインの名前を「コントロール プレーンの削除」に変更します。

Azure Resource Manager を使用したデプロイの削除パイプライン

デプロイの削除 Azure Resource Manager パイプラインを作成します。 [パイプライン] セクションで、[New Pipeline]\(新しいパイプライン\) 選択します。 コードのソースとして [Azure Repos Git] を選択します。 既存の Azure Pipelines YAML ファイルを使用するようにパイプラインを構成します。 次の設定でパイプラインを指定します。

設定 Value
リポジトリ "ルート リポジトリ" (プロジェクト名と同じ)
分岐 メイン
Path pipelines/11-remover-arm-fallback.yml
名前 Azure Resource Manager を使用したデプロイの削除

パイプラインを保存します。 [保存] を表示するには、[実行] の横にあるシェブロンを選択します。 [パイプライン] セクションに移動し、パイプラインを選択します。 右側の省略記号メニューから [名前の変更/移動] を選択して、パイプラインの名前を「ARM プロセッサを使用したデプロイの削除」に変更します。

Note

このパイプラインは、他の方法を利用できない場合のみ使用してください。 リソース グループだけを削除すると、残りの部分の再デプロイが複雑になる可能性があります。

リポジトリ アップデーター パイプライン

リポジトリ アップデーター パイプラインを作成します。 [パイプライン] セクションで、[New Pipeline]\(新しいパイプライン\) 選択します。 コードのソースとして [Azure Repos Git] を選択します。 既存の Azure Pipelines YAML ファイルを使用するようにパイプラインを構成します。 次の設定でパイプラインを指定します。

設定 Value
リポジトリ "ルート リポジトリ" (プロジェクト名と同じ)
分岐 メイン
Path pipelines/20-update-ado-repository.yml
名前 リポジトリ アップデーター

パイプラインを保存します。 [保存] を表示するには、[実行] の横にあるシェブロンを選択します。 [パイプライン] セクションに移動し、パイプラインを選択します。 右側の省略記号メニューから [名前の変更/移動] を選択して、パイプラインの名前を「リポジトリ アップデーター」に変更します。

このパイプラインは、使用する sap-automation リポジトリに更新がある場合に使用する必要があります。

Visual Studio Marketplace からクリーンアップ タスクをインポートする

パイプラインでは、カスタム タスクを使用して、デプロイ後にクリーンアップ アクティビティを実行します。 Post Build Cleanup からカスタム タスクをインストールできます。 これは、パイプラインを実行する前に 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 という変数グループに格納されます。

[パイプライン] セクションの [ライブラリ] ページを使用して、SDAF-General という名前の新しい変数グループを作成します。 次の変数を追加します。

変数 メモ
Deployment_Configuration_Path ワークスペース サンプル構成をテストするには、WORKSPACES ではなく samples/WORKSPACES を使用します。
分岐 メイン
S-Username <SAP Support user account name>
S-Password <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-MGMTSDAF-DEV、および SDAF-QA を使用します。

コントロール プレーン環境用に SDAF-MGMT という名前の新しい変数グループを作成するには、[パイプライン] セクションの [ライブラリ] ページを使用します。 次の変数を追加します。

変数 Notes
エージェント 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 アプリをデプロイする場合は必須です。
WEB_APP_CLIENT_SECRET App registration password Web アプリをデプロイする場合は必須です。
SDAF_GENERAL_GROUP_ID SDAF-General グループのグループ ID ID は、ブラウザーを使用して変数グループにアクセスするときに URL パラメーター variableGroupId から取得できます。 (例: variableGroupId=8)。
WORKLOADZONE_PIPELINE_ID SAP workload zone deployment パイプラインの ID ID は、Azure DevOps のパイプライン ページで URL パラメーター definitionId から取得できます。 (例: definitionId=31)。
SYSTEM_PIPELINE_ID SAP system deployment (infrastructure) パイプラインの ID ID は、Azure DevOps のパイプライン ページで URL パラメーター definitionId から取得できます。 (例: definitionId=32)。

変数を保存します。

必ず [パイプラインのアクセス許可] を使用して、すべてのパイプラインにアクセス許可を割り当ててください。

Web アプリを使用する場合は、ビルド サービスに少なくとも投稿アクセス許可があることを確認します。

複製機能を使用して、次の環境変数グループを作成できます。 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 を使用)。 必ず [すべてのパイプラインにアクセス許可を付与する] チェックボックスをオンにしてください。 [Verify and save] (確認して保存) を選択して、サービス接続を保存します。

アクセス許可

ほとんどのパイプラインは Azure Repos にファイルを追加するため、プルアクセス許可が必要です。 [プロジェクト設定][リポジトリ] セクションで、ソース コード リポジトリの [セキュリティ] タブを選択して、投稿アクセス許可を Build Service に割り当てます。

Screenshot that shows repository permissions.

コントロール プレーンをデプロイする

新しく作成されたパイプラインは、既定のビューに表示されない場合があります。 [最近表示したもの] タブを選択して、[All tabs]\(すべてのタブ\) に戻り、新しいパイプラインを表示します。

[Control plane deployment]\(コントロール プレーンのデプロイ\) パイプラインを選択し、デプロイ機能と SAP ライブラリの構成名を入力します。 [実行] を選択してコントロール プレーンをデプロイします。 構成 Web アプリを設定する場合は、[Deploy the configuration web application]\(構成 Web アプリのデプロイ\) チェックボックスをオンにする必要があります。

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] を選択し、前の手順のトークン値を入力します。

プロンプトが表示されたら、前の手順で作成したアプリケーション プール名を入力します。 既定のエージェント名と既定の作業フォルダー名をそのまま使用します。 これでエージェントが構成され、開始されます。

コントロール プレーン Web アプリケーションをデプロイする

コントロール プレーンのデプロイ パイプラインを実行するときに deploy the web app infrastructure パラメーターを選択すると、Web アプリをホストするために必要なインフラストラクチャがプロビジョニングされます。 [Web アプリを配置します] パイプラインにより、アプリケーションのソフトウェアがそのインフラストラクチャに発行されます。

デプロイが完了するのを待機します。 [拡張機能] タブを選択し、指示に従って構成を完了します。 アプリ登録の reply-url 値を更新します。

コントロール プレーン パイプラインを実行した結果、必要な Web アプリ URL の一部が、環境固有の変数グループに名前付けされた WEBAPP_URL_BASE 変数に格納されます。 登録されているアプリケーション Web アプリの 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 ロールの割り当て]>[ロールの割り当てを追加] を選択します。 スコープとして [サブスクリプション] を選択し、ロールとして [閲覧者] を選択します。 その後、 [保存] を選びます。 この手順を行わないと、Web アプリのドロップダウン機能が動作しません。

これで、Web アプリにアクセスし、それを使用して SAP ワークロード ゾーンと SAP システム インフラストラクチャをデプロイできるようになっています。

次のステップ