Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)
    • 16/2/2016

    [Azure Stack] Déployer une WebApp personnalisée

    Pendant mes tests avec Azure Stack, J’ai essayé de déployer une WebApp personnalisée directement depuis Visual Studio. Avec Azure et Visual Studio, vous avez une option qui permet de se connecter à votre compte Azure et de choisir une suscription.

    Pour le moment, avec Visual Studio, vous ne pouvez pas faire ceci directement sur Azure Stack, parce que si vous vous connectez avec votre compte tenant, vous n’aurez pas de suscription (Azure). Donc pour déployer votre WebApp personnalisée, créez une nouvelle WebApp vide dans Azure Stack:

    image

    Maintenant, vous allez télécharger le fichier publish settings, en clqiuant sur Get publish profile. Un fichier va être téléchargé:

    image

    image

    Sur la VM ClientVM, ouvrez votre dans Visual Studio. Cliquez sur Build > Publish WebApp:

    image

    Dans la nouvelle fenêtre, cliquez sur Import:

    image

    Choisissez le fichier publish settings que vous avez téléchargé précédemment:

    image

    Ca va remplir automatiquement les champs. Cliquez sur Validate Connection pour être sur que la connexion est bonne:

    image

    Si vous voulez que votre site s’ouvre après le déploiement, copier l’url depuis votre web app et modifier le champ Destination URL dans Visual Studio:

    image

    image

    Cliquez sur Publish. Votre Web App vide est maintenant avec votre Web site personnalisée Sourire

    image

    • 12/2/2016

    [Azure Stack] Déployer le Resource Provider Web App

    Après le premier article concernant le déploiement du RP MySQL, et du second pour déployer le RP de SQL, je vais vous expliquer comment installer le RP pour les Web App.

    Pour ce RP, les prérequis sont les suivants:

    Connectez vous à votre VM ClientVM, démarrez PowerShell ISE en tant qu’administrateur et téléchargez le paquet suivant. Décompressez-le:

    image

    Dans une fenêtre PowerShell, exécutez le script Deploy-SqlServerDSC.ps1. Il vous demandera votre répertoire Azure AD, un mot de passe pour le compte Admin (qui sera utilisé pour se connecter à la VM SQL et à l’instance SQL Server) et un compte Global Admin de votre Azure AD et de Azure Stack:

    image

    image

    La VM SQL sera déployée dans un Resource Group nommé WebsitesSQL:

    image

    Pendant le déploiement, récupérez l’adresse IP privée de la VM SQL, 10.0.2.4 dans mon cas:

    image

    La VM SQL est maintenant déployée (le déploiement a duré 45 minutes pour moi):

    image

    Maintenant, nous allons installer la partie App Service. Commencez par télécharger le logiciel appservice.exe, sur la VM ClientVM. Démarrez le en tant qu’administrateur. Cliquez sur Deploy using Azure Resource Manager:

    image

    Acceptez la licence:

    image

    Acceptez la licence pour tous les produits qui seront déployés:

    image

    Après, il faut créer un nouveau compte de stockage qui sera utilisé pour le déploiement, dans la suscription Default Provider Subscription:

    image

    Que c’est terminé, récupérez le nom du compte de stockage ainsi que la clé pour y accéder:

    SNAGHTML35ebfe4

    Fournissez ces informations dans la fenêtre suivante, dans l’installateur App Service:

    image

    Le téléchargement de chaque produit commence, et après le téléchargement, ils seront envoyés sur votre compte de stockage créé précédemment:

    SNAGHTML360308b

    Le déploiement s’est terminé avec succès. Un nouveau bouton est apparu, Deploy to Azure Stack. Cliquez dessus:

    image

    Sur le popup qui apparaît, cliquez sur No. C’est important parce qu’en cliquant sur No, les commandes qui doivent être exécutées seront copiées dans votre clipboard. Ces informations peuvent être récupérées si vous lez perdez, via votre compte de stockage. Ces commandes seront utilisées pour déployer l’infrastructure du RP Web App. Collez les dans un notepad:

    image

    image

    Il est maintenant temps de déployer le RP WebApp. 0 cet étape, vous avez 2 solutions. En PowerShell avec ARM ou directement avec l’interface Web. Ici, je vais vous expliquer la façon avec l’interface Web (pour PowerShell, les explications sont ici). Ouvrez a deuxième URL que vous avez dans votre notepad:

    image

    Ici, vous avez besoin de plusieurs informations:

    1 – Le nom d’un compte de stockage, webappstorage par exemple
    2 – Un compte admin pour chaque VM
    3 – Un mot de passe pour chaque utilisateur admin
    4 – Un suffixe DNS pour accéder au RP WebApp, par exemple webapps.azurestack.local
    5 – L’I¨P address de la VM SQL que vous avez récupéré précédemment, pour moi 10.0.2.4
    6 – Le compte sysadmin, sa
    7 – Le mot de passe du compte sysadmin, le même que le compte local du serveur SQL

    image

    Vous pouvez adapter chaque valeur pour chaque VM. J’utiliserai ici qu’une seule instance pour chaque VM, mais je change la taille pour une Standard_A2:

    image

    Il est très important de déployer ce RP WebApp dans le même groupe de ressource que le serveur SQL. Dans mon cas, WebsitesSQL. Cliquez sur Create pour démarrer le déploiement de chaque machine:

    image

    Le déploiement est démarré:

    image

    6 VMs sont déployées:

    • CN0-VM: Cette VM est le controller primaire, pour gérer l’infrastructure WebApp
    • FS-VM : C’est le File Server, où les binaires des sites sont stockés mais aussi les sites web des clients
    • WW0-VM: Cet VM est le Web Worker, où les ressources disponibles pour vos clients (App Service) seront disponibles
    • MN0-VM: Cette VM est utilisé pour la partie Hosting Management
    • FTP0-VM: C’est la VM Publisher 
    • FE0-VM: C’est la VM Front End

    Le déploiement c’est correctement déroulé (40 minutes pour moi):

    image

    Nous allons maintenant créer l’entrée DNS pour le wild card *.webapps.azurestack.local. L’IP adress est l’IP du Load-Balancer FrontEndServersLoadBalancer, dans mon cas, 192.168.133.28:

    image

    L’entrée DNS de type A associée:

    image

    Ce * va créer un nouveau dossier nommé webapps dans votre DNS:

    image

    Récupérez maintenant l’IP adresse du Load-Balancer ManagementServerLoadBalancer, pour moi 192.168.133.29:

    image

    Créez une nouvelle entrée DNS de type A avec le nom management. Ce nom sera utilisé pour enregistrer le RP WebApp dans Azure Stack:

    image

    Nous allons créer/installer le certificat wildcard. Si vous avez déjà installé le RP SQL, ce certificat existe déjà. Dans le cas contraire, utilisez le début de cet article pour le créer. Connectez vous sur la VM management.azurestack.local et copiez le certificat wildcard sur votre bureau:

    image

    Ouvrez le et choisissez Local Machine:

    image

    Sélectionnez les 2 box Make this key as exportable… and Include all properties…:

    image

    Choisissez la première option, Automatically select…:

    image

    Importez-le:

    image

    L’import c’est effectué correctement:

    image

    Nous allons installer ce certificat sur la VM CN0-VM. Récupérez son IP depuis le portail:

    image

    Depuis le serveur management connectez vous au serveur CN0-VM . Copiez le certificat depuis le management, et collez le dans C:\Temp de la vm controller:

    image

    Exécutez le script PowerShell suivant, en remplaçant avec vos valeurs le mot de passe du PFX ainsi que l’URI de la dernière commande, en l’adaptant avec l’URL du management:

    Import-Module Websites

    $password="pfxPassword"
    Set-WebSitesConfig -Type Global -ManagementServerCertificateFileName "C:\Temp\Certificate.pfx" -ManagementServerCertificatePassword $password
    Set-WebSitesConfig -Type Global -ArmEndpoint "https://api.azurestack.local"
    Set-WebsitesConfig -Type Global -ArmResourceProviderUri 'https://management.azurestack.local/'

    SNAGHTML3e6dda7

    Exécutez le script:

    Get-WebSitesServer -ServerType ManagementServer | Repair-WebSitesServer
    Get-WebSitesServer -ServerType LoadBalancer | Repair-WebSitesServer
    Get-WebSitesServer -ServerType WebWorker | Repair-WebSitesServer

    image

    La fin est proche. Nous allons enregistrer le RP WebApp dans notre environnement Azure Stack. Connectez vous sur la VM ClientVM et allez sur https://portal.azurestack.local .Allez dans Resource Providers et cliquez sur Add:

    image

    Remplissez chaque champs:

    1 – Le nom du déploiement
    2 – L’URL de management, https://management.azurestack.local/
    3
    – Le nom d’utilisateur des VMs, admin
    4 – Le mot de passe des VMs
    5 – La location, local
    6 – Un groupe de ressource, WebAppsRG

    image

    L’enregistrement est terminé:

    image

    Le déploiement est terminé, nous pouvons l’ajouter à notre plan:

    image

    Nous allons maintenant ajouter un serveur, pour avoir la possibilité de déployer des site web sur des App Service de type Standard. J’ai déployé une nouvelle VM WS 2012 R2 (Standard_A3) pour l’utiliser en tant qu’App Service Medium. Cette VM est connecté sur le même réseau que mes autres VMs du RP WebApp et donc, dans le même groupe de ressource:

    image

    Connectez vous sur cette VM et ajoutez le même compte que vous avez utilisé pour votre ferme Web App (admin) avec le même mot de passe. Ce compte doit être administrateur local de la VM:

    image

    Exécutez la commande PowerShell suivant pour pouvoir vous connecter à distance (WinRM) avec un compte qui ne provient pas de ce serveur:

    Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1 -Force

    Allez sur votre Resource Providers web-apps:

    image

    Cliquez sur Roles:

    image

    Comme vous pouvez le voir, actuellement, les clients peuvent seulement créer des site sur une infrastructure de type Shared. Nous devons donc ajouter des serveurs pour les instances suivantes Small/Medium/Large. Cliquez sur Add Role Instance et fournissez l’adresse IP de la VM que vous venez de créer et choisissez la taille à laquelle vous voulez associer cette VM:

    image

    image

    Si vous allez sur la VM controller, et que vous ouvrez le raccourci sur le bureau Web Cloud Management Console, vous pouvez voir que le serveur que vous avez ajouté est en cours de configuration pour recevoir des nouvelles instances:

    image

    Le serveur est maintenant prêt à recevoir des instances (l’ajout a pris 30 minutes sur mon environnement):

    image

    Mon client peut maintenant déployer une WebApp. Cliquez sur New > Web + Mobile et choisissez un site:

    image

    Je vais déployer un wordpress. Pour le App Service, je vais utiliser le pricing tier Standard-Medium, car c’est celui que je viens d’ajouter:

    image

    Je vais le lier à une base de données existante:

    image

    image

    Après quelques minutes, vous pouvez naviguer sur votre nouveau site:

    imageimage

    Django:

    image

    Et pour.Net Nuke, avec une base de données SQL:

    image

    image

    image

    Si vous avez des questions, n’hésitez pas à me contacter Sourire

    • 11/2/2016

    [Azure Stack] Déployer le Resource Provider SQL Server

    Après avoir vu dans le 1er article comment déployer le RP de MySQL sur Azure Stack, je vais vous expliquer comment déployer le RP de SQL Server. Avant de commencer, assurez vous d’avoir une image Windows Server 2012 R2 Datacenter avec le Framework 3.5 (prérequis pour SQL Server) et d’avoir désactiver IE Enhanced Security Configuration. Pour commencer, connectez vous sur la VM ClientVM et désactivez IE Enhanced Security Configuration pour les administrateurs et les utilisateurs. C’est nécessaire pour pouvoir s’authentifier sans problème sur Azure AD:

    image

    Sur la VM ClientVM, installez la dernière version de Azure PowerShell (version 1.2.1), que vous pouvez télécharger ici:

    image

    C’est maintenant temps de créer un certificat wildcard pour autoriser la communication entre le Resource Provider et Azure Resource Manager. Connectez vous sur la VM PortalVM et ouvrez la console IIS:

    image

    Ici, allez dans PORTALVM > Server Certificates et cliquez sur Create Domain Certificate. Donnez comme valeur dans common name, *.azurestack.local. Donnez le même nom pour friendly name. Pour les autres paramètres, remplissez comme bon vous semble:

    image

    image

    Nous allons exporter le certificat. Ouvrez une MMC et connectez le certificat sur Local Computer. Dans la partie Personal, vous allez voir votre certificat wildcard:

    image

    Exportez le certificat avec la clé privée:

    image

    Choisissez les extensions Export all extended properties et Include all instances in the certificate path if possible:

    image

    Donnez un mot de passe pour protéger le certificat:

    image

    Choisissez où stocker le certificat:

    image

    Copiez le certificat dans \\SOFS\Share\Certificates\Wildcard :

    image

    Retournez dans votre VM ClientVM et téléchargez le RP SQL avec ce lien et décompressez le. Renommez le fichier AzureStack.SqlRP.Deployment.*.nupkg en AzureStack.SqlRP.Deployment.*.zip. Sur le disque D, créez un dossier nommé SQLRP et décompressez le dans le dernier dossier créé:

    image

    Copiez le fichier AzureStack.SqlRP.Setup.*.nupkg dans D:\SQLRP\AzureStack.SqlRP.Deployment.5.11.61.0\content\Deployment:

    image

    Dans ce dossier, créez un nouveau dossier nommé Certificate et copiez le certificat wildcard dedans. Renommez le en Certificate.pfx. Ceci est très important parce que le script utilise ce nom de certificat:

    image

    Retournez dans le dossier Deployment et allez dans Templates. Modifiez le fichier InstallSqlRpComplete-Parameters.json. Remplissez les valeurs adminPassword avec le mot de passe que vous allez utiliser pour votre RP SQL et le mot de passe du certificat PFX dans la certPassword. Vous pouvez fermer votre fichier.

    Faites la même chose dans le fichier InstallSqlRpPackage-Parameters.json.

    Changez la valeur du paramètre cseBlobStorage avec le nom de la nouvelle version, AzureStack.SqlRP.Setup.5.11.61.0.nupkg:

    image

    Ouvrez une fenêtre PowerShell en tant qu’administrateur et déplacez vous dans D:\SQLRP\AzureStack.SqlRP.Deployment.5.11.61.0\Content\Deployment:

    image

    Exécutez le script SqlRPTemplateDeployment.ps1 avec les paramètres suivant, en remplaçant par vos valeurs pour démarrer l’installation du RP:

    .\SqlRPTemplateDeployment.ps1 -AadTenantDirectoryName azurelabdvo.onmicrosoft.com -packageName "AzureStack.SqlRP.Setup.5.11.61.0.nupkg"

    Si vous avez l’erreur suivant, tapez Set-ExecutionPolicy Unrestricted:

    .\SqlRPTemplateDeployment.ps1 : File
    D:\SQLRP\AzureStack.SqlRP.Deployment.5.11.61.0\content\Deployment\SqlRPTemplateDeployment.ps1 cannot be loaded. The
    file D:\SQLRP\AzureStack.SqlRP.Deployment.5.11.61.0\content\Deployment\SqlRPTemplateDeployment.ps1 is not digitally
    signed. You cannot run this script on the current system. For more information about running scripts and setting
    execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
    At line:1 char:1
    + .\SqlRPTemplateDeployment.ps1
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : SecurityError: (:) [], PSSecurityException
        + FullyQualifiedErrorId : UnauthorizedAccess

    image

    Une fenêtre va apparaître pour vous demander un nom d’utilisateur/mot de passe qui est global admin de votre Azure AD:

    image

    Le déploiement de la VM est en cours:

    image

    La déploiement peut prendre jusqu’à 90 minutes pour se déployer car une nouvelle VM va être provisionnée avec SQL Server installé sur Windows Server 2012 R2 (moins de 60 minutes pour ma part). Le déploiement est maintenant terminé:

    image

    Allez sur la VM ADVM et créez une entrée DNS sqlrp avec l’adresse IP public que vous pouvez trouvez dans le portail Azure Stack dans Public IP:

    image

    image

    La dernière étape est d’enregistrer le RP SQL dans MAS. Exécutez le script Register-SqlRP.ps1 qui se trouve dans le dossier D:\SQLRP\AzureStack.SqlRP.Deployment.5.11.61.0\content\Deployment avec la commande suivante:

    .\Register-SqlRP.ps1 -AadTenantDirectoryName azurelabdvo.onmicrosoft.com

    Connectez vous sur votre Azure AD. Une fenêtre va apparaître pour vous demander un le mot de passe pour l’utilisateur sqlRpUsername . Renseignez le mot de passe suivant sqlRpPassw0rd

    image

    image

    Ajoutez le RP à une suscription existante:

    image

    Cliquez sur New > Data + Storage > Sql Server Database et choisissez le serveur créait plus tôt:

    image

    image Quand je lance le déploiement, j’ai l’erreur suivante:

    image

    Mark Scholman m'a donné la solution sur Twitter. Vous devez ajouter l’instance SQL avant de lancer un déploiement. Pour faire ceci, allez sur le portail d’administration et allez dans Resource Providers > SQL-LOCAL > SQL Service > SQL Hosting Servers (en cliquant sur 0 sous Servers) et cliquez sur Add. Renseignez le nom d’une instance SQL Server et le nom d’utilisateur/mot de passe pour se connecter à cette instance (et le port si besoin):

    image

    image

    Mon serveur SQL a été enregistré correctement et peut maintenant héberger des bases de données. Relancez votre création de base de donnée:

    image

    Vous pouvez vous connecter à cette base:

    image

    image

    Profitez-en bien Sourire

    • 11/2/2016

    [Azure Stack] Déployer le Resource Provider MySql

    Microsoft a rendu disponible Mardi 3 nouveaux services dans Azure Stack pour le Platform-As-A-Service (PaaS):

    • SQL Server
    • MySQL
    • Web Apps

    Dans 3 différents articles, je vais vous expliquer comment déployer chaque Resource Provider. Nous allons commencer par le déploiement du RP MySql. Pour commencer, connectez vous sur la VM ClientVM et désactivez IE Enhanced Security Configuration pour les administrateurs et les utilisateurs. Ceci est nécessaire pour s’authentifier sur Azure AD sans problème.

    Sur la VM ClientVM, installez la dernière version de Azure PowerShell (version 1.2.1), que vous pouvez télécharger ici:

    image_thumb21

    Quand ceci est terminé, téléchargez le fichier AzureStackMySQLforWebApps.zip et décompressez le dans D:\MySql:

    image

    Lancez un fenêtre de commande en tant qu’administrateur et déplacez vous dans D:\MySql. Exécutez l’outil Bootstrap.cmd. Ceci va lancer PowerShell ISE avec le script Bootstrap.ps1. Exécutez le:

    image

    Plusieurs nouveaux tabs vont s’ouvrir. Allez dans le tab Prepare MySql Prerequisites et exécutez le script New-SslCert.ps1 pour générer un certificat pour votre infrastructure MySQL. Le script va vous demander un mot de passe pour le PFX:

    image

    image

    Si vous allez dans D:\MySql\Prerequisites\BlobStorage\Container vous verrez votre certificat pour sécuriser les communications entre votre Rp et Azure Resource Manager. Maintenant, exécutez le script Download-MySqlServer.ps1 (ceci va télécharger MySQL) et cliquez sur Yes to All pour accepter la licence MySQL:

    image

    Dans D:\MySql\Prerequisites\BlobStorage\Container vous avez vos 2 MySQL packages:

    image

    Maintenant, exécutez le script Upload-Microsoft.MySql-RP.ps1. Ce script va copier les sources dans un blob storage. Fournissez votre nom Azure AD (dans mon cas, azurelabdvo.onmicrosoft.com) et fournissez un Username/Password qui est Global Admin de Azure AD et Admin de Azure Stack:

    image

    image

    Exécutez maintenant le script Publish-GalleryPackages.ps1. Ce script va ajouter 2 packages dans votre Market Place de Azure Stack. Donnez le nome de votre Azure AD comme paramètre:

    image

    Maintenant, vous avez normalement ces 4 packages dans D:\MySql\Prerequisites\BlobStorage\Container:

    image

    C’est maintenant temps de déployer le RP MySQL. Sur la VM ClientVM, allez dans Market Place > Resource Providers > MySql Resource Provider 1.0.1.0:

    image

    Cliquez dessus et choisissez un utilisateur/mot de passe Admin pour votre VM:

    image

    Descendez et donnez le mot de passe du PFX généré à la 1ère étape. Choisissez un nom d’utilisateur/mot de passe que vous utiliserez pour enregistrer le RP MySQL:

    SNAGHTML2e10c036

    Créez un nouveau Resource Group nommé MySQL01 et lancez la création:

    image

    Après une trentaine de minutes, les VMs et les services MySQL sont déployés:

    image

    Retournez dans PowerShell ISE et déplacez vous dans le tab Deploy MySql provider. Sélectionnez le script Register-Microsoft.MySql-fqdn.ps1 pour récupérer l’adresse IP public de la VM et créer le DNS associé. Pour ce script, vous devez fournir votre compte Azure AD:

    image

    image

    Pour terminer, lancez le dernier script, Register-Microsoft.MySql-provider.ps1 pour enregistrer votre RP MySQL. Donnez votre compte Azure AD et après, donnez le nom d’utilisateur/mot de passe du RP que vous avez renseigné un peu plus tôt:

    image

    Le RP MySQL est maintenant enregistré:

    image

    Allez dans votre interface Azure Stack, et déplacez vous dans Plans > YourPlan > Settings > Services > Add New. Choisissez le provider Microsoft.MySql:

    image

    Connectez vous avec votre compte utilisateur sur le portail et cliquez sur New > Data + Storage > MySql server/database. Complétez les informations:

    image

    Le déploiement est maintenant terminé:

    image

    Les informations concernant votre DB MySQL:

    image

    Pour vous connecter à cette instance, exécutez la commande suivante:

    mysql.exe -h mysql1.azurestack.local -u florent@mysqldb01 -p

    image

    Amusez vous bien Sourire

    • 5/2/2016

    [Azure Stack] Déployer une extension

    Comme dans la nouvelle version de Azure, il est possible de déployer des extensions tel que BGInfo, DSC, etc. Le seul problème est, que pour le moment, le bouton add n’existe pas. Il faut donc passer par PowerShell. Pour installer BGInfo, exécutez la commande suivante:

    # Add the Microsoft Azure Stack environment
    [net.mail.mailaddress]$AadFullMailAddress="florent@azurelabdvo.onmicrosoft.com"
    $AadTenantId=(Invoke-WebRequest -Uri ('https://login.windows.net/'+($AadFullMailAddress.Host)+'/.well-known/openid-configuration') -UseBasicParsing|ConvertFrom-Json).token_endpoint.Split('/')[3]

    # Configure the environment with the Add-AzureRmEnvironment cmdlt
    Add-AzureRmEnvironment -Name 'Azure Stack' `
        -ActiveDirectoryEndpoint ("https://login.windows.net/$AadTenantId/") `
        -ActiveDirectoryServiceEndpointResourceId "https://azurestack.local-api/"`
        -ResourceManagerEndpoint ("https://api.azurestack.local/") `
        -GalleryEndpoint ("https://gallery.azurestack.local/") `
        -GraphEndpoint "https://graph.windows.net/"

    # Authenticate a user to the environment (you will be prompted during authentication)
    $privateEnv = Get-AzureRmEnvironment 'Azure Stack'
    $privateAzure = Add-AzureRmAccount -Environment $privateEnv -Verbose
    Select-AzureRmProfile -Profile $privateAzure

    Set-AzureRmVMExtension -ExtensionName BGInfo -Publisher Microsoft.Compute -Version 2.1 -ExtensionType BGInfo -Location local -ResourceGroupName Compute -VMName W2012R2 -Verbose

    image

    Et dans l’interface Azure Stack:

    image

    J’ai testé les extensions suivantes:

    • BGInfo
    • DSC
    • VMAccessAgent
    • CustomScriptExtension

    Vous pouvez trouver une liste des extensions ici \\SOFS\CRP\GuestArtifactRepository. A voir si elles fonctionnent toutes.

    • 5/2/2016

    [Azure Stack] Déployer un item personnalisé dans le Market Place

    A partir de l’article suivant, je vais vous expliquer comment importer un item personnalisé dans le Market Place de Azure Stack.

    Pour commencer, créez une image personnalisé avec l’article suivant: http://scug.be/florent/2016/02/04/azure-stack-add-a-custom-image-to-your-library/

    Quand l’image est prête, récupérez les valeurs qui sont dans le manifest, au même endroit que votre VHD:

    image

    Nous pouvons maintenant créer notre Template. Téléchargez l’archive Azure Gallery Packaging Tool and a Sample Gallery Package avant de commencer la création. Ouvrez l’archive et renommer le fichier SimpleVMTemplate par le nom du Template que vous allez mettre dans Azure Stack:

    image

    Maintenant, créez un ARM template ou téléchargez en un depuis GitHub ou bien sur ce Github. Pour ma part, je vais en créer un nouveau, basé sur celui de Windows Server 2012 R2 qui est déjà déployé dans Azure Stack. Remplacez les valeurs de votre Template ARM dans la partie imageReference par les valeurs que vous avez récupéré dans le manifest du VHD:

    "imageReference": {
      "publisher": "FlorentAppointaire",
      "offer": "WindowsServer",
      "sku": "2016-TP4"
    },

    Vous pouvez tester votre Template ARM avant pour être sur qu’il fonctionne sans problème. Sauvegardez votre template dans le dossier DeploymentTemplates:

    image

    Vous pouvez changer les îcones dans le dossier Icons en utilisant des tailles bien spécifiques, disponibles ici. Vous pouvez également modifier les différents textes, dans le fichier strings/resources.json, avec les références suivantes.

    image

    Maintenant, nous allons modifier le manifest. Ouvrez le et modifiez le comme ceci:

    1 – Le même nom que votre nom de dossier
    2 – Le nom du Publisher, sans espace
    3 – La version de votre template
    4 – Le nom du Template que le client verra
    5 – Le nom du Publisher que le client verra
    6 – Le nom du Publisher légal
    7 – Le chemin où le fichier UIDefinition.json est stocké
    8 – Le chemin et le nom de votre Template ARM
    9 – Si vous en avez un second, renseignez le ici
    10 – Le chemin et le nom de chaque icones, small, medium et large sont obligatoires
    11 – Le nom de la catégorie où ce Template sera affiché. Vous pouvez ajouter plusieurs catégories

    image

    Sauvegardez votre fichier et ouvrez un command prompt. Déplacez vous dans le dossier qui contient AzureGalleryPackageGenerator:

    image

    Exécutez la commande suivante, en remplaçant par vos propre valeurs, pour générer un nouveau Template avec l’extension .azpkg:

    AzureGalleryPackager.exe package –m <path to manifest.json> -o <output location for the package>

    Dans mon cas:

    AzureGalleryPackager.exe package -m "C:\Users\flore\Downloads\Azure Stack Marketplace Item Generator and Sample\Azure Stack Marketplace Item\WindowsServer-2016-TP4\manifest.json" -o "C:\Users\flore\Downloads\Azure Stack Marketplace Item Generator and Sample\Azure Stack Marketplace Item"

    image

    Si aucune erreur n’apparait, ouvrez le dossier que vous avez renseigné comme chemin de sorti. Vous avez un nouveau fichier, avec la structure suivante:

    publisher.name.version.azpkg

    image

    Maintenant que nous avons le fichier, il est temps de l’importer dans Azure Stack. Copiez le fichier sur votre vm  ClientVM. Vous devez également avoir un compte administrateur pour l’importer. Assurez-vous également qu’un ResourceGroup est disponible. Pour la paramètre Name, donnez le nom de votre fichier, sans l’extension .azpkg.  Et pour le chemin, donnez le chemin où se trouve le fichier .azpkg. Ouvrez un prompt PowerShell et exécutez le script suivant pour importer la ressource dans la galerie, en l’adaptant avec vos valeurs:

    # Add the Microsoft Azure Stack environment
    [net.mail.mailaddress]$AadFullMailAddress="azurestack@azurelabdvo.onmicrosoft.com"
    $AadTenantId=(Invoke-WebRequest -Uri ('https://login.windows.net/'+($AadFullMailAddress.Host)+'/.well-known/openid-configuration') -UseBasicParsing|ConvertFrom-Json).token_endpoint.Split('/')[3]

    # Configure the environment with the Add-AzureRmEnvironment cmdlt
    Add-AzureRmEnvironment -Name 'Azure Stack' `
        -ActiveDirectoryEndpoint ("https://login.windows.net/$AadTenantId/") `
        -ActiveDirectoryServiceEndpointResourceId "https://azurestack.local-api/"`
        -ResourceManagerEndpoint ("https://api.azurestack.local/") `
        -GalleryEndpoint ("https://gallery.azurestack.local/") `
        -GraphEndpoint "https://graph.windows.net/"

    # Authenticate a user to the environment (you will be prompted during authentication)
    $privateEnv = Get-AzureRmEnvironment 'Azure Stack'
    $privateAzure = Add-AzureRmAccount -Environment $privateEnv -Verbose
    Select-AzureRmProfile -Profile $privateAzure

    # Select an existing subscription where the deployment will take place
    $Subscription = Get-AzureRmSubscription -SubscriptionName "Default Provider Subscription"  | Select-AzureRmSubscription
    $subId = Get-AzureRmSubscription -SubscriptionName "Default Provider Subscription" | Select SubscriptionId

    Add-AzureRMGalleryItem -SubscriptionId $subId.SubscriptionId -ResourceGroup MarketplaceItems -Name FlorentAppointaire.WindowsServer-2016-TP4.1.0.0 -Path C:\Temp\FlorentAppointaire.WindowsServer-2016-TP4.1.0.0.azpkg  -Apiversion "2015-04-01" –Verbose

    image

    Si le déploiement retourne un StatusCode à OK, votre fichier est bien importé. Allez sur https://portal.azurestack.local et dans le Market Place, allez dans la catégorie mentionnée dans le manifest. Vous devriez voir votre nouveau template:

    imageimage

    Ci-dessous, 2 Template que j’ai créé pour Azure Stack:

    Dites-moi si vous en souhaitez d’autres ou si vous avez des remarques/questions Sourire

    • 4/2/2016

    [Azure Stack] Ajouter une image personnalisé dans la Librairie

    Je continue de découvrir Azure Stack tous les jours, et aujourd’hui, je vais vour expliquer comment importer un VHD customisé dans Azure Stack pour que les clients puissent l’utiliser (Platform Image Repository).

    Pour démarrer, déployez un machine virtuel, en GENERATION 1 et avec un VHD. C’est très important parce que Azure Stack TP1 ne supporte pas les VM de génération 2 et ne supporte pas les VHDX. Je vais déployer un Windows Server 2016 TP4. Quand la VM est installée, nous devons faire un sysprep:

    image

    Quand le sysprep est termin, copiez le VHD dans un dossier temporaire, par exemple dans C:\Temp:

    image

    Maintenant, naviguez dans le disque dur DataImage. Dans mon lab, il est sous la lettre G et allez dans le chemin suivant:

    cd G:\CRP\VM\Microsoft.AzureStack.Compute.Installer\content\Scripts

    Ici, vous avez plusieurs scripts:

    image

    Nous allons utiliser le script nommé CopyImageToPlatformImageRepository.ps1. Le script va copier votre VHD dans le share \\sofs\Share\CRP\PlatformImages et créer un Manifest personnalisé pour le disque.

    Le script doit avoir les paramètres suivant:

    • PlatformImageRepositoryPath: Dans la TP1, c’est \\SOFS\Share\CRP\PlatformImages\
    • ImagePath: Le chemin où est stocké votre VHD sysprepé
    • Publisher: Un nom de publication
    • Offer: Le type d’offre
    • Sku: Un tag pour le VHD 
    • Version: La version du VHD
    • OSType: Windows ou Linux

    Pour les paramètres Publisher, Offer et Sku, conservez les valeurs que vous donnez, parce que si vous souhaitez créer un Template pour le Market Place, vous en aurez besoin. Maintenant, adaptez le script suivant et exécutez le:

    .\CopyImageToPlatformImageRepository.ps1 -PlatformImageRespositoryPath \\SOFS\Share\CRP\PlatformImages\ -ImagePath 'C:\Temp\WindowsServer2016TP4.vhd' -Publisher "FlorentAppointaire" -Offer "WindowsServer" -Sku "2016-TP4" -Version 1.0.0 -OsType Windows –Verbose

    image

    Le nouveau VHD est maintenant déployé avec le Manifest et vos paramètres:

    image

    image

    Redémarrez votre navigateur pour voir le nouveau VHD dans  https://portal.azurestack.local:

    image

    Vous pouvez le déployer et après quelques minutes, vous pourrez voir les paramètres et vous y connecter:

    image

    Dans le prochain tutoriel, j’expliquerai comment créer un Template pour le Market Place Sourire