Condividi tramite


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.

Screenshot that shows how to clone the 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.

Screenshot that shows that source code is changed.

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.

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

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

  1. 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.

  2. Accedere con l'account utente che si prevede di usare nell'organizzazione Azure DevOps .

  3. Nella home page aprire le impostazioni utente e selezionare Token di accesso personali.

    Diagram that shows the creation of a personal access token.

  4. 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.

    Diagram that shows the attributes of the personal access token.

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.

Screenshot that shows how to create a service connection.

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.

Screenshot that shows repository permissions.

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:

  1. Accedere al portale di Azure.

  2. Passare al gruppo di risorse che contiene la macchina virtuale deployer.

  3. Connessione alla macchina virtuale usando Azure Bastion.

  4. Il nome utente predefinito è azureadm.

  5. Selezionare Chiave privata SSH da Azure Key Vault.

  6. Selezionare la sottoscrizione che contiene il piano di controllo.

  7. Selezionare l'insieme di credenziali delle chiavi del deployer.

  8. Nell'elenco dei segreti selezionare il segreto che termina con -sshkey.

  9. 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.

Passaggio successivo