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 構成リポジトリを使用します。
リポジトリの複製
コンテンツのより包括的な編集機能を提供するために、リポジトリをローカル フォルダーにクローンし、そのコンテンツをローカルで編集できます。
リポジトリをローカル フォルダーに複製するには、ポータルの [リポジトリ] セクションの [ファイル] で、[クローン] を選択します。 詳細については、リポジトリのクローンに関する記事を参照してください。
ローカル クローンを使用してリポジトリ コンテンツを手動でインポートする
SAP デプロイ自動化フレームワーク リポジトリからコンテンツを手動でダウンロードして、Azure DevOps リポジトリのローカル クローンに追加することもできます。
https://github.com/Azure/SAP-automation-samples
リポジトリに移動し、リポジトリのコンテンツを .zip ファイルとしてダウンロードします。 [コード] を選択し、[ZIP のダウンロード] を選択します。
.zip ファイルからローカル クローンのルート フォルダーにコンテンツをコピーします。
Visual Studio Code でローカル フォルダーを開きます。 ここに表示されるソース管理アイコンは、インジケーターによって変更を同期する必要があることを示します。
ソース管理アイコンを選択し、変更に関するメッセージを入力します。 たとえば、「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 サービス接続が必要です。 詳細については、「サービス接続の管理」を参照してください。
サービス接続を作成するには、[プロジェクト設定] に移動し、[パイプライン] セクションの [サービス接続] に移動します。
サービス接続の種類として [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 組織にインストールします。
セルフホステッド エージェントの準備
[組織の設定] に移動して、エージェント プールを作成します。 [パイプライン] セクションで、[エージェント プール]>[プールを追加する] 選択します。 プールの種類として [セルフホステッド] を選択します。 コントロール プレーン環境に合わせて、プールに名前を付けます。 たとえば、
MGMT-WEEU-POOL
を使用します。 [すべてのパイプラインへのアクセス許可を与える] が選択されていることを確認し、[作成] を選択してプールを作成します。Azure DevOps 組織で使用する予定のユーザー アカウントでサインインします。
ホーム ページからユーザー設定を開き、[個人用アクセス トークン] を選択します。
以下の設定で個人用アクセス トークンを作成します。
エージェント プール: [読み取り] と [管理] を選択 します。
ビルド: [読み取り]、[実行] の順に選択 します。
コード: [読み取りおよび書き込み] を選択します。
変数グループ: [読み取り]、[作成]、[管理] の順に選択 します。
作成されたトークン値を書き留めます。
変数の定義
デプロイ パイプラインは、変数グループを使用して定義されている事前定義済みのパラメーター値のセットを使用するように構成されます。
共通の変数
共通変数は、すべてのデプロイ パイプラインで使用されます。 これらは、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-MGMT
、SDAF-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 サービス接続が必要です。 詳細については、「サービス接続の管理」を参照してください。
サービス接続を作成するには、[プロジェクト設定] に移動します。 [パイプライン] セクションで [サービス接続] を選択します。
サービス接続の種類として [Azure Resource Manager] を選択し、認証方法として [サービス プリンシパル (手動)] を選択します。 ターゲット サブスクリプション (通常はコントロール プレーン サブスクリプション) を入力します。 サービス プリンシパルの詳細を取得します。 [検証] を選択して資格情報を検証します。 サービス プリンシパルの作成方法の詳細については、「サービス プリンシパルの作成」を参照してください。
サービス接続名を入力します (例えば Connection to MGMT subscription
を使用)。 必ず [すべてのパイプラインにアクセス許可を付与する] チェックボックスをオンにしてください。 [Verify and save] (確認して保存) を選択して、サービス接続を保存します。
アクセス許可
ほとんどのパイプラインは Azure Repos にファイルを追加するため、プルアクセス許可が必要です。 [プロジェクト設定] の [リポジトリ] セクションで、ソース コード リポジトリの [セキュリティ] タブを選択して、投稿アクセス許可を Build Service
に割り当てます。
コントロール プレーンをデプロイする
新しく作成されたパイプラインは、既定のビューに表示されない場合があります。 [最近表示したもの] タブを選択して、[All tabs]\(すべてのタブ\) に戻り、新しいパイプラインを表示します。
[Control plane deployment]\(コントロール プレーンのデプロイ\) パイプラインを選択し、デプロイ機能と SAP ライブラリの構成名を入力します。 [実行] を選択してコントロール プレーンをデプロイします。 構成 Web アプリを設定する場合は、[Deploy the configuration web application]\(構成 Web アプリのデプロイ\) チェックボックスをオンにする必要があります。
Azure DevOps Services のセルフホステッド エージェントを手動で構成する
手動構成は、Azure DevOps Services エージェントが自動的に構成されていない場合にのみ必要です。 続行する前に、エージェント プールが空であることを確認します。
デプロイ機能に接続するには:
Azure portal にサインインします。
デプロイ機能の仮想マシンを含むリソース・グループに移動します。
Azure Bastion を使用して仮想マシンに接続します。
既定のユーザー名は azureadm です。
[Azure Key Vault から SSH 秘密キー] を選択します。
コントロール プレーンを含むサブスクリプションを選択します。
デプロイ機能キー コンテナーを選択します。
シークレットの一覧から、-sshkey で終わるシークレットを選択します。
仮想マシンへの接続
次のスクリプトを実行して、デプロイ機能を構成します。
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 システム インフラストラクチャをデプロイできるようになっています。