Usare SAP Deployment Automation Framework da Azure DevOps Services
Azure DevOps semplifica il processo di distribuzione fornendo pipeline che è possibile eseguire per eseguire la distribuzione dell'infrastruttura e le attività di configurazione e installazione SAP.
È possibile usare Azure Repos per archiviare i file di configurazione e usare Azure Pipelines per distribuire e configurare l'infrastruttura e l'applicazione SAP.
Iscriversi ad Azure DevOps Services
Per usare Azure DevOps Services, è necessaria un'organizzazione di Azure DevOps. Un'organizzazione viene usata per connettere gruppi di progetti correlati. Usare l'account aziendale o dell'istituto di istruzione per connettere automaticamente l'organizzazione all'ID Microsoft Entra. Per creare un account, aprire Azure DevOps e accedere o creare un nuovo account.
Configurare Azure DevOps Services per SAP Deployment Automation Framework
È possibile usare lo script seguente per eseguire un'installazione di base di Azure DevOps Services per SAP Deployment Automation Framework.
Aprire PowerShell I edizione Standard e copiare lo script seguente e aggiornare i parametri in modo che corrispondano all'ambiente.
$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
}
Eseguire lo script e seguire le istruzioni. Lo script apre le finestre del browser per l'autenticazione e per l'esecuzione di attività nel progetto Azure DevOps.
È possibile scegliere di eseguire il codice direttamente da GitHub oppure importare una copia del codice nel progetto Azure DevOps.
Per verificare che il progetto sia stato creato, passare al portale di Azure DevOps e selezionare il progetto. Assicurarsi che il repository sia stato popolato e che le pipeline siano state create.
Importante
Eseguire i passaggi seguenti nella workstation locale. Assicurarsi anche di avere installato l'interfaccia della riga di comando di Azure più recente eseguendo il az upgrade
comando .
Configurare gli artefatti di Azure DevOps Services per una nuova zona del carico di lavoro
Usare lo script seguente per distribuire gli artefatti necessari per supportare una nuova zona del carico di lavoro. Questo processo crea il gruppo di variabili e la connessione al servizio in Azure DevOps e, facoltativamente, l'entità servizio di distribuzione.
Aprire PowerShell I edizione Standard e copiare lo script seguente e aggiornare i parametri in modo che corrispondano all'ambiente.
$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
Creare una configurazione del piano di controllo di esempio
È possibile eseguire la Create Sample Deployer Configuration
pipeline per creare una configurazione di esempio per il piano di controllo. Quando è in esecuzione, scegliere l'area di Azure appropriata. È anche possibile controllare se si vuole distribuire Firewall di Azure e Azure Bastion.
Configurazione manuale di Azure DevOps Services per SAP Deployment Automation Framework
È possibile configurare manualmente Azure DevOps Services per SAP Deployment Automation Framework.
Crea un nuovo progetto
È possibile usare Azure Repos per archiviare il codice dal repository GitHub di sap-automation e dai file di configurazione dell'ambiente.
Aprire Azure DevOps e creare un nuovo progetto selezionando Nuovo progetto e immettendo i dettagli del progetto. Il progetto contiene il repository di controllo del codice sorgente di Azure Repos e Azure Pipelines per l'esecuzione di attività di distribuzione.
Se non viene visualizzato Nuovo progetto, assicurarsi di disporre delle autorizzazioni per creare nuovi progetti nell'organizzazione.
Registrare l'URL del progetto.
Importare il repository
Per iniziare, importare il repository GitHub bootstrap di SAP Deployment Automation Framework in Azure Repos.
Passare alla sezione Repository e selezionare Importa un repository. Importare il https://github.com/Azure/sap-automation-bootstrap.git
repository in Azure DevOps. Per altre informazioni, vedere Importare un repository.
Se non è possibile importare un repository, è possibile creare manualmente il repository. È quindi possibile importare il contenuto dal repository GitHub Bootstrap di SAP Deployment Automation Framework.
Creare il repository per l'importazione manuale
Eseguire questo passaggio solo se non è possibile importare direttamente il repository.
Per creare il repository delle aree di lavoro, nella sezione Repos, in Impostazioni progetto selezionare Crea.
Scegliere il repository, immettere Git e specificare un nome per il repository. Ad esempio, usare il repository di configurazione SAP.
Clonare il repository
Per offrire una funzionalità di modifica più completa del contenuto, è possibile clonare il repository in una cartella locale e modificare il contenuto in locale.
Per clonare il repository in una cartella locale, nella sezione Repository del portale, in File selezionare Clona. Per altre informazioni, vedere Clonare un repository.
Importare manualmente il contenuto del repository usando un clone locale
È anche possibile scaricare manualmente il contenuto dal repository SAP Deployment Automation Framework e aggiungerlo al clone locale del repository Azure DevOps.
Passare al https://github.com/Azure/SAP-automation-samples
repository e scaricare il contenuto del repository come file ZIP. Selezionare Codice e scegliere Scarica ZIP.
Copiare il contenuto dal file ZIP nella cartella radice del clone locale.
Aprire la cartella locale in Visual Studio Code. Si noterà che le modifiche devono essere sincronizzate dall'indicatore tramite l'icona del controllo del codice sorgente mostrata qui.
Selezionare l'icona del controllo del codice sorgente e fornire un messaggio sulla modifica. Ad esempio, immettere Import from GitHub (Importa da GitHub ) e premere CTRL+INVIO per eseguire il commit delle modifiche. Selezionare quindi Sincronizza modifiche per sincronizzare le modifiche nel repository.
Scegliere l'origine per il codice Terraform e Ansible
È possibile eseguire il codice sap Deployment Automation Framework direttamente da GitHub oppure importarlo in locale.
Eseguire il codice da un repository locale
Se si vuole eseguire il codice sap Deployment Automation Framework dal progetto Azure DevOps locale, è necessario creare un repository di codice separato e un repository di configurazione nel progetto Azure DevOps:
- Nome del repository di configurazione:
Same as the DevOps Project name
. L'origine èhttps://github.com/Azure/sap-automation-bootstrap.git
. - Nome del repository di codice:
sap-automation
. L'origine èhttps://github.com/Azure/sap-automation.git
. - Nome dell'esempio e del repository di modelli:
sap-samples
. L'origine èhttps://github.com/Azure/sap-automation-samples.git
.
Eseguire il codice direttamente da GitHub
Se si vuole eseguire il codice direttamente da GitHub, è necessario specificare le credenziali per Azure DevOps per poter eseguire il pull del contenuto da GitHub.
Creare la connessione al servizio GitHub
Per eseguire il pull del codice da GitHub, è necessaria una connessione al servizio GitHub. Per altre informazioni, vedere Gestire le connessioni al servizio.
Per creare la connessione al servizio, passare a Project Impostazioni e nella sezione Pipeline passare a Connessioni al servizio.
Selezionare GitHub come tipo di connessione del servizio. Selezionare Azure Pipelines nell'elenco a discesa Configurazione OAuth.
Selezionare Autorizza per accedere a GitHub.
Immettere un nome di connessione al servizio, ad esempio SDAF Connessione ion in GitHub. Assicurarsi che sia selezionata la casella di controllo Concedi l'autorizzazione di accesso a tutte le pipeline. Selezionare Salva per salvare la connessione al servizio.
Configurare l'app Web
Il framework di automazione effettua facoltativamente il provisioning di un'app Web come parte del piano di controllo per facilitare l'uso dei file di configurazione di sistema e dell'area del carico di lavoro SAP. Se si vuole usare l'app Web, è prima necessario creare una registrazione dell'app a scopo di autenticazione. Aprire Azure Cloud Shell ed eseguire i comandi seguenti.
Sostituire MGMT
con l'ambiente in base alle esigenze.
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
Salvare i valori di ID registrazione app e password per usarli in un secondo momento.
Creare Azure Pipelines
Azure Pipelines viene implementato come file YAML. Vengono archiviati nella cartella deploy/pipelines nel repository.
Pipeline di distribuzione del piano di controllo
Creare la pipeline di distribuzione del piano di controllo. Nella sezione Pipeline selezionare Nuova pipeline. Selezionare Azure Repos Git come origine per il codice. Configurare la pipeline per l'uso di un file YAML di Azure Pipelines esistente. Specificare la pipeline con le impostazioni seguenti:
Impostazione | Valore |
---|---|
Repository | "Repository radice" (uguale al nome del progetto) |
Filiale | main |
Percorso | pipelines/01-deploy-control-plane.yml |
Nome | Distribuzione del piano di controllo |
Salvare la pipeline. Per visualizzare Salva, selezionare la freccia di espansione accanto a Esegui. Passare alla sezione Pipeline e selezionare la pipeline. Scegliere Rinomina/Sposta dal menu con i puntini di sospensione a destra e rinominare la pipeline come Distribuzione del piano di controllo.
Pipeline di distribuzione della zona del carico di lavoro SAP
Creare la pipeline della zona del carico di lavoro SAP. Nella sezione Pipeline selezionare Nuova pipeline. Selezionare Azure Repos Git come origine per il codice. Configurare la pipeline per l'uso di un file YAML di Azure Pipelines esistente. Specificare la pipeline con le impostazioni seguenti:
Impostazione | Valore |
---|---|
Repository | "Repository radice" (uguale al nome del progetto) |
Filiale | main |
Percorso | pipelines/02-sap-workload-zone.yml |
Nome | Distribuzione della zona del carico di lavoro SAP |
Salvare la pipeline. Per visualizzare Salva, selezionare la freccia di espansione accanto a Esegui. Passare alla sezione Pipeline e selezionare la pipeline. Scegliere Rinomina/Sposta dal menu con i puntini di sospensione a destra e rinominare la pipeline come distribuzione della zona di carico di lavoro SAP.
Pipeline di distribuzione del sistema SAP
Creare la pipeline di distribuzione del sistema SAP. Nella sezione Pipeline selezionare Nuova pipeline. Selezionare Azure Repos Git come origine per il codice. Configurare la pipeline per l'uso di un file YAML di Azure Pipelines esistente. Specificare la pipeline con le impostazioni seguenti:
Impostazione | Valore |
---|---|
Repository | "Repository radice" (uguale al nome del progetto) |
Filiale | main |
Percorso | pipelines/03-sap-system-deployment.yml |
Nome | Distribuzione del sistema SAP (infrastruttura) |
Salvare la pipeline. Per visualizzare Salva, selezionare la freccia di espansione accanto a Esegui. Passare alla sezione Pipeline e selezionare la pipeline. Scegliere Rinomina/Sposta dal menu con i puntini di sospensione a destra e rinominare la pipeline come distribuzione del sistema SAP (infrastruttura).
Pipeline di acquisizione software SAP
Creare la pipeline di acquisizione software SAP. Nella sezione Pipeline selezionare Nuova pipeline. Selezionare Azure Repos Git come origine per il codice. Configurare la pipeline per l'uso di un file YAML di Azure Pipelines esistente. Specificare la pipeline con le impostazioni seguenti:
Impostazione | Valore |
---|---|
Repository | "Repository radice" (uguale al nome del progetto) |
Filiale | main |
Percorso | deploy/pipelines/04-sap-software-download.yml |
Nome | Acquisizione di software SAP |
Salvare la pipeline. Per visualizzare Salva, selezionare la freccia di espansione accanto a Esegui. Passare alla sezione Pipeline e selezionare la pipeline. Scegliere Rinomina/Sposta dal menu con i puntini di sospensione a destra e rinominare la pipeline come acquisizione software SAP.
Configurazione SAP e pipeline di installazione software
Creare la configurazione SAP e la pipeline di installazione software. Nella sezione Pipeline selezionare Nuova pipeline. Selezionare Azure Repos Git come origine per il codice. Configurare la pipeline per l'uso di un file YAML di Azure Pipelines esistente. Specificare la pipeline con le impostazioni seguenti:
Impostazione | Valore |
---|---|
Repository | "Repository radice" (uguale al nome del progetto) |
Filiale | main |
Percorso | pipelines/05-DB-and-SAP-installation.yml |
Nome | Configurazione e installazione SAP |
Salvare la pipeline. Per visualizzare Salva, selezionare la freccia di espansione accanto a Esegui. Passare alla sezione Pipeline e selezionare la pipeline. Scegliere Rinomina/Sposta dal menu con i puntini di sospensione a destra e rinominare la pipeline come installazione software e configurazione SAP.
Pipeline di rimozione della distribuzione
Creare la pipeline di rimozione della distribuzione. Nella sezione Pipeline selezionare Nuova pipeline. Selezionare Azure Repos Git come origine per il codice. Configurare la pipeline per l'uso di un file YAML di Azure Pipelines esistente. Specificare la pipeline con le impostazioni seguenti:
Impostazione | Valore |
---|---|
Repository | "Repository radice" (uguale al nome del progetto) |
Filiale | main |
Percorso | pipelines/10-remover-terraform.yml |
Nome | Rimozione della distribuzione |
Salvare la pipeline. Per visualizzare Salva, selezionare la freccia di espansione accanto a Esegui. Passare alla sezione Pipeline e selezionare la pipeline. Scegliere Rinomina/Sposta dal menu con i puntini di sospensione a destra e rinominare la pipeline come Rimozione della distribuzione.
Pipeline di rimozione del piano di controllo
Creare la pipeline di rimozione della distribuzione del piano di controllo. Nella sezione Pipeline selezionare Nuova pipeline. Selezionare Azure Repos Git come origine per il codice. Configurare la pipeline per l'uso di un file YAML di Azure Pipelines esistente. Specificare la pipeline con le impostazioni seguenti:
Impostazione | Valore |
---|---|
Repository | "Repository radice" (uguale al nome del progetto) |
Filiale | main |
Percorso | pipelines/12-remove-control-plane.yml |
Nome | Rimozione del piano di controllo |
Salvare la pipeline. Per visualizzare Salva, selezionare la freccia di espansione accanto a Esegui. Passare alla sezione Pipeline e selezionare la pipeline. Scegliere Rinomina/Sposta dal menu con i puntini di sospensione a destra e rinominare la pipeline come Rimozione del piano di controllo.
Pipeline di rimozione della distribuzione con Azure Resource Manager
Creare la pipeline di rimozione della distribuzione di Azure Resource Manager. Nella sezione Pipeline selezionare Nuova pipeline. Selezionare Azure Repos Git come origine per il codice. Configurare la pipeline per l'uso di un file YAML di Azure Pipelines esistente. Specificare la pipeline con le impostazioni seguenti:
Impostazione | Valore |
---|---|
Repository | "Repository radice" (uguale al nome del progetto) |
Filiale | main |
Percorso | pipelines/11-remover-arm-fallback.yml |
Nome | Rimozione della distribuzione con Azure Resource Manager |
Salvare la pipeline. Per visualizzare Salva, selezionare la freccia di espansione accanto a Esegui. Passare alla sezione Pipeline e selezionare la pipeline. Scegliere Rinomina/Sposta dal menu con i puntini di sospensione a destra e rinominare la pipeline come Rimozione della distribuzione usando il processore ARM.
Nota
Usare questa pipeline solo come ultima risorsa. La rimozione dei soli gruppi di risorse lascia resti che potrebbero complicare le ridistribuzioni.
Pipeline del repository updater
Creare la pipeline dell'utilità di aggiornamento del repository. Nella sezione Pipeline selezionare Nuova pipeline. Selezionare Azure Repos Git come origine per il codice. Configurare la pipeline per l'uso di un file YAML di Azure Pipelines esistente. Specificare la pipeline con le impostazioni seguenti:
Impostazione | Valore |
---|---|
Repository | "Repository radice" (uguale al nome del progetto) |
Filiale | main |
Percorso | pipelines/20-update-ado-repository.yml |
Nome | Aggiornamento repository |
Salvare la pipeline. Per visualizzare Salva, selezionare la freccia di espansione accanto a Esegui. Passare alla sezione Pipeline e selezionare la pipeline. Scegliere Rinomina/Sposta dal menu con i puntini di sospensione a destra e rinominare la pipeline come Aggiornamento repository.
Questa pipeline deve essere usata quando è presente un aggiornamento nel repository sap-automation che si vuole usare.
Importare l'attività di pulizia da Visual Studio Marketplace
Le pipeline usano un'attività personalizzata per eseguire attività di pulizia dopo la distribuzione. È possibile installare l'attività personalizzata da Post Build Cleanup. Installarlo nell'organizzazione Di Azure DevOps prima di eseguire le pipeline.
Preparativi per un agente self-hosted
Creare un pool di agenti passando a Impostazioni organizzativo. Nella sezione Pipeline selezionare Pool>di agenti Aggiungi pool. Selezionare Self-hosted come tipo di pool. Assegnare al pool il nome da allineare all'ambiente del piano di controllo. Ad esempio, usare
MGMT-WEEU-POOL
. Assicurarsi che l'opzione Concedi l'autorizzazione di accesso a tutte le pipeline sia selezionata e selezionare Crea per creare il pool.Accedere con l'account utente che si prevede di usare nell'organizzazione Azure DevOps .
Nella home page aprire le impostazioni utente e selezionare Token di accesso personali.
Creare un token di accesso personale con queste impostazioni:
Pool di agenti: selezionare Lettura e gestione.
Compilazione: selezionare Lettura ed esecuzione.
Codice: selezionare Lettura e scrittura.
Gruppi di variabili: selezionare Lettura, creazione e gestione.
Annotare il valore del token creato.
Definizioni di variabili
Le pipeline di distribuzione sono configurate per l'uso di un set di valori di parametro predefiniti definiti tramite gruppi di variabili.
Variabili comuni
Le variabili comuni vengono usate da tutte le pipeline di distribuzione. Vengono archiviati in un gruppo di variabili denominato SDAF-General
.
Creare un nuovo gruppo di variabili denominato SDAF-General
usando la pagina Libreria nella sezione Pipeline. Aggiungere le variabili seguenti:
Variabile | Valore | Note |
---|---|---|
Deployment_Configuration_Path | AREE DI LAVORO | Per testare la configurazione di esempio, usare samples/WORKSPACES invece di WORKSPACES. |
Filiale | main | |
Nome utente S | <SAP Support user account name> |
|
S-Password | <SAP Support user password> |
Modificare il tipo di variabile in segreto selezionando l'icona di blocco. |
tf_version |
1.6.0 | Versione di Terraform da usare. Vedere Download di Terraform. |
Salvare le variabili.
In alternativa, è possibile usare l'interfaccia della riga di comando di Azure DevOps per configurare i gruppi.
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
Ricordarsi di assegnare autorizzazioni per tutte le pipeline usando le autorizzazioni della pipeline.
Variabili specifiche dell'ambiente
Poiché ogni ambiente potrebbe avere credenziali di distribuzione diverse, è necessario creare un gruppo di variabili per ogni ambiente. Ad esempio, usare SDAF-MGMT
,SDAF-DEV
e SDAF-QA
.
Creare un nuovo gruppo di variabili denominato SDAF-MGMT
per l'ambiente del piano di controllo usando la pagina Libreria nella sezione Pipelines . Aggiungere le variabili seguenti:
Variabile | Valore | Note |
---|---|---|
Agente | Azure Pipelines o il nome del pool di agenti |
Questo pool viene creato in un passaggio successivo. |
CP_ARM_CLIENT_ID | Service principal application ID |
|
CP_ARM_OBJECT_ID | Service principal object ID |
|
CP_ARM_CLIENT_edizione Standard CRET | Service principal password |
Modificare il tipo di variabile in segreto selezionando l'icona di blocco. |
CP_ARM_SUBSCRIPTION_ID | Target subscription ID |
|
CP_ARM_TENANT_ID | Tenant ID per l'entità servizio |
|
AZURE_CONNECTION_NAME | Nome connessione creato in precedenza | |
sap_fqdn | Nome di dominio completo sap, ad esempio sap.contoso.net |
È necessario solo se DNS privato non viene usato. |
FENCING_SPN_ID | Service principal application ID per l'agente di isolamento |
Obbligatorio per le distribuzioni a disponibilità elevata che usano un'entità servizio per l'agente di isolamento. |
FENCING_SPN_PWD | Service principal password per l'agente di isolamento |
Obbligatorio per le distribuzioni a disponibilità elevata che usano un'entità servizio per l'agente di isolamento. |
FENCING_SPN_TENANT | Service principal tenant ID per l'agente di isolamento |
Obbligatorio per le distribuzioni a disponibilità elevata che usano un'entità servizio per l'agente di isolamento. |
Token di accesso personali | <Personal Access Token> |
Usare il token personale definito nel passaggio precedente. |
PISCINA | <Agent Pool name> |
Pool di agenti da usare per questo ambiente. |
APP_REGISTRATION_APP_ID | App registration application ID |
Obbligatorio se si distribuisce l'app Web. |
WEB_APP_CLIENT_edizione Standard CRET | App registration password |
Obbligatorio se si distribuisce l'app Web. |
SDAF_GENERAL_GROUP_ID | ID gruppo per il gruppo SDAF-General | L'ID può essere recuperato dal parametro variableGroupId URL quando si accede al gruppo di variabili usando un browser. Ad esempio: variableGroupId=8 . |
WORKLOADZONE_PIPELINE_ID | ID della SAP workload zone deployment pipeline |
L'ID può essere recuperato dal parametro definitionId URL dalla pagina della pipeline in Azure DevOps. Ad esempio: definitionId=31 . |
SYSTEM_PIPELINE_ID | ID della SAP system deployment (infrastructure) pipeline |
L'ID può essere recuperato dal parametro definitionId URL dalla pagina della pipeline in Azure DevOps. Ad esempio: definitionId=32 . |
Salvare le variabili.
Ricordarsi di assegnare autorizzazioni per tutte le pipeline usando le autorizzazioni della pipeline.
Quando si usa l'app Web, assicurarsi che il servizio di compilazione disponga almeno delle autorizzazioni Di collaborazione.
È possibile usare la funzionalità clone per creare il gruppo di variabili di ambiente successivo. APP_REGISTRATION_APP_ID, WEB_APP_CLIENT_edizione Standard CRET, SDAF_GENERAL_GROUP_ID, WORKLOADZONE_PIPELINE_ID e SYSTEM_PIPELINE_ID sono necessari solo per il gruppo SDAF-MGMT.
Creare una connessione al servizio
Per rimuovere le risorse di Azure, è necessaria una connessione al servizio Azure Resource Manager. Per altre informazioni, vedere Gestire le connessioni al servizio.
Per creare la connessione al servizio, passare a Project Impostazioni. Nella sezione Pipeline selezionare Connessioni al servizio.
Selezionare Azure Resource Manager come tipo di connessione del servizio e entità servizio (manuale) come metodo di autenticazione. Immettere la sottoscrizione di destinazione, che è in genere la sottoscrizione del piano di controllo. Immettere i dettagli dell'entità servizio. Selezionare Verifica per convalidare le credenziali. Per altre informazioni su come creare un'entità servizio, vedere Creare un'entità servizio.
Immettere un nome di connessione del servizio, ad esempio usare Connection to MGMT subscription
. Assicurarsi che sia selezionata la casella di controllo Concedi l'autorizzazione di accesso a tutte le pipeline. Selezionare Verifica e salva per salvare la connessione al servizio.
Autorizzazioni
La maggior parte delle pipeline aggiunge file ai repository di Azure e quindi richiede autorizzazioni pull. In Project Impostazioni, nella sezione Repository selezionare la scheda Sicurezza del repository del codice sorgente e assegnare autorizzazioni di collaborazione a Build Service
.
Distribuire il piano di controllo
Le pipeline appena create potrebbero non essere visibili nella visualizzazione predefinita. Selezionare la scheda Recenti e tornare a Tutte le schede per visualizzare le nuove pipeline.
Selezionare la pipeline di distribuzione del piano di controllo e immettere i nomi di configurazione per il deployer e la libreria SAP. Selezionare Esegui per distribuire il piano di controllo. Assicurarsi di selezionare la casella di controllo Distribuisci l'applicazione Web di configurazione se si vuole configurare l'app Web di configurazione.
Configurare manualmente l'agente self-hosted di Azure DevOps Services
La configurazione manuale è necessaria solo se l'agente di Azure DevOps Services non è configurato automaticamente. Verificare che il pool di agenti sia vuoto prima di procedere.
Per connettersi al deployer:
Accedere al portale di Azure.
Passare al gruppo di risorse che contiene la macchina virtuale deployer.
Connessione alla macchina virtuale usando Azure Bastion.
Il nome utente predefinito è azureadm.
Selezionare Chiave privata SSH da Azure Key Vault.
Selezionare la sottoscrizione che contiene il piano di controllo.
Selezionare l'insieme di credenziali delle chiavi del deployer.
Nell'elenco dei segreti selezionare il segreto che termina con -sshkey.
Connettersi alla macchina virtuale.
Eseguire lo script seguente per configurare il deployer:
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
Riavviare il deployer, riconnettersi ed eseguire lo script seguente per configurare l'agente Azure DevOps:
cd ~/Azure_SAP_Automated_Deployment/
$DEPLOYMENT_REPO_PATH/deploy/scripts/setup_ado.sh
Accettare la licenza e, quando viene richiesto l'URL del server, immettere l'URL acquisito al momento della creazione del progetto Azure DevOps. Per l'autenticazione selezionare PAT e immettere il valore del token nel passaggio precedente.
Quando richiesto, immettere il nome del pool di applicazioni creato nel passaggio precedente. Accettare il nome predefinito dell'agente e il nome predefinito della cartella di lavoro. L'agente è ora configurato e viene avviato.
Distribuire l'applicazione Web del piano di controllo
La selezione del deploy the web app infrastructure
parametro quando si esegue la pipeline di distribuzione del piano di controllo effettua il provisioning dell'infrastruttura necessaria per l'hosting dell'app Web. La pipeline Distribuisci app Web pubblica il software dell'applicazione in tale infrastruttura.
Attendere il completamento della distribuzione. Selezionare la scheda Estensioni e seguire le istruzioni per finalizzare la configurazione. Aggiornare i reply-url
valori per la registrazione dell'app.
In seguito all'esecuzione della pipeline del piano di controllo, parte dell'URL dell'app Web necessaria viene archiviata in una variabile denominata WEBAPP_URL_BASE
nel gruppo di variabili specifico dell'ambiente. In qualsiasi momento, è possibile aggiornare gli URL dell'app Web dell'applicazione registrata usando il comando seguente.
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
È anche necessario concedere le autorizzazioni di lettura all'identità gestita assegnata dal sistema del servizio app. Passare alla risorsa del servizio app. Sul lato sinistro selezionare Identità. Nella scheda Assegnata dal sistema selezionare Assegnazioni>di ruolo di Azure Aggiungi assegnazione di ruolo. Selezionare Sottoscrizione come ambito e lettore come ruolo. Quindi selezionare Salva. Senza questo passaggio, la funzionalità dell'elenco a discesa dell'app Web non funzionerà.
È ora possibile visitare l'app Web e usarla per distribuire le zone del carico di lavoro SAP e l'infrastruttura di sistema SAP.