Azure DevOps 提供可用于执行基础结构部署和配置和 SAP 安装活动的管道来简化部署过程。
可以使用 Azure Repos 来存储配置文件,并使用 Azure Pipelines 部署和配置基础结构和 SAP 应用程序。
注册 Azure DevOps 服务
若要使用 Azure DevOps 服务,则需要一个 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 自动化 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 配置存储库。
克隆存储库
若要提供内容更全面的编辑功能,可以将存储库克隆到本地文件夹并在本地编辑内容。
若要将存储库克隆到本地文件夹,请在门户的 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
保存应用注册 ID 和密码值供以后使用。
创建 Azure Pipelines
Azure Pipelines 作为 YAML 文件实现。 它们存储在存储库中的 deploy/pipelines 文件夹中。
控制平面部署管道
创建控制平面部署管道。 在 “管道” 部分下,选择“ 新建管道”。 选择 Azure Repos Git 作为代码的源。 将管道配置为使用现有的 Azure Pipelines YAML 文件。 使用以下设置指定管道:
设置 | 价值 |
---|---|
存储库 | “根存储库”(与项目名称相同) |
分支 | 主要 |
路径 | pipelines/01-deploy-control-plane.yml |
名称 | 控制平面部署 |
保存管道。 若要查看 “保存”,请选择 “运行”旁边的 V 形。 转到 “管道” 部分并选择管道。 从右侧的省略号菜单中选择“ 重命名/移动 ”,并将管道重命名为 控制平面部署。
SAP 工作负载区域部署流程
创建 SAP 工作负荷区域管道。 在 “管道” 部分下,选择“ 新建管道”。 选择 Azure Repos Git 作为代码的源。 将管道配置为使用现有的 Azure Pipelines YAML 文件。 使用以下设置指定管道:
设置 | 价值 |
---|---|
存储库 | “根存储库”(与项目名称相同) |
分支 | 主要 |
路径 | pipelines/02-sap-workload-zone.yml |
名称 | SAP 工作负荷区域部署 |
保存管道。 若要查看 “保存”,请选择 “运行”旁边的 V 形。 转到 “管道” 部分并选择管道。 从右侧的省略号菜单中选择“ 重命名/移动 ”,并将管道重命名为 SAP 工作负荷区域部署。
SAP 系统部署管道
创建 SAP 系统部署管道。 在 “管道” 部分下,选择“ 新建管道”。 选择 Azure Repos Git 作为代码的源。 将管道配置为使用现有的 Azure Pipelines YAML 文件。 使用以下设置的参数指定管道:
设置 | 价值 |
---|---|
存储库 | “根存储库”(与项目名称相同) |
分支 | 主要 |
路径 | pipelines/03-sap-system-deployment.yml |
名称 | SAP 系统部署(基础结构) |
保存管道。 若要查看 “保存”,请选择 “运行”旁边的 V 形。 转到 “管道” 部分并选择管道。 从右侧的省略号菜单中选择“重命名/移动”,并将管道重命名为 SAP 系统部署(基础结构)。
SAP 软件获取管道
创建 SAP 软件获取管道。 在 “管道” 部分下,选择“ 新建管道”。 选择 Azure Repos Git 作为代码的源。 将管道配置为使用现有的 Azure Pipelines YAML 文件。 使用以下设置指定管道:
设置 | 价值 |
---|---|
存储库 | “根存储库”(与项目名称相同) |
分支 | 主要 |
路径 | deploy/pipelines/04-sap-software-download.yml |
名称 | SAP 软件获取 |
保存管道。 若要查看 “保存”,请选择 “运行”旁边的 V 形。 转到 “管道” 部分并选择管道。 从右侧的省略号菜单中选择“ 重命名/移动 ”,并将管道重命名为 SAP 软件获取。
SAP 配置和软件安装流程
创建 SAP 配置和软件安装管道。 在 “管道” 部分下,选择“ 新建管道”。 选择 Azure Repos Git 作为代码的源。 将管道配置为使用现有的 Azure Pipelines YAML 文件。 使用以下设置指定管道:
设置 | 价值 |
---|---|
存储库 | “根存储库”(与项目名称相同) |
分支 | 主要 |
路径 | pipelines/05-DB-and-SAP-installation.yml |
名称 | 配置和 SAP 安装 |
保存管道。 若要查看 “保存”,请选择 “运行”旁边的 V 形。 转到 “管道” 部分并选择管道。 选择右侧省略号菜单中的“ 重命名/移动 ”,并将管道重命名为 SAP 配置和软件安装。
部署移除管道
创建部署移除管道。 在 “管道” 部分下,选择“ 新建管道”。 选择 Azure Repos Git 作为代码的源。 将管道配置为使用现有的 Azure Pipelines YAML 文件。 使用以下设置指定管道:
设置 | 价值 |
---|---|
存储库 | “根存储库”(与项目名称相同) |
分支 | 主要 |
路径 | pipelines/10-remover-terraform.yml |
名称 | 部署移除 |
保存管道。 若要查看 “保存”,请选择 “运行”旁边的 V 形。 转到 “管道” 部分并选择管道。 从右侧的省略号菜单中选择“ 重命名/移动 ”,并将管道重命名为 “部署删除”。
控制平面移除管道
创建控制平面部署移除管道。 在 “管道” 部分下,选择“ 新建管道”。 选择 Azure Repos Git 作为代码的源。 将管道配置为使用现有的 Azure Pipelines YAML 文件。 使用以下设置指定管道:
设置 | 价值 |
---|---|
存储库 | “根存储库”(与项目名称相同) |
分支 | 主要 |
路径 | pipelines/12-remove-control-plane.yml |
名称 | 控制平面移除 |
保存管道。 若要查看 “保存”,请选择 “运行”旁边的 V 形。 转到 “管道” 部分并选择管道。 从右侧的省略号菜单中选择“ 重命名/移动 ”,并将管道重命名为 “控制平面删除”。
使用 Azure 资源管理器部署删除管道
创建用于撤销部署的 Azure 资源管理器管道。 在 “管道” 部分下,选择“ 新建管道”。 选择 Azure Repos Git 作为代码的源。 将管道配置为使用现有的 Azure Pipelines YAML 文件。 通过以下设置来指定管道:
设置 | 价值 |
---|---|
存储库 | “根存储库”(与项目名称相同) |
分支 | 主要 |
路径 | pipelines/11-remover-arm-fallback.yml |
名称 | 使用 Azure 资源管理器的部署移除 |
保存管道。 若要查看 “保存”,请选择 “运行”旁边的 V 形。 转到 “管道” 部分并选择管道。 从右侧的省略号菜单中选择“ 重命名/移动 ”,并使用 ARM 处理器将管道重命名为 部署删除。
注释
仅将此管道用作最后手段。 仅移除资源组会留下一些残余,这可能会使重新部署变得复杂。
存储库更新程序管道
创建存储库更新程序管道。 在 “管道” 部分下,选择“ 新建管道”。 选择 Azure Repos Git 作为代码的源。 将管道配置为使用现有的 Azure Pipelines YAML 文件。 使用以下设置指定管道:
设置 | 价值 |
---|---|
存储库 | “根存储库”(与项目名称相同) |
分支 | 主要 |
路径 | pipelines/20-update-ado-repository.yml |
名称 | 存储库更新程序 |
保存管道。 若要查看 “保存”,请选择 “运行”旁边的 V 形。 转到 “管道” 部分并选择管道。 选择右侧省略号菜单中的“ 重命名/移动 ”,并将管道重命名为 存储库更新程序。
如果要使用的 sap-automation 存储库存在更新,则应使用此管道。
从 Visual Studio Marketplace 导入清理任务
管道使用自定义任务执行部署后清理活动。 可以从 Post Build Cleanup 安装自定义任务。 在运行管道之前,请先将其安装到你的 Azure DevOps 组织中。
自承载代理的准备工作
转到 组织设置,创建代理池。 在“ 管道 ”部分下,选择 “代理池>添加池”。 选择“自承载”作为池类型。 将该池命名以符合控制平面环境。 例如,使用
MGMT-WEEU-POOL
。 确保选中“ 授予对所有管道的访问权限 ”,然后选择“ 创建 ”以创建池。使用计划在 Azure DevOps 组织中使用的用户帐户登录。
在主页中,打开用户设置并选择 “个人访问令牌”。
使用以下设置创建个人访问令牌:
代理池:选择 “读取和管理”。
生成:选择 “读取”并执行。
代码:选择 “读取和写入”。
变量组:选择 “读取”、“创建”和管理。
记下创建的令牌值。
变量定义
部署管道被配置为使用由变量组定义的一组预定义参数值。
常见变量
所有部署管道都使用通用变量。 它们存储在名为 SDAF-General
的变量组中。
使用“管道”部分中的“库”页创建一SDAF-General
个新的变量组。 添加以下变量:
变量 | 价值 | 注释 |
---|---|---|
Deployment_Configuration_Path | 工作空间 | 若要测试示例配置,请使用 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_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 |
将服务主体用于隔离代理的高可用性部署所需。 |
帕特 | <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 组的组 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 。 |
保存变量。
请记住,使用 管道权限分配所有管道的权限。
使用 Web 应用时,请确保生成服务至少具有“参与”权限。
可以使用克隆功能创建下一个环境变量组。 APP_REGISTRATION_APP_ID、WEB_APP_CLIENT_SECRET、SDAF_GENERAL_GROUP_ID、WORKLOADZONE_PIPELINE_ID和SYSTEM_PIPELINE_ID仅对SDAF-MGMT组是必需的。
创建服务连接
若要删除 Azure 资源,需要 Azure 资源管理器服务连接。 有关详细信息,请参阅 管理服务连接。
若要创建服务连接,请转到“项目设置”。 在 “管道 ”部分下,选择 “服务连接”。
选择 Azure 资源管理器 作为服务连接类型和 服务主体(手动) 作为身份验证方法。 输入目标订阅(通常为控制平面订阅)。 输入服务主体详细信息。 选择 “验证” 以验证凭据。 有关如何创建服务主体的详细信息,请参阅 “创建服务主体”。
输入 服务连接名称,例如,使用 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
你还需要向应用服务系统分配托管标识授予读取者权限。 转到应用服务资源。 在左侧选择身份。 在系统分配选项卡上,选择Azure 角色分配>,然后添加角色分配。 选择 “订阅 ”作为范围,选择 “读取者 ”作为角色。 然后,选择“保存”。 如果没有此步骤,Web 应用下拉列表功能将不起作用。
现在应该能够访问 Web 应用,并使用它来部署 SAP 工作负荷区域和 SAP 系统基础结构。