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
- Accès à l’instance Azure Stack Hub avec le App Service RP activé.
- Solution Azure DevOps associée à votre locataire Azure Stack Hub.
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 \
.
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. Ouvrez votre outil en ligne de commande, comme Windows PowerShell ou Bash et connectez-vous. Utilisez la commande suivante :
az login
Utilisez la commande
register
pour un nouvel environnement ou la commandeupdate
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
Obtenez votre ID d’abonnement et le groupe de ressources que vous voulez utiliser pour le SPN.
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
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
- Connectez-vous au portail Azure Stack Hub.
- Sélectionnez Créer une ressource>Web + Mobile>Application web.
- Sélectionnez votre abonnement.
- Créez ou sélectionnez un Groupe de ressources.
- 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>
. - 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.
- Sélectionnez le Système d’exploitation (SE) qui hébergera votre runtime et votre application.
- Sélectionnez ou tapez la Région de votre instance Azure Stack Hub.
- 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.
- Sélectionnez Vérifier + créer.
- Examinez votre application web. Sélectionnez Create (Créer).
- Sélectionnez Accéder à la ressource.
- 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.
Connectez-vous à votre organisation Azure DevOps puis accédez à votre projet.
Sélectionnez Paramètres du projet, puis Connexions de service.
Sélectionnez Connexions de service >Nouvelle connexion de service.
Sélectionnez Azure Resource Manager, puis sélectionnez Suivant.
Sélectionnez Principal de service (manuel).
Sélectionnez Azure Stack dans Environnement.
Remplissez le formulaire, puis sélectionnez Vérifier et enregistrer.
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 votre référentiel et ajouter un pipeline
Si vous n’avez pas ajouté votre code d’application web au référentiel, ajoutez-le maintenant.
Ouvrez le référentiel. Sélectionnez le référentiel, puis sélectionnez Parcourir.
Sélectionnez Pipelines
Sélectionnez Nouveau pipeline.
Sélectionnez Azure Repos Git.
Sélectionnez votre dépôt.
Sélectionnez Pipeline de démarrage.
Revenez au référentiel et ouvrez le
azure-pipelines.yml
.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 valeurtrue
dans le pipeline de build ou de mise en production, comme dans cet exemple.Mettez à jour la valeur
azureSubscription
avec le nom de votre connexion de service.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 :
- Azure PowerShell
- Copie des fichiers Azure
- Déploiement du groupe de ressources Azure
- Déploiement Azure App Service
- Gestion d'Azure App Service
- Déploiement de base de données Azure SQL