Partage via


Bien démarrer avec l’infrastructure d’automatisation de déploiement SAP

Découvrez comment prendre rapidement en main l’infrastructure d’automatisation de déploiement SAP.

Prérequis

Pour bien démarrer avec l’infrastructure d’automatisation de déploiement SAP, vous avez besoin de ce qui suit :

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, vous pouvez créer un compte gratuit.
  • Un compte d’utilisateur SAP disposant des autorisations nécessaires pour télécharger le logiciel SAP dans votre environnement Azure. Pour plus d’informations sur S-User, consultez SAP S-User.
  • Une installation Azure CLI.
  • Une identité affectée par l’utilisateur (MS) ou un principal de service à utiliser pour le déploiement du plan de contrôle.
  • Une identité affectée par l’utilisateur (MS) ou un principal de service à utiliser pour le déploiement de zone de charge de travail.
  • La capacité à créer un projet Azure DevOps si vous souhaitez utiliser Azure DevOps pour le déploiement.

Certains des prérequis sont peut-être déjà installés dans votre environnement de déploiement. Terraform et Azure CLI sont déjà installés sur Azure Cloud Shell et sur le déployeur.

Créer une identité affectée par l’utilisateur

L’infrastructure d’automatisation de déploiement SAP peut également utiliser une identité affectée par l’utilisateur (MSI) pour le déploiement. Veillez à utiliser un compte autorisé à créer des identités managées lors de l’exécution du script qui crée l’identité.

  1. Créer l’identité managée.

    export    ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export control_plane_env_code="LAB"
    
    az identity create --name ${control_plane_env_code}-Deployment-Identity --resource-group <ExistingResourceGroup>
    

    Passez en revue la sortie. Par exemple :

       {
         "clientId": "<appId>",
         "id": "<armId>",
         "location": "<location>",
         "name": "${control_plane_env_code}-Deployment-Identity",
         "principalId": "<objectId>",
         "resourceGroup": "<ExistingResourceGroup>",
         "systemData": null,
         "tags": {},
         "tenantId": "<TenantId>",
         "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
       }
    
  2. Copiez les détails de sortie.

    La sortie est mappée aux paramètres suivants. Vous utilisez ces paramètres dans les étapes ultérieures, avec des commandes d’automatisation.

    Nom d’entrée du paramètre Nom de sortie
    app_id appId
    msi_id armId
    msi_objectid objectId
  3. Attribuez le rôle Contributeur à l’identité.

    export appId="<appId>"
    
    az role assignment create --assignee $msi_objectid  --role "Contributor"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    
  4. Vous pouvez également attribuer le rôle Administrateur de l’accès utilisateur à l’identité, si vous le souhaitez.

    export appId="<appId>"
    
    az role assignment create --assignee $msi_objectid --role "User Access Administrator"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    

Important

Si vous n’attribuez pas le rôle Administrateur de l’accès utilisateur au principal de service, vous ne pouvez pas attribuer d’autorisations à l’aide de l’automatisation.

Créer une inscription d’application pour l’application web

L’infrastructure d’automatisation de déploiement SAP peut tirer profit d’une Azure App Service pour configurer des fichiers de paramètre tfvars.

  1. Créez l’inscription d’application.

       $ApplicationName="<App Registration Name>"
       $MSI_objectId="<msi_objectid>"
    
        Write-Host "Creating an App Registration for" $ApplicationName -ForegroundColor Green
    
        if (Test-Path $manifestPath) { Write-Host "Removing manifest.json" ; Remove-Item $manifestPath }
        Add-Content -Path manifest.json -Value '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]'
    
        $APP_REGISTRATION_ID = $(az ad app create --display-name $ApplicationName --enable-id-token-issuance true --sign-in-audience AzureADMyOrg --required-resource-access $manifestPath --query "appId" --output tsv)
    
        Write-Host "App Registration created with App ID: $APP_REGISTRATION_ID"
    
        Write-Host "Waiting for the App Registration to be created" -ForegroundColor Green
        Start-Sleep -s 20
    
        $ExistingData = $(az ad app list --all --filter "startswith(displayName, '$ApplicationName')" --query  "[?displayName=='$ApplicationName']| [0]" --only-show-errors) | ConvertFrom-Json
    
        $APP_REGISTRATION_OBJECTID = $ExistingData.id
    
        if (Test-Path $manifestPath) { Write-Host "Removing manifest.json" ; Remove-Item $manifestPath }
    
        Write-Host "Configuring authentication for the App Registration" -ForegroundColor Green
        az rest --method POST --uri "https://graph.microsoft.com/beta/applications/$APP_REGISTRATION_OBJECTID/federatedIdentityCredentials\" --body "{'name': 'ManagedIdentityFederation', 'issuer': 'https://login.microsoftonline.com/$ARM_TENANT_ID/v2.0', 'subject': '$MSI_objectId', 'audiences': [ 'api://AzureADTokenExchange' ]}"
    
        $API_URL="https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/ProtectAnAPI/appId/$APP_REGISTRATION_ID/isMSAApp~/false"
    
        Write-Host "The browser will now open, Please Add a new scope, by clicking the '+ Add a new scope link', accept the default name and click 'Save and Continue'"
        Write-Host "In the Add a scope page enter the scope name 'user_impersonation'. Choose 'Admins and Users' in the who can consent section, next provide the Admin consent display name 'Access the SDAF web application' and 'Use SDAF' as the Admin consent description, accept the changes by clicking the 'Add scope' button"
    
        Start-Process $API_URL
        Read-Host -Prompt "Once you have created and validated the scope, Press any key to continue"
    
    
    

Créer un principal du service

L’infrastructure d’automatisation de déploiement SAP utilise des principaux de service pour le déploiement.

Lorsque vous choisissez le nom de votre principal de service, assurez-vous que le nom est unique au sein de votre locataire Azure. Veillez à utiliser un compte autorisé à créer des principaux de service lors de l’exécution du script.

  1. Créez le principal de service avec des autorisations Contributeur.

    export    ARM_SUBSCRIPTION_ID="<subscriptionId>"
    export control_plane_env_code="LAB"
    
    az ad sp create-for-rbac --role="Contributor"  --scopes="/subscriptions/$ARM_SUBSCRIPTION_ID"   --name="$control_plane_env_code-Deployment-Account"
    

    Passez en revue la sortie. Par exemple :

    {
        "appId": "<AppId>",
        "displayName": "<environment>-Deployment-Account ",
        "name": "<AppId>",
        "password": "<AppSecret>",
        "tenant": "<TenantId>"
    }
    
  2. Copiez les détails de sortie. Assurez-vous d’enregistrer les valeurs pour appId, password et Tenant.

    La sortie est mappée aux paramètres suivants. Vous utilisez ces paramètres dans les étapes ultérieures, avec des commandes d’automatisation.

    Nom d’entrée du paramètre Nom de sortie
    spn_id appId
    spn_secret password
    tenant_id tenant
  3. (Facultatif) Attribuez le rôle Administrateur de l’accès utilisateur à votre principal de service.

    export appId="<appId>"
    
    az role assignment create --assignee $appId --role "User Access Administrator"  --scope /subscriptions/$ARM_SUBSCRIPTION_ID
    

Important

Si vous n’attribuez pas le rôle Administrateur de l’accès utilisateur au principal de service, vous ne pouvez pas attribuer d’autorisations à l’aide de l’infrastructure d’automatisation.

Vérifications avant vol

Vous pouvez utiliser le script suivant pour effectuer des vérifications préalables. Le script effectue les vérifications et tests suivants :

  • Vérifie si le principal de service dispose des autorisations appropriées pour créer des ressources dans l’abonnement.
  • Vérifie si le principal de service dispose d’autorisations d’administrateur d’accès utilisateur.
  • Créez un réseau virtuel Azure.
  • Créez un coffre de clés virtuel Azure avec un point de terminaison privé.
  • Créez un partage NSF Azure Files.
  • Créez une machine virtuelle Azure avec un disque de données en utilisant Stockage Premium v2.
  • Vérifiez l’accès aux URL requises à l’aide de la machine virtuelle déployée.

$sdaf_path = Get-Location
if ( $PSVersionTable.Platform -eq "Unix") {
    if ( -Not (Test-Path "SDAF") ) {
      $sdaf_path = New-Item -Path "SDAF" -Type Directory
    }
}
else {
    $sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
    if ( -not (Test-Path $sdaf_path)) {
        New-Item -Path $sdaf_path -Type Directory
    }
}

Set-Location -Path $sdaf_path

git clone https://github.com/Azure/sap-automation.git 

cd sap-automation
cd deploy
cd scripts

if ( $PSVersionTable.Platform -eq "Unix") {
./Test-SDAFReadiness.ps1
}
else {
.\Test-SDAFReadiness.ps1
}

Utiliser l’Infrastructure d’automatisation du déploiement SAP à partir d’Azure DevOps Services

L’utilisation d’Azure DevOps simplifie le processus de déploiement. Azure DevOps fournit des pipelines que vous pouvez exécuter pour effectuer le déploiement de l’infrastructure ainsi que les activités de configuration et d’installation de SAP.

Vous pouvez utiliser Azure Repos pour stocker vos fichiers de configuration. Azure Pipelines fournit des pipelines qui peuvent être utilisés pour déployer et configurer l’infrastructure et l’application SAP.

S’inscrire à Azure DevOps Services

Pour utiliser Azure DevOps Services, vous avez besoin d’une organisation Azure DevOps. Une organisation permet de connecter des groupes de projets connexes. Utilisez votre compte professionnel ou scolaire pour connecter automatiquement votre organisation à votre annuaire Microsoft Entra ID. Pour créer un compte, ouvrez Azure DevOps et connectez-vous ou créez un nouveau compte.

Créer l’environnement d’infrastructure d’automatisation de déploiement SAP avec Azure DevOps

Vous pouvez utiliser le script suivant pour effectuer une installation de base d’Azure DevOps Services pour l’infrastructure d’automatisation de déploiement SAP.

Ouvrez PowerShell ISE et copiez le script suivant et mettez à jour les paramètres pour qu’ils correspondent à votre environnement.

    $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_WORKLOAD_ZONE_CODE = "DEV"
    $Env:SDAF_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    $Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    $Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"

    $UniqueIdentifier = Read-Host "Please provide an identifier that makes the service principal names unique, for instance a project code"

    $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 = $UniqueIdentifier + " SDAF Control Plane"
    }

    else {
      $Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
    }

    $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 = $UniqueIdentifier + " SDAF " + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
    }
        else {
      $Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane Service Principal Name"
    }

    $confirmation = Read-Host "Do you want to create a new Service Principal for the Workload zone y/n?"
    if ($confirmation -eq 'y') {
        $Env:SDAF_WorkloadZone_SPN_NAME = $UniqueIdentifier + " SDAF " + $Env:SDAF_WORKLOAD_ZONE_CODE + " SPN"
    }
        else {
      $Env:SDAF_WorkloadZone_SPN_NAME = Read-Host "Please provide the Workload Zone 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") {
        remove-item .\New-SDAFDevopsProject.ps1
    }

    Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile .\New-SDAFDevopsProject.ps1 ; .\New-SDAFDevopsProject.ps1

Exécutez le script et suivez les instructions. Le script ouvre des fenêtres de navigateur pour l’authentification et l’exécution de tâches dans le projet Azure DevOps.

Vous pouvez choisir d’exécuter le code directement à partir de GitHub ou d’importer une copie du code dans votre projet Azure DevOps.

Pour vérifier que le projet a été créé, accédez au portail Azure DevOps et sélectionnez le projet. Vérifiez que le référentiel a été rempli et que les pipelines ont été créés.

Important

Effectuez les étapes suivantes sur votre station de travail locale. Vérifiez également que vous disposez de la dernière version d’Azure CLI en exécutant la commande az upgrade.

Pour plus d’informations sur la configuration d’Azure DevOps pour l’infrastructure d’automatisation de déploiement SAP, consultez Configurer Azure DevOps pour l’infrastructure d’automatisation de déploiement SAP.

Créer l’environnement d’infrastructure d’automatisation de déploiement SAP sans Azure DevOps

Vous pouvez exécuter l’infrastructure d’automatisation de déploiement SAP à partir d’une machine virtuelle dans Azure. Les étapes suivantes décrivent comment créer l’environnement.

Important

Vérifiez que la machine virtuelle utilise une identité affectée par le système ou affectée par l’utilisateur avec des autorisations nécessaires sur l’abonnement pour créer des ressources.

Vérifiez que les prérequis suivants sont installés sur la machine virtuelle :

  • git
  • jq
  • unzip
  • virtualenv (en cas d’exécution sur Ubuntu)

Vous pouvez installer les prérequis sur une machine virtuelle Ubuntu à l’aide de la commande suivante :

sudo apt-get install -y git jq unzip virtualenv

Vous pouvez ensuite installer les composants du déployeur à l’aide des commandes suivantes :


wget https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/configure_deployer.sh -O configure_deployer.sh
chmod +x ./configure_deployer.sh
./configure_deployer.sh

# Source the new variables

. /etc/profile.d/deploy_server.sh

Exemples

Le dossier ~/Azure_SAP_Automated_Deployment/samples contient un ensemble d’exemples de fichiers de configuration pour commencer à tester l’infrastructure d’automatisation du déploiement. Vous pouvez les copier à l’aide des commandes suivantes :

cd ~/Azure_SAP_Automated_Deployment

cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment

Étape suivante