Microsoft a rendu disponible fin Février une première version de Azure Pack Connector. Ce plugin vous permet, depuis l’interface de Windows Azure Pack, de déployer et gérer des VMs sur Azure. Le 5 Avril dernier, Microsoft a rendu disponible la version 1.1. C’est avec cette version que je vais vous montrer comment déployer cet outil.
Assurez vous d’avoir un Azure Active Directory avant de commencer. Ensuite, téléchargez le Azure Pack Connector: https://github.com/Microsoft/Phoenix/releases/tag/v1.1
Copiez les sources sur les serveurs qui hébergerons les 3 rôles que composent ce composant:
- CMP Server
- WAP Tenant Extension
- WAP Admin Extension
Connectez vous sur un serveur qui contient IIS et générez un certificat de type Self-Signed ou d’entreprise, via une PKI. Exportez ce certificat, via IIS et importez le sur les serveurs qui hébergerons les 3 rôles précédent. Vous devez l’importer dans le Current User et dans le Local Machine, en incluant bien toutes les propriétés et en choisissant de placer automatiquement le certificat dans le bon magasin. Ensuite, ouvrez une MMC, et ajoutez le snap-in Certificates sur le Local Computer. Ouvrez les clés privées et ajoutez le groupe Everyone:
Ce certificat sera utilisé pour le chiffrement.
Vous devez maintenant télécharger et installer les Feature Pack suivante de SQL Server 2014, sur chaque serveur qui aura le plugin installé:
- Shared Management Objects (SMO)
- Transact-SQL ScriptDom (SQLDOM)
- System CLR Types (SQLSysClrTypes)
Redémarrez les serveurs. Nous pouvons maintenant lancer l’installation du plugin. Décompressez l’archive que vous avez téléchargé sur le serveur où sera installé l’extension de la partie Admin et exécutez l’application SetupCMP.exe:
Choisissez d’ajouter de nouvelles fonctionnalités:
Ici, je vais sélectionner les 2 fonctionnalités suivantes:
- CMP Server
- WAP Admin Extension
Acceptez la licence:
Choisissez où installer les binaires:
Donnez le nom du serveur SQL qui hébergera la base de donnée, ainsi que son instance, pour la partie CMP Service:
Faites de même pour la partie WAP:
Je vais utiliser un compte de service pour faire tourner le service CMP. Ce compte doit être administrateur local de la machine. Choisissez également le certificat que vous avez généré au début:
Vous avez ici un résumé de votre installation:
L’installation est terminée:
Dans IIS Manager:
Dans la partie WAP Admin Portal:
Allez maintenant sur le serveur qui contient le site Tenant et exécutez le fichier SetupCMP.exe. L’installation est la même, sauf que vous allez choisir la partie WAP Tenant Extension:
Choisissez d’utiliser une base de donnée existante:
Et choisissez le certificat que vous avez importé:
Installez le dernier composant:
Allez maintenant sur l’instance SQL qui contient la base de donnée Microsoft.MgmtSvc.Store et exécutez la requête suivante pour créer un nouvel utilisateur et l’associer à la base de donnée. Vous pouvez changer le nom d’utilisateur/mot de passe:
USE [master]
GO
CREATE LOGIN [MgmtSvc-CmpWapExtension] WITH PASSWORD=N'pass@word1', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [Microsoft.MgmtSvc.Store]
GO
CREATE USER [MgmtSvc-CmpWapExtension] FOR LOGIN [MgmtSvc-CmpWapExtension]
ALTER USER [MgmtSvc-CmpWapExtension] WITH DEFAULT_SCHEMA=[dbo]
ALTER ROLE [db_owner] ADD MEMBER [MgmtSvc-CmpWapExtension]
GO
Il faut maintenant fournir la bonne chaine de connexion SQL à notre plugin. Allez sur le serveur qui contient l’extension CMP et ouvrez le fichier Web.config (en tant qu’administrateur) dans le dossier C:\inetpub\MgmtSvc-CmpWapExtension. Remplacez la chaine de connexion MicrosoftMgmtSvcStoreContext par la suivante, en adaptant avec vos données:
<add name="MicrosoftMgmtSvcStoreContext" connectionString="Data Source=DEVOC-SQL-001\WAP;Initial Catalog=Microsoft.MgmtSvc.Store;Persist Security Info=True;User ID=MgmtSvc-CmpWapExtension;Password=pass@word1;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>
Modifiez les 2 chaines de connexions précédentes en ajoutant après la base de donnée, ;MultipleActiveResultSets=True”
Faites les 2 étapes précédentes sur chaque serveur CMP. Associez le certificat utilisé lors de l’installation au site IIS, sur chaque serveur:
Exécutez sur chaque serveur un iisreset pour prendre en compte les modifications. Sur un des serveurs, nous allons lancer le script qui permet d’enregistrer ce nouveau Resource Provider. Allez dans C:\inetpub\MgmtSvc-CmpWapExtension et exécutez le script Register-ResourceProvider.ps1. Vous devez fournir le nom du serveur qui contient l’extension d’administration et l’extension tenant:
Dans votre portail d’administration, le RP est enregistré correctement:
Téléchargez maintenant le script suivant : https://github.com/Microsoft/Phoenix/blob/master/tools/Create-AADSPN.ps1 et exécutez le sur un ordinateur qui contient le module AzureRM. Ce script va créer une application personnalisée dans votre Azure AD.
Nous allons maintenant ajouter le plugin à un plan. Vous aurez besoin des informations suivantes (ces informations sont disponibles dans la sortie du script que vous avez exécuté juste avant) :
- Le numéro de la suscription Azure (subscriptionId)
- Le numéro de votre Azure AD (tenantId)
- La clé que vous avez renseigné lors de la création de l’application (appKey)
- Le numéro de l’application de l’Azure AD (App ID)
Depuis le portail d’administration, ajoutez le service CMP à un plan:
Vous devriez avoir une page semblable à celle ci, en ajoutant un compte:
Remplissez chaque case avec les informations que vous avez récolté:
Cliquez sur le bouton Add Subscription. Si tout est OK, vous aurez un bandeau vert avec un message de succès:
Ajoutez la suscription au Plan en cliquant sur Add Selected Subscription To Plan:
Choisissez les images disponibles ainsi que les tailles et cliquez sur Save:
Dans le portail client, vous pouvez maintenant déployer une VM sur Azure:
Et avec le détail:
Ce nouveau plugin est très intéressant pour avoir la possibilité de déployer rapidement une VM sur Azure, mais certaines fonctionnalités sont manquantes, comme la possibilité de déployer une VM sur un Datacenter européen, des VMs linux, etc…
Troubleshooting
Erreur 1
Après le déploiement, j’ai eu l’erreur suivante dans le journal d’évènement:
Exception in SyncWorker.SynchWithCmp() : Exception in CmpClient.FetchCmpRequests() : Exception in GetAzureContainers() : The underlying provider failed on Open. - Cannot open database "CMP_DB" requested by the login. The login failed.
Login failed for user 'DOMAIN\DEVOC-WAPTNT-01$'. :
Les comptes ordinateurs de mes 2 VMs n’avaient pas les droits sur l’instance qui contient les DBs CMP. Je les ai donc rajouté sysadmin, et l’erreur a disparu.
Erreur 2
Si vous avez l’erreur suivante:
Exception in SyncWorker.SyncWithAzure() : Exception in FetchServiceProviderAccountList() : Exception in Decrypt() : Keyset does not exist
:
Assurez vous d’avoir bien donné la permission à Everyone en Full pour gérer les clés privés du certificat importé.