Configuration des propriétés de déploiement pour un environnement cible

par Jason Lee

Cette rubrique explique comment configurer des propriétés spécifiques à l’environnement afin de déployer l’exemple de solution Contact Manager dans un environnement cible spécifique.

Cette rubrique fait partie d’une série de tutoriels basés sur les exigences de déploiement d’entreprise d’une société fictive nommée Fabrikam, Inc. Cette série de tutoriels utilise un exemple de solution, la solution Contact Manager , pour représenter une application web avec un niveau de complexité réaliste, y compris une application MVC 3 ASP.NET, un service Windows Communication Foundation (WCF) et un projet de base de données.

La méthode de déploiement au cœur de ces didacticiels est basée sur l’approche de fichier projet fractionné décrite dans Présentation du processus de génération, dans laquelle le processus de génération est contrôlé par deux fichiers projet : l’un contenant des instructions de génération qui s’appliquent à chaque environnement de destination et l’autre contenant des paramètres de build et de déploiement spécifiques à l’environnement. Au moment de la génération, le fichier projet spécifique à l’environnement est fusionné dans le fichier projet indépendant de l’environnement pour former un ensemble complet d’instructions de build.

Vue d’ensemble du processus

Le fichier projet que vous allez utiliser pour générer et déployer la solution Contact Manager est divisé en deux fichiers physiques :

  • Un qui contient des instructions et des paramètres de build universels (le fichier Publish.proj ).
  • Un qui contient des paramètres de build spécifiques à l’environnement (Env-Dev.proj, Env-Stage.proj, et ainsi de suite).

Au moment de la génération, le fichier projet approprié spécifique à l’environnement est fusionné dans le fichier Publish.proj universel pour former un ensemble complet d’instructions de génération. Vous pouvez configurer le déploiement dans des environnements de destination spécifiques en créant ou en personnalisant des fichiers projet spécifiques à l’environnement avec des paramètres qui décrivent votre propre scénario de déploiement.

Beaucoup de ces valeurs sont déterminées par la façon dont votre environnement de destination est configuré, en particulier si votre serveur web cible est configuré pour utiliser le service web Deployment Agent (l’agent distant) ou le gestionnaire Web Deploy. Pour plus d’informations sur ces approches et pour obtenir des conseils sur le choix de l’approche appropriée pour votre propre environnement, consultez Choisir la bonne approche pour le déploiement web.

Le scénario Contact Manager nécessite deux fichiers projet spécifiques à l’environnement :

  • Déploiement dans un environnement de test de développeur (Env-Dev.proj). L’environnement de test du développeur est configuré pour accepter les déploiements à distance à l’aide de l’agent distant, comme décrit dans Scénario : Configuration d’un environnement de test pour le déploiement web. Ce fichier doit fournir l’adresse du point de terminaison de l’agent distant ainsi que des paramètres spécifiques à l’emplacement, tels que les chaînes de connexion et les points de terminaison de service.
  • Déploiement dans un environnement intermédiaire (Env-Stage.proj). L’environnement intermédiaire est configuré pour accepter les déploiements à distance à l’aide du gestionnaire Web Deploy, comme décrit dans Scénario : Configuration d’un environnement intermédiaire pour le déploiement web. Ce fichier doit fournir l’adresse du point de terminaison web Deploy Handler ainsi que les paramètres spécifiques à l’emplacement, tels que les chaînes de connexion et les points de terminaison de service.

Il est important de noter que les paramètres que vous configurez dans le fichier projet spécifique à l’environnement n’affectent pas le contenu du package web lui-même. Au lieu de cela, ils contrôlent la façon dont le package est déployé et les valeurs de paramètres fournies lors de l’extraction du package. Vous importez manuellement le package web dans l’environnement de production, comme décrit dans Scénario : Configuration d’un environnement de production pour le déploiement web et Installation manuelle de packages web, peu importe les paramètres que vous avez utilisés dans le fichier projet spécifique à l’environnement lorsque vous avez généré le package. Le Gestionnaire des services Internet (IIS) vous invite à entrer toutes les valeurs paramétrables, telles que les chaînes de connexion et les points de terminaison de service, lorsque vous importez le package.

Pour déployer la solution Gestionnaire de contacts dans votre propre environnement cible, vous pouvez personnaliser ce fichier ou l’utiliser comme modèle et créer votre propre fichier.

Pour configurer les paramètres de déploiement spécifiques à l’environnement pour la solution Contact Manager

  1. Ouvrez la solution ContactManager-WCF dans Visual Studio 2010.

  2. Dans la fenêtre Explorateur de solutions, développez le dossier Publier, le dossier EnvConfig, puis double-cliquez sur Env-Dev.proj.

    Dans la fenêtre Explorateur de solutions, développez le dossier Publier, le dossier EnvConfig, puis double-cliquez sur Env-Dev.proj.

  3. Remplacez les valeurs de propriété dans le fichier Env-Dev.proj par les valeurs appropriées pour votre propre environnement de test.

    Notes

    Le tableau qui suit cette procédure fournit plus d’informations sur chacune de ces propriétés.

  4. Enregistrez votre travail, puis fermez le fichier Env-Dev.proj .

Choix des propriétés de déploiement appropriées

Ce tableau décrit l’objectif de chaque propriété dans l’exemple de fichier projet spécifique à l’environnement , Env-Dev.proj, et fournit des conseils sur les valeurs que vous devez fournir.

Nom de la propriété Détails
MSDeployComputerName Nom du serveur web de destination ou du point de terminaison de service. Si vous déployez sur le service d’agent distant sur le serveur web de destination, vous pouvez spécifier le nom de l’ordinateur cible (par exemple, TESTWEB1 ou TESTWEB1.fabrikam.net), ou spécifier le point de terminaison de l’agent distant (par exemple). http://TESTWEB1/MSDEPLOYAGENTSERVICE Le déploiement fonctionne de la même façon dans chaque cas. Si vous déployez sur le gestionnaire Web Deploy sur le serveur web de destination, vous devez spécifier le point de terminaison de service et inclure le nom du site web IIS en tant que paramètre de chaîne de requête (par exemple, https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite).
MSDeployAuth Méthode que Web Deploy doit utiliser pour s’authentifier sur l’ordinateur distant. Cette valeur doit être définie sur NTLM ou De base. En règle générale, vous allez utiliser NTLM si vous effectuez un déploiement sur le service d’agent distant et de base si vous effectuez un déploiement sur le gestionnaire Web Deploy. Si vous utilisez l’authentification de base, vous devez également spécifier le nom d’utilisateur et le mot de passe que l’outil de déploiement web IIS (Web Deploy) doit emprunter l’identité pour effectuer le déploiement. Dans cet exemple, ces valeurs sont fournies via les propriétés MSDeployUsername et MSDeployPassword . Si vous utilisez l’authentification NTLM, vous pouvez omettre ces propriétés ou les laisser vides.
MSDeployUsername Si vous utilisez l’authentification de base, Web Deploy utilisera ce compte sur l’ordinateur distant. Cela doit prendre la forme DOMAIN*username* (par exemple, FABRIKAM\matt). Cette valeur est utilisée uniquement si vous spécifiez l’authentification de base. Si vous utilisez l’authentification NTLM, la propriété peut être omise. Si une valeur est fournie, elle est ignorée.
MSDeployPassword Si vous utilisez l’authentification de base, Web Deploy utilisera ce mot de passe sur l’ordinateur distant. Il s’agit du mot de passe du compte d’utilisateur que vous avez spécifié dans la propriété MSDeployUsername . Cette valeur est utilisée uniquement si vous spécifiez l’authentification de base. Si vous utilisez l’authentification NTLM, la propriété peut être omise. Si une valeur est fournie, elle est ignorée.
ContactManagerIisPath Chemin IIS sur lequel vous souhaitez déployer l’application Contact Manager MVC. Il doit s’agir du chemin d’accès tel qu’il apparaît dans le Gestionnaire des services Internet, sous la forme [nom du site web IIS]/[nom de l’applicationweb]. N’oubliez pas que le site web IIS doit exister avant de déployer votre application. Par exemple, si vous avez créé un site web IIS nommé DemoSite, vous pouvez spécifier le chemin IIS de l’application MVC comme DemoSite/ContactManager.
ContactManagerServiceIisPath Chemin IIS sur lequel vous souhaitez déployer le service WCF Contact Manager. Par exemple, si vous avez créé un site web IIS nommé DemoSite, vous pouvez spécifier le chemin d’accès IIS pour le service WCF comme DemoSite/ContactManagerService.
ContactManagerTargetUrl URL à laquelle le service WCF est accessible. Cette opération prend la forme [URL racine du site web IIS]/[nom de l’application de service]/[point de terminaison de service]. Par exemple, si vous avez créé un site web IIS sur le port 85, l’URL prend la forme http://localhost:85/ContactManagerService/ContactService.svc. N’oubliez pas que l’application MVC et le service WCF sont déployés sur le même serveur. Par conséquent, cette URL n’est jamais accessible qu’à partir de l’ordinateur sur lequel elle est installée. Pour cette raison, il est préférable d’utiliser localhost ou l’adresse IP, plutôt que le nom de l’ordinateur ou un en-tête d’hôte, dans l’URL. Si vous utilisez le nom de l’ordinateur ou un en-tête d’hôte, le bouclage case activée fonctionnalité de sécurité dans IIS peut bloquer l’URL et renvoyer une erreur HTTP 401.1 - Non autorisé.
CmDatabaseConnectionString Chaîne de connexion pour le serveur de base de données. La chaîne de connexion détermine à la fois les informations d’identification que VSDBCMD utilisera pour contacter le serveur de base de données et créer la base de données, ainsi que les informations d’identification que le pool d’applications de serveur web utilisera pour contacter le serveur de base de données et interagir avec la base de données. Pour l’essentiel, vous avez deux choix ici. Vous pouvez spécifier Integrated Security=true, auquel cas le Authentification Windows intégré est utilisé : Source de données=TESTDB1;Sécurité intégrée=true Dans ce cas, la base de données est créée à l’aide des informations d’identification de l’utilisateur qui exécute l’exécutable VSDBCMD et l’application accède à la base de données à l’aide de l’identité du compte d’ordinateur serveur web. Vous pouvez également spécifier le nom d’utilisateur et le mot de passe d’un compte SQL Server. Dans ce cas, les informations d’identification SQL Server sont utilisées à la fois par VSDBCMD pour créer la base de données et par le pool d’applications pour interagir avec la base de données : Source de données=TESTDB1 ; Id d’utilisateur=ASqlUser; Password=Pa$$w 0rd Les procédures pas à pas de cette rubrique supposent que vous utiliserez des Authentification Windows intégrés.
CmTargetDatabase Nom que vous souhaitez donner à la base de données que vous allez créer sur le serveur de base de données. La valeur que vous fournissez ici est ajoutée à la commande VSDBCMD en tant que paramètre. Il est également utilisé pour générer une chaîne de connexion complète que le pool d’applications sur le serveur web peut utiliser pour interagir avec la base de données.

Ces exemples montrent comment configurer ces propriétés pour des scénarios de déploiement spécifiques.

Exemple 1 : déploiement vers le service d’agent distant

Dans cet exemple :

  • Vous déployez sur le service d’agent distant sur TESTWEB1.
  • Vous demandez à Web Deploy d’utiliser l’authentification NTLM. Web Deploy s’exécute à l’aide des informations d’identification que vous avez utilisées pour appeler le Microsoft Build Engine (MSBuild).
  • Vous utilisez l’authentification intégrée pour déployer la base de données ContactManager sur TESTDB1. La base de données sera déployée à l’aide des informations d’identification que vous avez utilisées pour appeler MSBuild.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>    
    <MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
      TESTWEB1.fabrikam.net
    </MSDeployComputerName>
    <MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">NTLM</MSDeployAuth>
    <ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
      http://localhost:85/ContactManagerService/ContactService.svc
    </ContactManagerTargetUrl>
    <ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
      DemoSite/ContactManager
    </ContactManagerIisPath>
    <ContactManagerServiceIisPath 
      Condition=" '$(ContactManagerServiceIisPath)'=='' ">
        DemoSite/ContactManagerService
    </ContactManagerServiceIisPath>
    <CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
      Data Source=TESTDB1;Integrated Security=true</CmDatabaseConnectionString>
    <CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
      ContactManager
    </CmTargetDatabase>
  </PropertyGroup>  
</Project>

Exemple 2 : Déploiement sur le point de terminaison du gestionnaire Web Deploy

Dans cet exemple :

  • Vous déployez sur le point de terminaison de service Web Deploy Handler sur STAGEWEB1.
  • Vous demandez à Web Deploy d’utiliser l’authentification de base.
  • Vous spécifiez que Web Deploy doit emprunter l’identité du compte FABRIKAM\stagingdeployer sur l’ordinateur distant.
  • Vous utilisez l’authentification SQL Server pour déployer la base de données ContactManager sur STAGEDB1.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>    
    <MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
      https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite
    </MSDeployComputerName>
    <MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">Basic</MSDeployAuth>
    <MSDeployUsername Condition=" '$(MSDeployUsername)'=='' ">
      FABRIKAM\stagingdeployer
    </MSDeployUsername>
    <MSDeployPassword Condition=" '$(MSDeployPassword)'=='' ">
      Pa$$w0rd
    </MSDeployPassword>
    <ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
      http://localhost:85/ContactManagerService/ContactService.svc
    </ContactManagerTargetUrl>
    <ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
      DemoSite/ContactManager
    </ContactManagerIisPath>
    <ContactManagerServiceIisPath 
      Condition=" '$(ContactManagerServiceIisPath)'=='' ">
        DemoSite/ContactManagerService
    </ContactManagerServiceIisPath>
    <CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
      Data Source=STAGEDB1;User ID=sa;'$($CREDENTIAL_PLACEHOLDER$)'
    </CmDatabaseConnectionString>
    <CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
      ContactManager
    </CmTargetDatabase>
  </PropertyGroup>  
</Project>

Conclusion

À ce stade, vos fichiers projet sont entièrement configurés pour générer et déployer la solution Contact Manager dans un ou plusieurs environnements de destination.

Pour utiliser ces fichiers projet dans le cadre d’un processus de déploiement reproductible en une seule étape, vous devez exécuter le fichier Publish.proj à l’aide de MSBuild et passer l’emplacement du fichier projet spécifique à l’environnement en tant que paramètre. Vous pouvez effectuer cette opération de différentes manières :