Tutoriel : Créer un Azure Database pour PostgreSQL - Instance de serveur flexible avec App Services Web App App dans un réseau virtuel

S’APPLIQUE À : Azure Database pour PostgreSQL – Serveur flexible

Ce tutoriel vous montre comment créer une application web Azure App Service avec Azure Database pour PostgreSQL serveur flexible à l’intérieur d’un réseau virtuel.

Ce didacticiel vous apprendra à effectuer les opérations suivantes :

  • Créer une instance de serveur flexible Azure Database pour PostgreSQL dans un réseau virtuel
  • Créer une application web
  • Ajouter l'application web au réseau virtuel
  • Connecter à Azure Database pour PostgreSQL serveur flexible à partir de l’application web

Prérequis

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

  • Installez Azure CLI. version 2.0 ou ultérieure localement. Pour afficher la version installée, exécutez la commande az --version.

  • Connectez-vous à votre compte à l’aide de la commande az login. Notez la propriété id depuis la sortie de commande pour le nom d’abonnement correspondant.

    az login
    
  • Si vous avez plusieurs abonnements, sélectionnez l’abonnement approprié dans lequel la ressource doit être facturée. Sélectionnez l’ID d’abonnement spécifique sous votre compte à l’aide de la commande az account set.

    az account set --subscription <subscription ID>
    

Créer une instance de serveur flexible Azure Database pour PostgreSQL dans un nouveau réseau virtuel

Créez une instance de serveur flexible Azure Database pour PostgreSQL privée à l’intérieur d’un réseau virtuel (VNET) à l’aide de la commande suivante :

az postgres flexible-server create --resource-group demoresourcegroup --name demoserverpostgres --vnet demoappvnet --location westus2

Cette commande effectue les actions suivantes qui peuvent prendre quelques minutes :

  • S’il n’existe pas encore, créez le groupe de ressources
  • Génère un nom de serveur s’il n’est pas fourni.
  • Créez un réseau virtuel pour votre nouvelle instance de serveur flexible et votre sous-réseau Azure Database pour PostgreSQL dans ce réseau virtuel pour l’instance de serveur flexible Azure Database pour PostgreSQL.
  • Crée un nom d'utilisateur administrateur et un mot de passe pour votre serveur, s'il n'est pas fourni.
  • Crée une base de données vide appelée postgres

Voici l’exemple de sortie.

Local context is turned on. Its information is saved in working directory /home/jane. You can run `az local-context off` to turn it off.
Command argument values from local context: --resource-group demoresourcegroup, --location: eastus
Checking the existence of the resource group ''...
Creating Resource group 'demoresourcegroup ' ...
Creating new vnet "demoappvnet" in resource group "demoresourcegroup" ...
Creating new subnet "Subnet095447391" in resource group "demoresourcegroup " and delegating it to "Microsoft.DBforPostgreSQL/flexibleServers"...
Creating Azure Database for PostgreSQL flexible server instance 'demoserverpostgres' in group 'demoresourcegroup'...
Your server 'demoserverpostgres' is using sku 'Standard_D2s_v3' (Paid Tier). Please refer to https://aka.ms/postgres-pricing for pricing details
Make a note of your password. If you forget, you have to reset your password with 'az postgres flexible-server update -n demoserverpostgres --resource-group demoresourcegroup -p <new-password>'.
{
  "connectionString": "postgresql://generated-username:generated-password@demoserverpostgres.postgres.database.azure.com/postgres?sslmode=require",
  "host": "demoserverpostgres.postgres.database.azure.com",
  "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/demoserverpostgres",
  "location": "East US",
  "password": "generated-password",
  "resourceGroup": "demoresourcegroup",
  "skuname": "Standard_D2s_v3",
  "subnetId": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.Network/virtualNetworks/VNET095447391/subnets/Subnet095447391",
  "username": "generated-username",
  "version": "12"
}

Créer une application web

Dans cette section, vous allez créer un hôte d’application dans l’application App Service, connecter cette application à la base de données de serveur flexible Azure Database pour PostgreSQL, puis déployer votre code sur cet hôte. Vérifiez que vous êtes à la racine du référentiel de votre code d'application dans le terminal. Remarque : Le plan De base ne prend pas en charge l’intégration au réseau virtuel. Utilisez le niveau Standard ou Premium.

Créez une application App Service (processus hôte) avec la commande az webapp up.

az webapp up --resource-group demoresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp

Notes

  • Pour l’argument --location, utilisez le même emplacement que pour la base de données de la section précédente.
  • Remplacez <app-name> par un nom unique dans l’ensemble d’Azure. Les caractères autorisés pour <app-name> sont A-Z, 0-9 et -. Un bon modèle consiste à utiliser une combinaison du nom de votre société et d’un identificateur d’application.

Cette commande effectue les actions suivantes qui peuvent prendre quelques minutes :

  • S’il n’existe pas encore, créez le groupe de ressources (dans cette commande, vous utilisez le groupe de ressources dans lequel vous avez créé la base de données précédemment).
  • Si elle n’existe pas, créez l’application App Service.
  • Activez la journalisation par défaut pour l’application, si elle ne l’est pas déjà.
  • Chargez le dépôt à l’aide du déploiement ZIP avec l’automatisation de la génération activée.

Créer un sous-réseau pour une application web

Avant d’activer l’intégration au réseau virtuel, vous devez disposer d’un sous-réseau délégué à l’application Web App Service. Avant de créer le sous-réseau, affichez l’adresse du sous-réseau de base de données pour éviter d’utiliser le même préfixe d’adresse pour le sous-réseau d’application Web.

az network vnet show --resource-group demoresourcegroup -n demoappvnet

Exécutez la commande suivante pour créer un sous-réseau dans le même réseau virtuel que l’instance de serveur flexible Azure Database pour PostgreSQL a été créée. Mettez à jour le préfixe d’adresse pour éviter les conflits avec le sous-réseau de serveur flexible Azure Database pour PostgreSQL.

az network vnet subnet create --resource-group demoresourcegroup --vnet-name demoappvnet --name webappsubnet  --address-prefixes 10.0.1.0/24  --delegations Microsoft.Web/serverFarms

Ajouter l'application web au réseau virtuel

Utilisez la commande az webapp vnet-integration pour ajouter une intégration de réseau virtuel régional à une application web.

az webapp vnet-integration add --resource-group demoresourcegroup -n  mywebapp --vnet demoappvnet --subnet webappsubnet

Configurer des variables d’environnement pour connecter la base de données

Avec le code maintenant déployé sur App Service, l’étape suivante consiste à connecter l’application à l’instance de serveur flexible Azure Database pour PostgreSQL dans Azure. Le code de l’application s’attend à trouver des informations sur la base de données dans plusieurs variables d’environnement. Pour définir des variables d’environnement dans App Service, utilisez az webapp config appsettings set.

  
az webapp config appsettings set  --name mywebapp --settings DBHOST="<postgres-server-name>.postgres.database.azure.com" DBNAME="postgres" DBUSER="<username>" DBPASS="<password>" 
  • Remplacez postgres-server-name, username, password for the nouvellement créé Azure Database pour PostgreSQL flexible server instance command.
  • Remplacez <username> et <password> par les informations d’identification que la commande a également générées pour vous.
  • Les noms du groupe de ressources et de l’application sont tirés des valeurs mises en cache dans le fichier .azure/config.
  • La commande crée les paramètres DBHOST, DBNAME, DBUSER* et DBPASS. Si votre code d’application utilise un nom différent pour les informations de base de données, utilisez ces noms pour les paramètres de l’application, comme indiqué dans le code.

Configurez l’application Web pour autoriser toutes les connexions sortantes à partir du réseau virtuel.

az webapp config set --name mywebapp --resource-group demoresourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'

Nettoyer les ressources

Supprimez toutes les ressources que vous avez créées dans le tutoriel à l'aide de la commande suivante. Cette commande supprime toutes les ressources de ce groupe de ressources.

az group delete -n demoresourcegroup

Étapes suivantes