Si vous souhaitez installer App-V sur un cluster SQL, vous ne pouvez pas utiliser l’assistant d’installation qui provisionne automatiquement la base de données SQL. De plus, quel DBA digne de ce nom vous laisserez accéder à ses serveurs de bases de données de production directement… 😉 !
Heureusement, il existe une solution pour provisionner la base de données du Management Server d’App-V via des fichiers de requêtes SQL.
Prérequis
Pour ce test, nous aurons 2 serveurs :
- 1 serveur App-V sur lequel nous allons intégrer les 2 composants : Management & Publishing Server qui seront donc sur 1 seul et même serveur.
- 1 serveur SQL Server 2008 R2 qui disposera du SP2 ainsi que des CU#9 (vous pouvez si vous le souhaitez utiliser une autre version de produit, cela ne changera à priori pas grand-chose pour la suite).
Mes deux serveurs sont sous Windows Server 2008 R2 SP1 et ils disposent tous les packages suivants installés (en plus des correctifs disponibles à date) :
- .NET Framework 3.5.1 (depuis Server Manager)
- VCRedist 2005 x86 + x64
- VCRedist 2008 x86 + x64
- VCRedist 2010 x86 + x64
- VCRedist 2012 x86 + x64
- VCRedsit 2013 x86 + x64
- Windows Management Framework 3.0 (KB2506143-x64.msu)
- .NET Framework 4.5.1 SP1 x86 + x64 (KB2858728.exe)
Vous n’êtes pas obligés d’installer tout ce petit monde bien sûr, mais je préfère tout mentionner pour ceux qui souhaiteraient reproduire ce tutorial sur l’un de leur LAB. 🙂
Je provisionne ensuite mon serveur SQL Server 2008 R2 SP2 CU9. Je ne rentre pas dans le détail car ce n’est pas l’objet de l’article. Il peut s’agir d’un serveur SQL standalone si vous effectuez simplement des tests ou de l’instance SQL sur votre cluster de serveurs 2008 R2. Libre à vous de le configurer selon vos besoins pour l’agent SQL, instance features, instance name, etc.
Provisionnement de la base de données App-V pour le Management Server
Personnellement, je vais utiliser App-V 5.0 SP1. Depuis les sources de l’éditeur, exécutez la commande suivante :
APPV_SERVER_SETUP.EXE /layout
Vous décompressez ainsi l’ensemble de l’exécutable dans le dossier courant. On remarque alors l’apparition d’un dossier DatabaseScripts. Ce dossier contient l’ensemble des requêtes SQL qui vont nous permettre de créer la base de données pour le Management Server d’App-V. Vous y trouverez également les fichiers pour créer le base de données ReportingServer (que je ne déploie pas dans le contexte de l’article).
Par défaut, les fichiers ne sont pas nommés comme dans la capture ci-dessous. Les noms sont identiques à la différence des valeurs chiffrées que j’ai ajouté en début de chaque fichier et qui représente l’ordre d’exécution des différentes requêtes SQL.
Avant d’aller plus loin, si vous le souhaitez, vous pouvez modifier le premier fichier SQL pour changer le nom de la base de données. Pour cet article, je conserverai le nom par défaut AppVManagement. 😉
Dans SQL Management Studio, connectez-vous sur l’instance SQL Server et cliquez sur New Query. Copiez-collez le premier contenu du premier fichier Database.sql et cliquez sur Execute.
La base de données est maintenant créée. Actualisez la fenêtre SQL Management Studio si la DB n’apparaît pas automatiquement.
Nous allons maintenant exécutez les autres requêtes des fichiers 1 à 4. Attention toutefois, veillez à ouvrir une fenêtre New Query SUR la base de données que vous avez créé précédemment. Le mieux pour ce faire est d’effectuer un clic droit sur le nom de la base de données AppVManagement et cliquez sur New Query. Si vous n’êtes pas vigilants sur ce point, par défaut, les requêtes risquent de ne pas être exécutée sur la bonne basse de données ! 🙁
Exécution de CreateTables.sql
Exécution de CreateStoredProcs.sql
Exécution de UpdateTables.sql
Exécution de InsertVersionInfo.sql
L’ensemble des tables de la base de données ont été créées. Il nous reste encore à configurer les droits d’accès à cette base de données. Cette opération est réalisée notamment dans le dernier fichier Permissions.sql.
Comme précédemment, vous pouvez copier-coller le contenu de Permissions.sql (ou directement double-cliquer sur le fichier pour l’ouvrir) dans SQL Management Studio.
Attention toutefois, avant d’exécuter ces requêtes, vous devrez cependant en modifier 2 lignes. Par défaut, nous avons ce qui suit :
Nous allons modifier les lignes 31 et 38 pour renseigner :
- Le compte ou groupe AD qui sera par défaut administrateur de App-V (et pourra donc accéder à la console SilverLight)
- Le compte de service associé au serveur sur lequel nous avons prévu d’installer le Management & Publishing Server
Dans chacun des cas, vous devez renseigner le compte AD en précisant le domaine ainsi que le SID associé. Pour récupérer le SID d’un compte ou groupe AD, vous pouvez utiliser PsGetSid ou plus simplement utiliser les 2 lignes PowerShell suivantes :
$Account="domain\account (New-Object system.security.principal.NtAccount($Account)). translate([system.security.principal.securityidentifier])
Dans mon cas, j’utiliserai un groupe AD pour référencer mes administrateurs App-V et disons que mon serveur App-V a pour hostname SQLAPPV. Notez également que lorsque vous récupérez les SID, vous devez supprimer tous les caractères spéciaux (trait d’union) ainsi que le S en début de chaîne.
Imaginons que cela nous donne donc (fictif) :
DOMAIN\appv 15212274062845749218571859176511162 DOMAIN\SQLAPPV$ 15212274062845749218571859176511159
Notez que nous ne conservons pas les crochets et n’oubliez pas le $ à la fin du compte pour le serveur App-V.
Exécutez la requête. Notre base de données App-V est maintenant configurée.
Il nous reste à configurer les droits du compte de service sur la base de données.
Toujours dans SQL Management Studio, dans le nœud correspondant à la base de données AppVManagement, puis Security. Effectuez un clic droit sur le compte de service associé à votre serveur App-V et cliquez sur Properties. Dans la section General, modifiez les privilèges comme suit :
En veillant bien à ce que le compte de service dispose des droits suivants :
- Appv_db_executor
- Db_datareader
- Db_datawriter
A adapter en fonction de vos besoins et de votre infra bien sûr. 🙂
Cliquez sur OK pour valider les changements. Nous avons terminé la création et la configuration de notre base de données App-V. Nous passons maintenant à l’installation des composants App-V sur notre second serveur.
Installation Management & Publishing Server
Avant d’installer App-V Server, nous allons installer les prérequis propres App-V.
Installez les composants suivants depuis le Server Manager :
- Common HTTP Features (static content and default document),
- Application Development (ASP.NET, .NET Extensibility, ISAPI Extensions and ISAPI Filters),
- Security (Windows Authentication, Request Filtering),
- Management Tools (IIS Management Console).
Ou exécutez directement la commande suivante dans une invite de commandes PowerShell :
Import-Module ServerManager Add-WindowsFeature web-common-http,web-windows-auth,web-mgmt-console,web-asp
Dans IIS Manager, supprimez le site qui a été créé par défaut lors du déploiement de Microsoft IIS.
Procédez également à l’enregistrement d’ASP.NET auprès de IIS. Exécutez les 2 commandes suivantes dans une invite de commandes DOS (avec privilèges Administrateur) :
"C:\Windows\Microsoft.Net\Framework\v4.0.30319\aspnet_regiis.exe" -ir
"C:\Windows\Microsoft.Net\Framework64\v4.0.30319\aspnet_regiis.exe" -ir
Installez maintenant Silverlight (moi j’ai utilisé la version 5.5) mais à priori pas de contraintes là-dessus. Prenez la plus récente. La console de gestion d’App-V fonctionne via Silverlight.
Enfin, installez également le KB suivant : Windows6.1-KB2533623-x64.msu et redémarrez le serveur si nécessaire.
Tous les prérequis à App-V Server sont maintenant installés et la base de données a été provisionnée.
Nous pouvons passés à l’installation d’App-V Server (Management + Publishing Server).
Sur notre serveur APP-V, exécutez (cette fois-ci normalement), l’assistant d’installation App-V Server Server (dans mon cas : APPV_SERVER_SETUP.EXE, récupéré depuis le MSDN) :
Cliquez sur Install.
Sélectionnez les composants à installer. Je ne m’intéresse pour cet article qu’aux Management & Publishing server.
Le reporting server permet d’avoir des statistiques sur l’utilisation d’App-V. Ce type de composant est, à mon sens, superflu si vous intégrer par exemple App-V dans un architecture Citrix XenApp. Car dans ce cas, vous utiliserez les outils fournis par Citrix pour superviser l’utilisation des ressources applicatives (à la fois virtuelles et non virtuelles).
Indiquez maintenant l’adresse IP de votre serveur distant (standalone ou instance SQL sur cluster de serveurs). Précisez le nom de l’instance ainsi que le nom de la base de données et cliquez sur Next.
Si vous avez bien suivi l’ensemble des étapes précédentes, vous ne devez avoir aucun avertissement ou erreur (il y a 2 erreurs assez courantes qui peuvent survenir à ce niveau, elles sont détaillées en fin d’article).
Spécifiez maintenant le groupe ou compte AD administrateur du serveur App-V ainsi que le port d’écoute du Management Service. J’ai choisi le port 8080.
Spécifiez maintenant un autre port pour le Publishing Server. J’ai choisi le port 80.
Cliquez sur Install
L’installation est terminée (sans erreur).
Mise à jour et publication d’un package
Le Management & Publishing Server sont installés. Si vous le souhaitez, vous pouvez maintenant procéder à l’installation du SP2 pour App-V Server qui correspond au KB suivant : KBB2897087. Vous devrez redémarrer le serveur App-V à la fin de l’installation.
Si vous accédez à l’URL suivante depuis le serveur App-V : http://localhost:8080/Console.html vous devriez voir la liste des serveurs App-V de votre installation, le groupe AD référence comme administrateur du serveur App, etc.
Liste des serveurs App-V (il y en aurait bien sûr plusieurs, si vous montiez une grappe de serveurs App-V)
Liste des administrateurs
Nous allons voir maintenant comment publier un package App-V. Et pour cela, nous utiliserons le package par défaut fournit par Microsoft : Microsoft Application Virtualization 5.0 Client UI Application, à télécharger ici : http://www.microsoft.com/en-US/download/details.aspx?id=41186 (déjà au format App-V).
Dans la Console.html, cliquez sur le second icônes (sur la gauche) puis Packages et enfin en haut à droite Add or Upgrade Packages. Vous devez positionner votre package sur un share qui devra être accessible, au moins en lecture, par les machines disposant du client App-V (que nous installerons un peu plus loin).
Pour le test, j’ai positionné le package directement sur le serveur App-V dans un dossier que j’ai partagé pour Everyone. Cliquez sur ADD pour démarrer la publication.
Une fois l’application ajoutée, effectuez un clic droit sur celle-ci et sélectionnez publish et modifiez éventuellement les utilisateurs ou groupes AD pour lesquels cette application doit être disponible.
Notre infrastructure App-V est maintenant fonctionnelle et nous avons publié une application qui est, par défaut, disponible à tous les utilisateurs de notre AD (Domain Users).
Il ne vous reste plus qu’à procéder à l’installation du client App-V sur un autre serveur qui jouera le rôle de poste client afin d’accéder aux applications App-V. Nous verrons cette étape-ci dans un prochain article 🙂 !
Troubleshooting
Troubleshooting 1
Si vous avez l’erreur suivante lors de la saisi des infos du serveur de base de données : You must update the database so that it is compatible with the associated App-V server. Functionality will be limited until this is compelted. Do you want to proceed with the installation.
Alors, vous avez mal configuré ou exécuté le dernier fichiers SQL Permissions.sql. Retournez à cette étape, et voyez si vous n’avez pas fait une erreur.
Troubleshooting 2
Si vous avez l’erreur suivante lors de l’ouverture de la console App-V : There were problems interacting with the database on the server. The error was: Invalid object name « dbo.RoleAssignments ».
Alors, vous avez mal configuré ou exécuté le dernier fichiers SQL Permissions.sql. Retournez à cette étape, et voyez si vous n’avez pas fait une erreur.