Déployer sur Azure Stack Hub App Service à l’aide d’Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Cet article vous guide tout au long de la configuration d’un pipeline CI/CD pour le déploiement d’une application sur des services d’application dans une instance Azure Stack Hub à l’aide d’Azure Pipelines.

Dans cet article, vous pouvez apprendre à créer ou à valider :

  • Informations d’identification du principal de service (SPN) Azure Stack Hub pour le pipeline.
  • Une application web dans votre instance Azure Stack Hub.
  • Une connexion de service à votre instance Azure Stack Hub.
  • Un référentiel avec votre code d’application à déployer sur votre application

Prérequis

Créer ou valider votre SPN

Un principal du service (SPN) fournit des informations d’identification basées sur les rôles afin que les processus hors Azure puissent se connecter aux ressources et interagir avec elles. Vous allez avoir besoin d’un SPN doté d’un accès contributeur et des attributs spécifiés dans ces instructions à utiliser avec votre pipeline Azure DevOps.

En tant qu’utilisateur d’Azure Stack Hub, vous n’êtes pas autorisé à créer le SPN. Vous devrez demander ce principal à votre opérateur cloud. Les instructions sont fournies ici pour vous permettre de créer le SPN si vous êtes opérateur cloud, ou bien vous pouvez valider le SPN si vous êtes développeur en utilisant un SPN inclus dans votre workflow fourni par un opérateur cloud.

L’opérateur cloud doit créer le SPN avec Azure CLI.

Les extraits de code suivants sont écrits pour une machine Windows en utilisant l’invite PowerShell avec Azure CLI pour Azure Stack Hub. Si vous utilisez l’interface de ligne de commande sur une machine Linux et bash, supprimez la rallonge de ligne ou remplacez-la par le signe \.

  1. Préparez les valeurs des paramètres suivants utilisés pour créer le SPN :

    Paramètre Exemple Description
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Point de terminaison de gestion des ressources.
    suffix-storage-endpoint « orlando.azurestack.corp.microsoft.com » Suffixe de point de terminaison pour les comptes de stockage.
    suffix-keyvault-dns « .vault.orlando.azurestack.corp.microsoft.com » Suffixe DNS du service Key Vault.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" L’ID de ressource Active Directory.
    endpoint-sql-management https://notsupported Point de terminaison de gestion SQL Server. À définir avec la valeur https://notsupported
    profile 2019-03-01-hybrid Profil à utiliser pour ce cloud.
  2. Ouvrez votre outil en ligne de commande, comme Windows PowerShell ou Bash et connectez-vous. Utilisez la commande suivante :

    az login
    
  3. Utilisez la commande register pour un nouvel environnement ou la commande update si vous utilisez un environnement existant. Utilisez la commande suivante.

    az cloud register `
        -n "AzureStackUser" `
        --endpoint-resource-manager "https://management.<local>.<FQDN>" `
        --suffix-storage-endpoint ".<local>.<FQDN>" `
        --suffix-keyvault-dns ".vault.<local>.<FQDN>" `
        --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" `
        --endpoint-sql-management https://notsupported  `
        --profile 2019-03-01-hybrid
    
  4. Obtenez votre ID d’abonnement et le groupe de ressources que vous voulez utiliser pour le SPN.

  5. Créez le SPN avec la commande suivante à l’aide de l’ID d’abonnement et du groupe de ressources :

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    

    Si vous n’avez pas de privilège d’opérateur cloud, vous pouvez également vous connecter avec le SPN fourni par votre opérateur cloud. Vous aurez besoin de l’ID client, du secret et de votre ID de locataire. Avec ces valeurs, vous pouvez utiliser les commandes Azure CLI suivantes pour créer l’objet JSON qui contient les valeurs dont vous aurez besoin pour créer votre connexion de service.

    az login --service-principal -u "<client-id>" -p "<secret>" --tenant "<tenant-ID>" --allow-no-subscriptions
    az account show
    
  6. Vérifiez l’objet JSON obtenu. Vous allez utiliser l’objet JSON pour créer votre connexion de service. L’objet JSON doit avoir les attributs suivants :

    {
      "environmentName": "<Environment name>",
      "homeTenantId": "<Tenant ID for the SPN>",
      "id": "<Application ID for the SPN>",
      "isDefault": true,
      "managedByTenants": [],
      "name": "<Tenant name>",
      "state": "Enabled",
      "tenantId": "<Tenant ID for the SPN>",
      "user": {
        "name": "<User email address>",
        "type": "user"
      }
    }
    

Créer la cible de l'application web

  1. Connectez-vous au portail Azure Stack Hub.
  2. Sélectionnez Créer une ressource>Web + Mobile>Application web.
  3. Sélectionnez votre abonnement.
  4. Créez ou sélectionnez un Groupe de ressources.
  5. Tapez le Nom de votre application. Le nom de l’application s’affiche dans l’URL de votre application, par exemple, yourappname.appservice.<region>.<FQDN>.
  6. Sélectionnez la pile d’exécution pour votre application. Le runtime doit correspondre au code que vous prévoyez d’utiliser pour votre application web.
  7. Sélectionnez le Système d’exploitation (SE) qui hébergera votre runtime et votre application.
  8. Sélectionnez ou tapez la Région de votre instance Azure Stack Hub.
  9. Sélectionnez le plan en fonction de votre instance Azure Stack Hub, de la région et du système d’exploitation de l’application.
  10. Sélectionnez Vérifier + créer.
  11. Examinez votre application web. Sélectionnez Create (Créer).
  12. Sélectionnez Accéder à la ressource.
  13. Notez le nom de votre application. Vous allez ajouter le nom au document yml qui définit votre pipeline dans votre référentiel.

Créer une connexion de service

Créer une connexion de service. Vous aurez besoin des valeurs de votre SPN et du nom de votre abonnement Azure Stack Hub.

  1. Connectez-vous à votre organisation Azure DevOps puis accédez à votre projet.

  2. Sélectionnez Paramètres du projet, puis Connexions de service.

  3. Sélectionnez Connexions de service >Nouvelle connexion de service.

  4. Sélectionnez Azure Resource Manager, puis sélectionnez Suivant.

  5. Sélectionnez Principal de service (manuel).

  6. Sélectionnez Azure Stack dans Environnement.

  7. Remplissez le formulaire, puis sélectionnez Vérifier et enregistrer.

  8. Donnez un nom à votre connexion de service. (Vous aurez besoin du nom de la connexion de service pour créer votre pipeline yaml).

    Créer une connexion de service pour Azure Stack Hub

Créer votre référentiel et ajouter un pipeline

  1. Si vous n’avez pas ajouté votre code d’application web au référentiel, ajoutez-le maintenant.

  2. Ouvrez le référentiel. Sélectionnez le référentiel, puis sélectionnez Parcourir.

  3. Sélectionnez Pipelines

  4. Sélectionnez Nouveau pipeline.

  5. Sélectionnez Azure Repos Git.

  6. Sélectionnez votre dépôt.

  7. Sélectionnez Pipeline de démarrage.

  8. Revenez au référentiel et ouvrez le azure-pipelines.yml.

  9. Ajoutez le fichier yaml suivant :

    # Starter pipeline
    # Start with a minimal pipeline that you can customize to build and deploy your code.
    # Add steps that build, run tests, deploy, and more:
    # https://aka.ms/yaml
    trigger:
    - main
    variables:
      azureSubscription: '<your connection name>'
      VSTS_ARM_REST_IGNORE_SSL_ERRORS: true
    steps:
    - task: AzureWebApp@1
      displayName: Azure Web App Deploy
      inputs:
        azureSubscription: $(azureSubscription)
        appName: <your-app-name>
        package: '$(System.DefaultWorkingDirectory)'
    

    Notes

    Pour ignorer les erreurs SSL, définissez une variable nommée VSTS_ARM_REST_IGNORE_SSL_ERRORS sur la valeur true dans le pipeline de build ou de mise en production, comme dans cet exemple.

  10. Mettez à jour la valeur azureSubscription avec le nom de votre connexion de service.

  11. Mettez à jour le appName avec le nom de votre application. À présent, vous êtes prêt à effectuer le déploiement.

Remarques sur l’utilisation des tâches Azure avec Azure Stack Hub

Les tâches Azure suivantes sont validées avec Azure Stack Hub :

Étapes suivantes