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 防火牆和 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 存放庫將內容匯入其中。
建立手動匯入的存放庫
只有在您無法直接匯入存放庫時,才執行此步驟。
若要建立 工作區存放 庫,請在 [Repos ] 區段中的 [ 項目設定] 底下,選取 [ 建立]。
選擇存放庫,輸入 Git,並提供存放庫的名稱。 例如,使用 SAP 組態存放庫。
複製存放庫
若要提供內容更完整的編輯功能,您可以將存放庫複製到本機資料夾,並在本機編輯內容。
若要將存放庫複製到本機資料夾,請在入口網站的 [Repos] 區段上,選取 [檔案] 底下的 [複製]。 如需詳細資訊,請參閱 複製儲存庫。
使用本地存放庫手動匯入存放庫內容
您也可以從 SAP 部署自動化架構存放庫手動下載內容,並將其新增至 Azure DevOps 存放庫的本機複製品。
前往 https://github.com/Azure/SAP-automation-samples 存放庫,並以 .zip 檔案的形式下載存放庫的內容。 選取 [ 程序代碼 ],然後選擇 [ 下載 ZIP]。
將內容從 .zip 檔案複製到本機複製的根資料夾。
在 Visual Studio Code 中開啟本機資料夾。 您應該會看到需要通過此處顯示的來源控制圖示指示來同步變更。
選取原始檔控制圖示,並提供變更的相關訊息。 例如,輸入從 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 服務連線。 如需詳細資訊,請參閱 管理服務連線。
若要建立服務連線,請移至 [項目設定 ],然後在 [ 管線] 區段底下,移至 [服務連線]。
選取 [GitHub ] 作為服務連線類型。 在 OAuth 組態 下拉式清單中選取 Azure Pipelines。
選取 [授權 ] 以登入 GitHub。
輸入服務連線名稱,例如 GitHub 的 SDAF 連線。 確定已選取 [為所有管線授與存取權限] 核取方塊。 選取 [儲存] 以儲存服務連線。
設定 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
儲存應用程式註冊標識碼和密碼值以供稍後使用。
建立 Azure Pipelines
Azure Pipelines 會實作為 YAML 檔案。 它們會儲存在存放庫中的 deploy/pipelines 資料夾中。
控制架構部署管道
建立控制平面部署流程。 在 [ 管線] 區段下 ,選取 [ 新增管線]。 選取 [Azure Repos Git ] 作為程式代碼的來源。 將您的管線設定為使用現有的 Azure Pipelines YAML 檔案。 使用下列設定指定管線:
| 設定 | 價值觀 |
|---|---|
| 存放庫 | 「根存放庫」(與項目名稱相同) |
| 分支 | 主要 |
| 路徑 | pipelines/01-deploy-control-plane.yml |
| 名稱 | 控制平面部署 |
儲存管線。 若要查看 [ 儲存],請選取 [ 執行] 旁的箭號。 移至 [ 管線] 區 段,然後選取管線。 從右側的省略號功能表選擇 [重新命名/移動 ],並將管線重新命名為 控制平面部署。
SAP 工作負載區域部署流程
建立 SAP 工作負載區域管線。 在 [ 管線] 區段下 ,選取 [ 新增管線]。 選取 [Azure Repos Git ] 作為程式代碼的來源。 將您的管線設定為使用現有的 Azure Pipelines YAML 檔案。 使用下列設定指定管線:
| 設定 | 價值觀 |
|---|---|
| 存放庫 | 「根存放庫」(與項目名稱相同) |
| 分支 | 主要 |
| 路徑 | pipelines/02-sap-workload-zone.yml |
| 名稱 | SAP 工作負載區域部署 |
儲存管線。 若要查看 [ 儲存],請選取 [ 執行] 旁的箭號。 移至 [ 管線] 區 段,然後選取管線。 從右側的省略號功能表選擇 [重新命名/移動 ],並將管線重新命名為 SAP 工作負載區域部署。
SAP 系統部署管線
建立 SAP 系統部署管線。 在 [ 管線] 區段下 ,選取 [ 新增管線]。 選取 [Azure Repos Git ] 作為程式代碼的來源。 將您的管線設定為使用現有的 Azure Pipelines YAML 檔案。 使用下列設定指定管線:
| 設定 | 價值觀 |
|---|---|
| 存放庫 | 「根存放庫」(與項目名稱相同) |
| 分支 | 主要 |
| 路徑 | pipelines/03-sap-system-deployment.yml |
| 名稱 | SAP 系統部署 (基礎結構) |
儲存管線。 若要查看 [ 儲存],請選取 [ 執行] 旁的箭號。 移至 [ 管線] 區 段,然後選取管線。 從右側的更多選項功能表選擇 重新命名/移動,並將管線重新命名為 SAP 系統部署(基礎設施)。
SAP 軟體取得流程
建立 SAP 軟體取得管線。 在 [ 管線] 區段下 ,選取 [ 新增管線]。 選取 [Azure Repos Git ] 作為程式代碼的來源。 將您的管線設定為使用現有的 Azure Pipelines YAML 檔案。 使用下列設定指定管線:
| 設定 | 價值觀 |
|---|---|
| 存放庫 | 「根存放庫」(與項目名稱相同) |
| 分支 | 主要 |
| 路徑 | deploy/pipelines/04-sap-software-download.yml |
| 名稱 | SAP 軟體採購 |
儲存管線。 若要查看 [ 儲存],請選取 [ 執行] 旁的箭號。 移至 [ 管線] 區 段,然後選取管線。 從右側的省略號功能表選擇 [重新命名/移動 ],並將管線重新命名為 SAP 軟體取得。
SAP 組態和軟體安裝流程
建立 SAP 組態和軟體安裝管線。 在 [ 管線] 區段下 ,選取 [ 新增管線]。 選取 [Azure Repos Git ] 作為程式代碼的來源。 將您的管線設定為使用現有的 Azure Pipelines YAML 檔案。 使用下列設定指定管線:
| 設定 | 價值觀 |
|---|---|
| 存放庫 | 「根存放庫」(與項目名稱相同) |
| 分支 | 主要 |
| 路徑 | pipelines/05-DB-and-SAP-installation.yml |
| 名稱 | 組態和 SAP 安裝 |
儲存管線。 若要查看 [ 儲存],請選取 [ 執行] 旁的箭號。 移至 [ 管線] 區 段,然後選取管線。 從右側的省略號功能表選擇 [重新命名/移動 ],並將管線重新命名為 SAP 組態和軟體安裝。
部署移除流程
建立移除部署的作業流程。 在 [ 管線] 區段下 ,選取 [ 新增管線]。 選取 [Azure Repos Git ] 作為程式代碼的來源。 將您的管線設定為使用現有的 Azure Pipelines YAML 檔案。 使用下列設定指定管線:
| 設定 | 價值觀 |
|---|---|
| 存放庫 | 「根存放庫」(與項目名稱相同) |
| 分支 | 主要 |
| 路徑 | pipelines/10-remover-terraform.yml |
| 名稱 | 部署移除 |
儲存管線。 若要查看 [ 儲存],請選取 [ 執行] 旁的箭號。 移至 [ 管線] 區 段,然後選取管線。 從右側的省略號功能表選擇 [重新命名/移動 ],並將管線重新命名為 [部署移除]。
控制平面移除管線
建立控制平面部署移除流程。 在 [ 管線] 區段下 ,選取 [ 新增管線]。 選取 [Azure Repos Git ] 作為程式代碼的來源。 將您的管線設定為使用現有的 Azure Pipelines YAML 檔案。 使用下列設定指定管線:
| 設定 | 價值觀 |
|---|---|
| 存放庫 | 「根存放庫」(與項目名稱相同) |
| 分支 | 主要 |
| 路徑 | pipelines/12-remove-control-plane.yml |
| 名稱 | 移除控制平面 |
儲存管線。 若要查看 [ 儲存],請選取 [ 執行] 旁的箭號。 移至 [ 管線] 區 段,然後選取管線。 從右側的省略號功能表選擇 [重新命名/移動 ],並將管線重新命名為 [控制平面移除]。
使用 Azure Resource Manager 部署移除管線
建立移除部署的 Azure Resource Manager 管線。 在 [ 管線] 區段下 ,選取 [ 新增管線]。 選取 [Azure Repos Git ] 作為程式代碼的來源。 將您的管線設定為使用現有的 Azure Pipelines YAML 檔案。 使用下列設定指定管線:
| 設定 | 價值觀 |
|---|---|
| 存放庫 | 「根存放庫」(與項目名稱相同) |
| 分支 | 主要 |
| 路徑 | pipelines/11-remover-arm-fallback.yml |
| 名稱 | 使用 Azure 資源管理器 移除部署 |
儲存管線。 若要查看 [ 儲存],請選取 [ 執行] 旁的箭號。 移至 [ 管線] 區 段,然後選取管線。 從右側的省略號功能表選擇 [重新命名/移動 ],然後使用ARM處理器將管線重新命名為 [部署移除]。
備註
只使用此管線作為最後手段。 只移除資源群組會留下殘餘物,使重新部署變得複雜。
儲存庫更新流程
建立存放庫更新程式管線。 在 [ 管線] 區段下 ,選取 [ 新增管線]。 選取 [Azure Repos Git ] 作為程式代碼的來源。 將您的管線設定為使用現有的 Azure Pipelines YAML 檔案。 使用下列設定指定管線:
| 設定 | 價值觀 |
|---|---|
| 存放庫 | 「根存放庫」(與項目名稱相同) |
| 分支 | 主要 |
| 路徑 | pipelines/20-update-ado-repository.yml |
| 名稱 | 存放庫更新程式 |
儲存管線。 若要查看 [ 儲存],請選取 [ 執行] 旁的箭號。 移至 [ 管線] 區 段,然後選取管線。 從右側的省略號功能表中選擇「重新命名/移動」,並將管線重新命名為「儲存庫更新程式」。
當您想要使用的 sap-automation 存放庫中有更新時,應該使用此管線。
從 Visual Studio Marketplace 匯入清除工作
管道使用自訂任務在部署後執行清理活動。 您可以安裝自訂工作從 建置後清除。 在執行管線之前,請先將它安裝到您的 Azure DevOps 組織。
自行架設代理的準備工作
移至 [組織設定] 以建立代理程式集區。 在 [管線] 區段中,選取 [代理集區>新增集區]。 選取 [自我裝載 ] 作為集區類型。 將集區命名為與控制平面環境對齊。 例如,使用
MGMT-WEEU-POOL。 確定已選取 [ 授與所有管線的訪問許可權 ],然後選取 [ 建立 ] 以建立集區。使用您打算在 Azure DevOps 組織中使用的用戶帳戶登入。
從首頁開啟您的使用者設定,然後選取 [ 個人存取令牌]。
使用這些設定建立個人存取權杖:
代理程式集區:選取 讀取與管理。
建置:選取 [讀取並執行]。
程式代碼:選取 [讀取和寫入]。
變數群組:選取 [讀取]、[建立] 及 [管理]。
記下建立的令牌值。
變數定義
部署管線會設定為使用使用變數群組所定義的一組預先定義參數值。
一般變數
所有部署管線都會使用一般變數。 它們會儲存在稱為的 SDAF-General變數群組中。
使用 SDAF-General] 區段中的 [連結庫] 頁面,建立名為 的新變數群組。 新增下列變數:
| 變數 | 價值觀 | 註釋 |
|---|---|---|
| 部署配置路徑 | 工作空間 | 若要測試範例組態,請使用 samples/WORKSPACES 而非 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_version=1.3.0 --output yaml
請記得使用管線許可權指派所有管線的許可權。
環境特定變數
由於每個環境可能有不同的部署認證,因此您必須為每個環境建立變數群組。 例如,使用 SDAF-MGMT、SDAF-DEV、 和 SDAF-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_連接名稱 | 先前建立的連接名稱 | |
| 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 用於隔離代理程式 |
針對使用服務憑證的分隔代理程式進行高可用性部署所需。 |
| 派特 | <Personal Access Token> |
使用上一個步驟中定義的個人令牌。 |
| 池 | <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 群組的群組標識碼 | 使用瀏覽器存取變數群組時,可以從URL參數 variableGroupId 擷取標識碼。 例如: variableGroupId=8 。 |
| WORKLOADZONE_PIPELINE_ID | 管線的標識碼SAP workload zone deployment |
您可以從 Azure DevOps 中的管線頁面擷取 URL 參數 definitionId 的識別碼。 例如: definitionId=31 。 |
| 系統管道識別碼 | 管線的標識碼SAP system deployment (infrastructure) |
您可以從 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。 確定已選取 [為所有管線授與存取權限] 核取方塊。 選取 [驗證並儲存 ] 以儲存服務連線。
權限
大部分管線會將檔案新增至 Azure Repos,因此需要提取許可權。 在 [項目設定] 的 [存放 庫 ] 區段下,選取原始程式碼存放庫的 [ 安全性 ] 索引標籤,並將 [參與] 許可權指派給 Build Service。
部署控制平面
新建立的管線可能無法顯示在預設檢視中。 選取 最近 標籤,然後返回 所有標籤 以檢視新的工作流。
選取 [控制平面部署 管線],然後輸入部署器和 SAP 連結庫的組態名稱。 選取 [執行] 以部署控制平面。 如果您想要設定 Web 應用程式,請務必選取 [ 部署設定 Web 應用程式 ] 複選框。
手動設定 Azure DevOps Services 自我裝載代理程式
只有在 Azure DevOps Services 代理程式未自動設定時,才需要手動設定。 在繼續之前,請先檢查代理程式集區是否為空白。
若要連線到部署者:
登入 Azure 入口網站。
移至包含部署者虛擬機的資源群組。
使用 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
您也需要授予 App Service 系統指派的受控身分識別讀者權限。 移至 App Service 資源。 在左側,選取 [ 身分識別]。 在 [系統指派 標籤上,選取 Azure 角色指派>,然後選擇新增角色指派。 選取 [ 訂用帳戶 ] 作為範圍,然後選取 [ 讀取者 ] 作為角色。 然後選擇 儲存。 如果沒有此步驟,Web 應用程式下拉式清單功能將無法運作。
您現在應該能夠流覽 Web 應用程式,並用它來部署 SAP 工作負載區域和 SAP 系統基礎結構。