Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)
  • [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

    • 4/2/2016
  • [Azure Stack] Créer un plan, une offre, etc.

    Après avoir vu comment installer Azure Stack TP1, nous allons voir comment créer un plan, une offre et comment souscrire à ceux-ci.

    Pour commencer, connectez-vous sur le portail d’administration de Azure Stack:

    image

    Cliquez sur New > Tenant Offers and Plans > Plan:

    image

    Donnez un nom au plan, choisir où stocker la plan, par défaut dans OffersAndPlans et pour terminer, choisissez quelles seront les services disponibles pour le plan:

    image

    Dans mon cas, mon 1er plan comportera le réseau, le stockage et le compute. Il faut donc configurer les ressources maximum autorisé pour ce plan:

    image

    Vous pouvez voir les détails de votre plan dans la partie plan:

    image

    Il faut maintenant créer une offre pour nos clients. Cliquez sur New > Tenant Offers and Plans > Offer:

    image

    Donnez un nom et choisissez le plan que vous avez créé avant:

    image

    Nous allons rendre cette offre publique pour donner la possibilité à nos clients de souscrire à cette offre, et ainsi déployer des VMs, etc. Cliquez sur votre offre et Settings > Offer Settings > Public:

    image

    Nous allons maintenant créer le compte utilisateur pour notre client. Allez dans votre Azure AD, et ajoutez un nouvel utilisateur avec les permissions User. Connectez vous pour changer son mot de passe:

    image

    Allez sur https://portal.azurestack.local et connectez-vous avez le compte créé précédemment:

    image

    image

    Cliquez sure Get a Subscription. Donnez un nom et choisissez la suscription que nous avons créé précédemment:

    image

    Nous avons maintenant un suscription:

    image

    Nous allons maintenant déployer notre première machine virtuelle sur Azure Stack Sourire Cliquez sur New > Compute > Windows Server 2012 R2 Datacenter:

    image

    Remplissez les informations comme si vous étiez dans Azure:

    image

    image

    image

    image

    Une fois le déploiement terminé, vous pouvez voir votre nouveau groupe de ressource, votre nouveau réseau et votre nouveau stockage:

    image

    image

    image

    Et surtout, votre machine virtuelle Sourire

    image

    Et d’un point de vue administrateur:

    image

    Et en me connectant à la VM:

    image

    Amusez-vous bien Sourire

    • 31/1/2016
  • [Azure Stack] Installation de la TP1

    Le 29 Janvier 2016, Microsoft a rendu disponible la première version de Azure Stack, TP1. Vous pouvez la télécharger ici et trouver la documentation ici.

    Dans cet article, je vais vous expliquer comment déployer cette première version de Azure Stack.

    Pour commencer, assurez vous d’avoir les prérequis suivant au niveau du hardware:

    Si votre serveur n’a pas autant de mémoire, vous ne passerez pas les prérequis. Je vous conseille donc de suivre cet excellent tutoriel pour bypasser ce check.

    Au niveau de l’architecture, l’installateur va déployer plusieurs VMs, et l’architecture finale sera la suivante:

    Vous allez donc avoir 9 VMs, qui sont les suivantes:

    Nom de la VM Ressources Services
    ADVM 4 vCPU / 4096 GB RAM AD / DNS / DHCP
    ACSVM 4 vCPU / 8192 GB RAM ACS Services
    BGPVM 2 vCPU / 4096 GB RAM BGP
    MuxVM 2 vCPU / 4096 GB RAM SLB Mux
    NCVM 2 vCPU / 4096 GB RAM Network Controller
    NATVM 2 vCPU / 4096 GB RAM NAT
    xRPVM 8 vCPU / 8192 GB RAM Compute RP / Network RP / Storage RP
    SQLVM 4 vCPU / 4096 GB RAM SQL
    PortalVM 4 vCPU / 6144 GB RAM Portal Services / ARM
    ClientVM 2 vCPU / 4096 GB RAM Client

    Assurez-vous ensuite d’avoir un compte Global Admin sur Azure AD et d’avoir changé son mot de passe:

    SNAGHTML2e4d2565

    Sur un serveur qui dispose au moins de 4 disques de 250 GB minimum, téléchargez Azure Stack. Une fois le téléchargement terminé, vous devez créer un dossier nommé AzureStack à la racine du C:\ et y extraire les fichier dedans, en exécutant Microsoft Azure Stack POC.exe après l’avoir extrait:

    image

    Une fois ceci terminé, faites une copie du VHDX WindowsServer2016Datacenter.vhdx et renommez le en MicrosoftAzureStackPOCBoot.vhdx:

    image

    Maintenant, montez le VHDX en double cliquant dessus et exécutez la commande suivante:

    bcdboot <your letter>:\Windows

    image

    Redémarrez le serveur. Il devrait démarrer sur ce nouveau VHDX. Faites la configuration de base et donnez un mot de passe:

    image

    Une fois l’hôte démarré, donnez lui une adresse IP qui peut accéder à Internet, ceci est très important pour le déploiement:

    image

    Il est maintenant temps de lancer l’installation de Azure Stack. Pour ce faire, ouvrez une fenêtre PowerShell et déplacez vous dans le dossier qui contient le script DeployAzureStack.ps1. Ici, exécutez la commande suivante:

    .\DeployAzureStack.ps1 -NATVMStaticIP 172.X.X.X/24 -NATVMStaticGateway 172.X.X.1 –Verbose

    image

    Vous pouvez voir que j’utilise les 2 paramètres –NATVMStaticIP et –NATVMStaticGateway car je n’ai pas de serveur DHCP dans mon LAB. Il est très important que ce réseau est accès à Internet. Le déploiement commence, avec le nom de domaine azurestack.local. Plusieurs questions vous seront poser, comme le mot de passe administrateur du serveur (1), le compte Azure AD que vous avez créez précédemment (2), quel Azure Directory vous souhaitez utiliser (3) et Si vous voulez installer Azure Stack (quelle question Sourire (4)). L’installation est en cours:

    image

    Ce déploiement dur approximativement 2h. Une fois l’installation terminée vous aurez le message suivant:

    image

    Maintenant, pour vous connecter à l’interface d’administration de Azure Stack, allez sur le bureau de votre serveur. Vous devriez avoir un raccourci pour vous connecter sur la VM client. Connectez vous à celle ci:

    image

    Connectez-vous au portail en utilisant le raccourci sur le bureau, Microsoft Azure Stack POC Portal.url avec l’utilisateur Global Admin de votre Azure AD:

    image

    Vous avez maintenant accès à Azure Stack sur votre VM:

    image

    Dans un prochain article, je vous montrerai comment créer un plan, etc. Sourire

    • 31/1/2016
  • [SCOM 2012 R2] Installer et configurer le Management Pack Azure

     

    En Octobre, Microsoft a publié un Management Pack (en Technical Preview) pour superviser une ou plusieurs suscription Azure (ARM est aussi monitoré). Vous pouvez télécharger ce Management Pack ici: https://www.microsoft.com/en-us/download/details.aspx?id=50013

    La liste de tous ce qui est “supervisable” est disponible dans la documentation.

    Pour commencer, importez le Management Pack dans SCOM après l’avoir installé:

    MP01

    L’import est terminé:

    MP02

    Maintenant, allez dans Azure AD et créez un nouveau compte, que vous allez utiliser pour superviser votre suscription Azure:

    MP03

    MP04

    MP05

    Ajoutez ce compte en tant qu’administrateur de la suscription à superviser:

    MP06

    Retournez dans SCOM et allez dans Administration > Microsoft Azure. Cliquez sur Add Subscription:

    MP07

    Renseignez le username/password que vous avez créé dans Azure AD:

    MP08

    Choisissez la suscription que vous souhaitez superviser:

    MP09

    Choisissez depuis quel pool vous voulez superviser Azure et ajoutez un proxy si besoin:

    MP10

    La suscription est maintenant enregistrée:

    MP11

    Vous pouvez ajouter plusieurs suscriptions. Maintenant, allez dans Authoring > Microsoft Azure Monitoring et créez un nouveau monitoring:

    MP12

    Donnez un nom et choisissez un Management Pack où les overrides seront stockés:

    MP13

    Choisissez la suscription ajoutée précédement et confirmez le mot de passe du compte Azure AD:

    MP14

    Sélectionnez quels services vous souhaitez superviser:

    image

    Si vous souhaitez ne pas superviser une VM en particulier par exemple, vous pouvez l’exclure directement ici:

    image

    Sélectionnez le moniteur que vous souhaitez superviser:

    image

    Votre suscription Azure est maintenant supervisée:

    image

    Après quelques secondes, vous pourrez voir les premières alertes/informations concernant votre suscription:

    image

     

    Vous pouvez superviser plusieurs suscriptions en même temps, ajouter/supprimer des compteurs, etc. Ce Management Pack est très intéressant pour avoir une vue rapide sur votre environnement Azure Sourire

    • 28/1/2016
  • [StarWind] Hyper-V Cluster with StarWind Virtual SAN

    Starwind présente un nouveau Webinar concernant son produit Virtual SA, avec Hyuper-V Cluster cette fois-ci:

    Minimalistic Configuration of 2-Node Fault-Tolerant Hyper-V Cluster with StarWind Virtual SAN

    28 January, 2 pm CET

    Host: Vladislav Karaiev, Solution Engineer, StarWind

    Follow step-by-step configuration of StarWind minimalistic 2-node Hyper-V cluster for your hyper-converged infrastructure. Our live demo will help you to create completely fault-tolerant virtual shared storage and achieve uncompromised performance. Join our session and discover how to prevent all possible kinds of outages with StarWind Virtual SAN.

    *Virtualize responsibly!

      Pour vous enregistrer: https://www.starwindsoftware.com/registration-for-the-tap-room

    • 27/1/2016
  • [SC 2012 R2] Dimensionner votre Private Cloud

    Je viens de publier sur TechNet un fichier Excel qui va vous permettre de dimensionner et de créer votre environnement Windows Azure Pack, en haute disponibilité.

    Vous trouverez dans ce document:

    • Le nombre de VMs à déployer
    • Les produits à installer
    • Les comptes de services à utiliser
    • Etc.

    Cet environnement est de type Microsoft COSN.

    Vous pourrez le télécharger/noter ici: https://gallery.technet.microsoft.com/Sizing-of-your-Private-e480d509

    Si vous avez des remarques/commentaires, n’hésitez pas à me le faire savoir Sourire

    • 27/1/2016
  • [AD] Install-ADServiceAccount : Cannot Install service account. Error Message: ‘{Access Denied}

    Aujourd’hui, en faisant un test concernant l’utilisation de gMSA (Group Managed Service Accounts), je suis tombé sur l’erreur suivante au moment d’exécuter ma commande PowerShell Install-ADServiceAccount:

    PS C:\Windows\system32> Install-ADServiceAccount "svc-webservice"
    Install-ADServiceAccount : Cannot install service account. Error Message: '{Access Denied}
    A process has requested access to an object, but has not been granted those access rights.'.
    At line:1 char:1
    + Install-ADServiceAccount "svc-webservice"
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : WriteError: (svc-webservice:String) [Install-ADServiceAccount], ADException
        + FullyQualifiedErrorId : InstallADServiceAccount:PerformOperation:InstallServiceAcccountFailure,Microsoft.ActiveD
       irectory.Management.Commands.InstallADServiceAccount

    image

    Mon compte ordinateur était bien dans un groupe que je venais de créer et j’avais bien utilisé PrincipalsAllowedToRetrieveManagedPassword  avec mon nouveau groupe pour assigner l’utilisation de ce compte.

    Après quelques recherches, je suis tombé sur ce poste qui indique que si vous utilisez un groupe de sécurité avec le paramètre PrincipalsAllowedToRetrieveManagedPassword  vous devez redémarrer le server pour récupérer la mise à jour du groupe.

    J’ai donc redémarré mon serveur et j’ai pu rajouter mon compte de service à l’ordinateur:

    image

    • 26/1/2016
  • [Azure Stack] Préparez votre environnement

    stack1

    Microsoft a rendu public (un cadeau de noël avant l’heure Sourire ) hier la configuration minimum que vous devrez posséder lors de la mise en place du POC pour Azure Stack:

    Component Minimum Recommended
    Compute: CPU

    Dual-Socket: 12 Physical Cores

    Dual-Socket: 16 Physical Cores

    Compute: Memory

    96 GB RAM

    128 GB RAM

    Compute: BIOS

    Hyper-V Enabled (with SLAT support)

    Hyper-V Enabled (with SLAT support)

    Network: NIC Windows Server 2012 R2 Certification required for NIC; no specialized features required Windows Server 2012 R2 Certification required for NIC; no specialized features required
    Disk drives: Operating System

    1 OS disk with minimum of 200 GB available for system partition (SSD or HDD)

    1 OS disk with minimum of 200 GB available for system partition (SSD or HDD)

    Disk drives: General Azure Stack POC Data 4 disks. Each disk provides a minimum of 140 GB of capacity (SSD or HDD). 4 disks. Each disk provides a minimum of 250 GB of capacity.

    Il vous faudra donc un serveur plutôt puissant pour installer la bête, donc la date de la première preview n’a pas encore été indiquée.

    Plus d’informations : http://blogs.technet.com/b/server-cloud/archive/2015/12/21/microsoft-azure-stack-hardware-requirements.aspx

    En attendant Azure Stack, je vous souhaite de joyeuses fêtes de fin d’année.

    • 22/12/2015
  • [Starwind] Conférence Get All-Flash Performance from a Disk with StarWind LSFS Technology

    15dec

    StarWind présente aujourd’hui un webinar sur comment récupérer les performance Flash depuis un disque avec la technologie LSFS de Starwind. La description est la suivante:

    Get All-Flash Performance from a Disk with StarWind LSFS Technology

    Speaker: Max Kolomyeytsev, Product Manager, StarWind Software.

    15 December, 11 am PT / 2 pm ET

    It's common to think that the only way to get high-performance storage is an all-flash array. However, those are real budget-killers. Is there another way to achieve the desired performance without breaking the bank? As a matter of fact, there is. With StarWind Log-Structuring technology, you can unchain inexpensive spindle drives to achieve the performance even better than some all-flash arrays could provide.

    If you think it's impossible and we're exaggerating, join our webinar. We'll show how to get sky-high performance in your virtualized storage without spending a fortune.

    Pour vous enregistrer:

    https://www.starwindsoftware.com/registration-for-the-webinar

    • 15/12/2015
  • [StarWind] Virtual SAN: Minimalistic 2-node HyperСonverged Setup for VMware conférence

    StarWind va présenter un évènement pour configurer step-by-step StarWind Virtual San avec 2 nœuds HyperConverged sur VMware. Cette évènement aura lieu Jeudi 10 Décembre à 14h. Voici les informations:

    StarWind Virtual SAN: Minimalistic 2-node HyperСonverged Setup for VMware

    10 December, 11 am PT / 2 pm ET

    Follow step-by-step configuration of StarWind Virtual SAN 2-node hyperconverged in VMware environment. Watch StarWind together with LSFS (Log-Structured File System) in action and how they fight I/O Blender and boost virtual storage performance.

    Vous pouvez vous enregistrer directement sur ce lien: https://www.starwindsoftware.com/registration-for-the-tap-room

    • 8/12/2015
  • [SCOM 2012 R2]: Error 2200: Unable to register the Advisor Service avec OMS

    OMS.png-320x240

    Ce matin j’ai essayé de connecter mon SCOM à OMS. J’ai donc suivi une procédure sur TechNet pour ceci et j’ai eu l’erreur suivante:

    Error 2200: Unable to register to Advisor Server. Please contact the system Administrator.

    SNAGHTML2744cebc

    Après investigation, il s’avère qu’au moment de la mise à jour vers UR8, les nouveaux MP ne sont pas importés. Je les ai donc importés. La source de ces nouveaux MP sont dans C:\Program Files\Microsoft System Center 2012 R2\Operations Manager\Server\Management Packs for Update Rollups. Les MPs suivant on été importé:

    • Microsoft.SystemCenter.Advisor.Internal.mpb
    • Microsoft.SystemCenter.Advisor.mpb
    • Microsoft.SystemCenter.Advisor.Resources.ENU.mpb
    • Microsoft.SystemCenter.Visualization.Library.mpb

    imageimage

    Quand c’est terminé, fermez la console SCOM et réouvrez la. Vous verrez que le nom a changé en Operations Management Suite et plus en Advisor:

    image

    Vous pouvez maintenant effectuer la connexion vers OMS:

    SNAGHTML274901df

    • 3/12/2015
  • [Azure] Active Directory Domain Services

    azure-active-directory

    Une nouveauté de Azure est la possibilité de pouvoir utiliser Azure Active Directory comme Domain Services. C’est à dire, que vos Domain Controller seront hébergés et gérés directement par Microsoft.

    Azure AD DS est encore en Preview et est disponible (à l’heure de l’écriture de ce poste) dans une grosse partie des régions:  https://azure.microsoft.com/en-us/regions/

    J’ai utilisé le domaine onmicrosoft.com mais vous pouvez utiliser un domaine personalisé, et vérifé. J’ai créé un groupe nommé AAD DC Administrators (le nom est très important) pour les administrateurs du domaine et ajouté des utilisateurs dedans. Maintenant, pour créer votre Azure AD, allez dans Configure > Domain Services et cliquez sur Yes. Choisissez votre nom de domaine pour votre AD ainsi que le réseau auquel les AD vont se connecter (Azure en créait 2):

    SNAGHTML4f95052

    Après une trentaine de minute, vous pourrez apercevoir une première IP, la suivante arrivera un peu plus tard:

    SNAGHTML843b0c2

    Récupérez les et allez dans votre réseau virtuel,  Configure. Ici, renseignez vos 2 IPs adresses, qui serviront de DNS:

    SNAGHTML845efb6

    Si vous souhaitez administrer ceci en GUI, c’est tout à fait possible. Déployez une VM qui sera jointe au domaine Azure et installez les features Group Policy Management ainsi que AD DS Tools.

    En lançant la console Active Directory Domain Services, vous pouvez vous apercevoir que vous pouvez gérer (avec des limitations) les ordinateurs et les groupes/utilisateurs (impossible de créer des objets ici, vous devez passer par la console Azure):

    SNAGHTML84d055fSNAGHTML84d20b7

    Si vous lancez la console Group Policy Management, vous pourrez créez, supprimer, modifier les GPO de votre domaine.

    Cette nouveauté est quand même très utile dans le cas d’une nouvelle entreprise qui n’aurait pas les moyens de se payer des serveurs au début, et tout ce que ça entraine, sans pour autant ne pas avoir d’Active Directory, pour Office 365 par exemple. Concernant les tarifs, vous devez compter dans les 32€/mois pour moins de 5000 objets (Comptes, Groupes & Ordinateurs): https://azure.microsoft.com/en-us/pricing/details/active-directory-ds/

    • 27/11/2015
  • [SCOM 2016 TP4] Superviser un Nano Server

    Microsoft a rendu disponible la dernière version du Nano Server, la Technical Preview 4. Cette TP4 a également été rendu disponible pour System Center et donc, SCOM. Dans cette dernière version de SCOM, il y a maintenant la possibilité de superviser un Nano Server.

    Je vais donc vous expliquer comment mettre en place cette solution de supervision, en m’aidant de ce poste.

    En utilisant ce nouvel agent, vous aurez la possibilité de superviser uniquement la partie Failover Cluster ainsi que le Windows Server. Le reste ne fonctionne pas encore et arrivera surement dans les prochaines versions.

    Le seul paquet indispensable pour pouvoir faire tourner l’agent sur un Nano Server est Microsoft-OneCore-ReverseForwarders-Package.cab.

    Une fois que le Nano Server fonctionne, il vous faut copier les sources de cet agent (qui se trouvent à la racine de l’ISO SCOM TP4), sur un serveur, dans mon cas, C:\Temp\NanoAgent\. Ouvrez ensuite une console PowerShell et déplacez vous dans le fichier où se trouve les sources, jusqu’au script InstallNanoServerScomAgentOnline.ps1:

    image45

    Pour installer l’agent, vous devez maintenant utiliser la commande suivante:

    .\InstallNanoServerScomAgentOnline.ps1 -ManagementServer <<Management Server Name FQDN>> -ManagementGroupName <<Management Group Name>> -NanoServerFQDN <<Nano server FQDN on which the agent will be installed>> -BinaryFolder <<Nano Server bits location (\NanoAgent\NanoServer)>>

    Ce qui pour moi, donne ceci:

    .\InstallNanoServerScomAgentOnline.ps1 -ManagementServer DEVO-OM02.devoteam.lab -ManagementGroupName DEVOTP4 -NanoServerFQDN NANOIIS01.devoteam.lab -BinaryFolder C:\Temp\NanoAgent

    image46

    Maintenant, connectez vous au Nano Server:

    Enter-PSSession -ComputerName nanoiis01.devoteam.lab

    image47

    L’agent SCOM est normalement arrêté:

    Get-Service –Name HealthService

    image48

    Pour le démarrer, utilisez les commandes suivantes:

    Start-Service –Name HealthService

    Get-Service –Name HealthService

    image49

    Maintenant que le service est démarré, il faut l’accepter dans SCOM (sauf si vous approuvez automatiquement les agents qui essayent de se connecter). Aller dans Administration > Device Management > Pending Management:

    image50

    Une fois accepté, après quelques minutes, on peut voir que le status du serveur est “UP”:

    image52image53

    Si j’éteins le Nano Server, les alertes remontent:

    image54

    Bon courage Sourire

    • 22/11/2015
  • [SCVMM 2016 TP3] Convertir un standard switch en logical switch

    scvmm_logo

    Pendant la migration de mon lab vers Windows Server 2016 TP3 et System Center 2016 TP3, j’ai découvert une nouvelle fonctionnalité dans SCVMM qui permet de convertir un standard switch en logical switch. Cette feature est très intéressante parce que si vous souhaitez faire ceci de façon manuelle, vous devez changer le switch utiliser par chaque VM manuellement, etc.

    La première étape est d’avoir vos logical network prêt:

    image34 (1)

    Récupérez ensuite le nom et la bande passante de votre standard switch. Vous devez utiliser le même nom pour votre logical switch ainsi que le même minimum pour la bande passante:

    image35

    Nous pouvons maintenant créer le nouveau logical switch, qui sera utilisé pour la conversion. Donnez le nom même nom que le standard switch et choisissez si ce sera un teaming ou non:

    image36

    Choisissez ensuite la bande passante que vous avez récupéré sur le standard switch:

    image37

    Dans la partie Extensions, vous pouvez garder les valeurs par défaut. Dans la partie Virtual Port, vous pouvez adapter ou garder par défaut:

    image38

    Pour la partie Uplinks, vous pouvez créer un nouvel uplink ou en utiliser un existant. Je vais en créer un nouveau dans mon cas. Une nouveauté aussi est la possibilité de pouvoir pré-créer les network adapter virtuels:

    image39

    Validez la création du logical switch:

    image40

    Quand la création est terminée, allez dans la configuration de votre Hyper-V. Dans la partie Hardware, vérifiez que tous les réseaux qui sont dans le logical switch sont cochés:

    image41

    Validez et revenez sur votre Hyper-V. Dans la partie Virtual Switches, vous pouvez maintenant sélectionner Convert to Logical Switch:

    image42

    Une nouvelle fenêtre s’ouvre pour vous demander le logical switch qui va être utilisé, ainsi que sont uplink:

    image43

    Après quelques secondes, votre standard switch est converti en logical switch:

    image44

    Vous devez donc répéter cette option sur tous les switches de tous vos Hyper-V qui se trouvent sur le même cluster Sourire

    • 6/11/2015
  • [Azure] Récupérer les logs d’un site web

    microsift-azure

    La semaine dernière, j’ai essayé de déployer un site web sur la plateforme Azure Websites. Le déploiement c’est bien déroulé, mais quand je suis arrivé sur la page web, je me suis retrouvé avec l’erreur suivante:

    image26

    Pour trouver où se situe le problème, j’ai besoin de récupérer les logs du serveur IIS. Grace à cet article MSDN, j’ai pu trouver comment récupérer les logs via FTP. Je vais vous expliquer comment faire ceci.

    Pour commencer, connectez-vous sur https://portal.azure.com et naviguez dans votre application web:

    SNAGHTML1e8214ad

    Allez dans Deployment credentials et choisissez un nom d’utilisateur unique. Cliquez sur Save:

    image27

    Maintenant, déplacez vous dans la partie Diagnostics logs. Dans cette partie, vous avez les informations pour connecter votre client FTP à ce site. Vous pouvez également choisir les logs que vous souhaitez activer/désactiver:

    image28

    Ouvrez votre client FTP (Filezilla pour moi) et fournissez les informations que vous avez récupéré précédemment. N’oubliez pas de renseigner le nom du site devant votre utilisateur:

    image29

    Une fois connecté, vous avez accès à ces 3 dossiers:

    image30

    Si vous allez dans le dossier site > root, vous verrez votre déploiement IIS:

    image31

    Comme je recherche les logs, je me déplace dans le dossier LogFiles à la racine du site. Ici se trouve un fichier eventlog.xml. Ce fichier contient les logs extraient du journal d’évènement du server où est exécuté le site web. Ouvrez-le:

    image32 

    J’ai parcouru chaque balise <data> jusqu’à trouver l’évènement suivant:

    <Event><System><Provider Name=”ASP.NET 4.0.30319.0″/><EventID>1310</EventID><Level>2</Level><Task>0</Task><Keywords>Keywords</Keywords><TimeCreated SystemTime=”2015-10-30T11:31:22Z”/><EventRecordID>200681015</EventRecordID><Channel>Application</Channel><Computer>RD000D3A22D7A5</Computer><Security/></System><EventData><Data>3007</Data><Data>A compilation error has occurred.</Data><Data>10/30/2015 11:31:22 AM</Data><Data>10/30/2015 11:31:22 AM</Data><Data>8f0c8ce90d1e452dbe8957048d3c26f8</Data><Data>8</Data><Data>1</Data><Data>0</Data><Data>/LM/W3SVC/367992338/ROOT-3-130906782805054017</Data><Data>Full</Data><Data>/</Data><Data>D:\home\site\wwwroot\</Data><Data>RD000D3A22D7A5</Data><Data></Data><Data>7728</Data><Data>w3wp.exe</Data><Data>IIS APPPOOL\scugbe</Data><Data>HttpCompileException</Data><Data>(0): error CS1617: Invalid option ‘6’ for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default

    at System.Web.Compilation.AssemblyBuilder.Compile()
    at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
    at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
    at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
    at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
    at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
    at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
    at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
    at System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path)
    at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)

    </Data>

    Le problème ici est clairement mon paramètre /langversion dans mon fichier Web.config. Il a une valeur de 6, qui n’est pas valide avec ce type de déploiement.

    Le paramètre doit clairement avoir une des valeurs suivantes : ISO-1, ISO-2, 3, 4, 5 or Default. J’ai donc modifié dans mon Web.config la valeur à 5 et j’ai redéployé mon site web. Après avoir rafraichi la page, je n’ai plus eu d’erreur:

    image33

    Cette fonctionnalité est très utile pour débugger un programme ou une application web Sourire

    • 3/11/2015
  • [Azure] Exécuter un runbook Azure Automation depuis un site web ASP.NET

    image_thumb_73620556

    Après mon premier article sur comment exécuter un script PowerShell depuis un site web ASP.NET, je vais vous expliquer comment exécuter un runbook qui se trouve sur Azure Automation au travers d’un site web ASP.NET, stocké sur une WebApp Azure.

    Pour implémenter ceci, j’ai utilisé la fonctionnalité WebHook de Azure Automation. J’ai utilisé cet article pour comprendre son fonctionnement.

    Dans mon exemple, le site web donnera la possibilité à un employé de démarrer/arrêter une VM Azure. Suivez au début cet article pour avoir le runbook Connect-AzureSubscription.ps1 fonctionnel.

    Pour démarrer, créez 2 nouveaux runbooks dans Azure Automation. Je vais les appeler Start-AzureVM et Stop-AzureVM. Ils contiendront les scripts suivants:

    Start-AzureVM:

    param (
    [object]$WebhookData
    )

    if ($WebhookData -ne $null) {

    $azureVMName = $WebhookData.RequestBody

    .\Connect-AzureSubscription.ps1

    $azureVM = Get-AzureVM | Where-Object {$_.Name -eq $azureVMName}
    Start-AzureVM -Name $azureVM.Name -ServiceName $azureVM.ServiceName
    Write-Output “The VM $azureVMName is now started”

    } else {

    Write-Error “Runbook mean to be started only from webhook.”

    }

    Stop-AzureVM:

    param (
    [object]$WebhookData
    )

    if ($WebhookData -ne $null) {

    $azureVMName = $WebhookData.RequestBody

    .\Connect-AzureSubscription.ps1

    $azureVM = Get-AzureVM | Where-Object {$_.Name -eq $azureVMName}
    Stop-AzureVM -Name $azureVM.Name -ServiceName $azureVM.ServiceName -Force
    Write-Output “The VM $azureVMName is now stopped”

    } else {

    Write-Error “Runbook mean to be started only from webhook.”

    }

    Quand cette étape est terminée, allez dans le runbook Start-AzureVM et clicquez sur WebHook. Donnez un nom, choisissez si vous voulez l’activer ou non, choisissez une date d’expiration pour ce webhook et copier l’URL dans un endroit sécurisé. Ceci est très important, parce que après avoir cliqué sur OK, ce lien ne sera plus disponible:

    image

    Dans la partie Parameters, cliquez sur OK:

    image1

    Cliquez sur Create pour créer votre Webhook:

    image2

    Répétez cette manipulation pour le runbook Stop-AzureVM.

    Il est maintenant temps de créer la page web ASP.NET qui permettra de démarrer/arrêter la VM Azure. Dans Visual Studio, créez une nouvelle Web App ASP.NET avec un modèle vide. Quand la création est terminée, ajoutez une page de type Web Form, qui se nommera Default.aspx. Collez le code suivant:

    <%@ Page Language=”C#” AutoEventWireup=”true” CodeBehind=”Default.aspx.cs” Inherits=”StartStop_AzureVM.Default” %>

    <!DOCTYPE html>

    <html xmlns=”http://www.w3.org/1999/xhtml”>
    <head runat=”server”>
    <title>Start/Stop an Azure VM</title>
    </head>
    <body>
    <form id=”form1″ runat=”server”>
    <div>
    <img src=”Sources/SCUGBE.png” alt=”SCUGBE”/>
    </div>
    <div>
    <table>
    <tr><td><h1>Start/Stop an Azure VM</h1></td></tr>
    <tr><td><h3>Provide the name of the VM that you want to start or stop</h3></td></tr>

    <tr>
    <td>
    <asp:TextBox ID=”ServerName” runat=”server” TextMode=”SingleLine”></asp:TextBox>
    <asp:Button ID=”Start_VM” runat=”server” Text=”Start VM” Width=”200″ OnClick=”StartVM_Click” />
    <asp:Button ID=”Stop_VM” runat=”server” Text=”Stop VM” Width=”200″ OnClick=”StopVM_Click” />
    </td>
    </tr>

    <tr>
    <td>
    <asp:Label ID=”ConfirmationMessage” runat=”server”></asp:Label>
    </td>
    </tr>
    </table>
    </div>
    </form>
    </body>
    </html>

    Cette page vous donnera 2 boutons avec un champ à remplir. Ajoutez les références suivantes dans votre projet pour exécuter le code:

    • System
    • System.Data
    • System.Drawing
    • System.Web
    • System.Xml

    image3

    Ouvrez le fichier Default.aspx.cs et collez le code suivant:

    using System;
    using System.IO;
    using System.Net;
    using System.Text;

    namespace StartStop_AzureVM
    {
    public partial class Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void StartVM_Click(object sender, EventArgs e)
    {
    StartStop(“https://s2events.azure-automation.net/webhooks?token=”);
    ConfirmationMessage.Text = “The VM ” + ServerName.Text + ” is starting. Wait few minutes before trying to connect to it.”;
    ServerName.Text = string.Empty;
    }

    protected void StopVM_Click(object sender, EventArgs e)
    {
    StartStop(“https://s2events.azure-automation.net/webhooks?token=”);
    ConfirmationMessage.Text = “The VM ” + ServerName.Text + ” is stopping.”;
    ServerName.Text = string.Empty;
    }

    private void StartStop(string webHookUri)
    {
    var http = (HttpWebRequest)WebRequest.Create(new Uri(webHookUri));
    http.Accept = “application/json”;
    http.ContentType = “application/json”;
    http.Method = “POST”;

    string parsedContent = ServerName.Text;
    ASCIIEncoding encoding = new ASCIIEncoding();
    Byte[] bytes = encoding.GetBytes(parsedContent);

    Stream newStream = http.GetRequestStream();
    newStream.Write(bytes, 0, bytes.Length);
    newStream.Close();

    var response = http.GetResponse();

    var stream = response.GetResponseStream();
    var sr = new StreamReader(stream);
    }
    }
    }

    Dans l’appel StartVM_click et StopVM_click, remplacez les valeurs que vous avez copié durant la création du webhook. Suivant sur quel bouton vous allez cliquer, vous allez appeler la fonction correspondante, avec la bonne URL du webhook, et donc vous contacterez le bon runbook.

    Ouvrez le fichier  Web.config pour modifier la cause de l’erreur sur Azure WebSite. Modifiez compilerOptions=”/langversion:6 by compilerOptions=”/langversion:5. Ceci correspond à la version de compilation du Framework:

    image4

    Vous pouvez compiler le projet. Vous devriez avoir ceci:

    image5

    Notre site web est maintenant prêt. Nous allons créer un nouveau site sur Azure, basé sur un plan gratuit. Sur https://portal.azure.com ouvrez Web Apps et cliquez sur Add. Choisissez un nom pour votre site et, sur App Server Platofrm, créez un nouvel App Service. J’utiliserai le prix gratuit:

    image6

    Je peux maintenant me rendre sur ma nouvelle URL:

    image7

    Il est temps de publier mon site web sur la Web App Azure, via Visual Studio. Dans Visual Studio, cliquez sur Build > Publish …:

    image8

    Choisissez Microsoft Azure Web Apps:

    image9

    Connectez vous avec votre utilisateur Azure où est la nouvelle Web App. Choisissez la Web App où déployer le site web. Comme je suis dans une version gratuite, je ne peux pas utiliser les slot de déploiement (prod/dev par exemple. Cette fonctionnalité est seulement disponible à partir du plan standard):

    image10

    Vous pouvez valider la connexion:

    image11image12image13

    Mon site est maintenant déployé sur la nouvelle Web App:

    image14

    Si j’essaie de démarrer une VM, je vais avoir ceci:

    image15

    Le tâche d’automatisation est directement démarrée:

    image16

    Si vous allez dans la partie Input, vous pourrez voir quel Runbook a été appelé ainsi que le paramètre qu’il a reçu:

    image17

    La tâche est terminée et la VM est en cours de démarrage:

    image18image19

    Et si j’arrête une VM:

    image20image21image22SNAGHTML1e52b50d

    Parce que le site est public, je vais activer l’authentification Azure. Sur la Web App, dans  Authentication / Authorization, choisissez ON et sélectionnez  une nouvelle application. Cliquez sur Save:

    SNAGHTMLf24e896

    Rendez-vous sur votre site web. Vous allez être redirigé vers une page d’authentification:

    image23

    Je vais me connecter avec un compte qui n’est pas dans le répertoire de Azure AD. J’ai le message d’erreur suivant:

    image24

    Je vais me déconnecter et me reconnecter avec un compte qui est dans l’Azure AD. La page web s’affiche correctement:

    image25

    • 2/11/2015
  • [PowerShell] Compresser et décompresser

    PowerShell logo

    Une nouveauté de PowerShell 5 est le fait de pouvoir compresser et décompresser des fichiers, en PowerShell. Sur mon Windows 10, PowerShell 5 est natif:

    image87

    Si vous tapez la commande Get-Module –ListAvailable, vous pourrez voir qu’un nouveau module a fait son apparition, Microsoft.PowerShell.Archive:

    image88

    Ce nouveau module contient 2 commandes, Compress-Archive et Expand-Archive:

    image89

    Nous allons donc tester ceci en compressant 1 fichier. Je vais utiliser la commande suivante pour compresser un fichier qui se trouve sur mon bureau:

    Compress-Archive -Path C:\Users\flore\Desktop\IP.bat -DestinationPath C:\Users\flore\Desktop\IP.zip -CompressionLevel Fastest

    image90

    Vous avez 3 niveaux de compression disponibles:

    • Fastest
    • NoCompression
    • Optimal

    Pour décompresser un fichier, utilisez la commande suivante:

    Expand-Archive -Path C:\Users\flore\Desktop\IP.zip -DestinationPath C:\Users\flore\Downloads\

    image92

    Vous pouvez utiliser le paramètre –Force pour écraser les fichiers.

    Si vous voulez compresser plusieurs fichiers, il vous suffit de récupérer le contenu de ce dossier et de le comprésser:

    Get-ChildItem -Path C:\Users\flore\Downloads\WS | Compress-Archive -DestinationPath C:\Users\flore\Downloads\WS.zip -CompressionLevel Optimal

    image93

    • 30/10/2015
  • [Azure]Implémenter un Hybrid Worker avec Azure Automation

    AzureAutomation

    Avec Azure Automation, il est possible d’exécuter des scripts dans votre Datacenter, directement depuis Azure. Dans cet article, je vais vous expliquer comment mettre en place cette solution, en exécutant un script qui va vérifier l’état d’un service OMS sur une serveur spécifique et le redémarrer si il est arrêté.

    Le principe d’un runbook Hybrid Worker est d’installer un agent directement sur une machine qui est dans votre Datacenter et d’envoyer les actions depuis Azure sur votre machine.

    La première étape pour faire ceci est de créer un compte Operations Management Suite (OMS). Connectez-vous sur https://www.microsoft.com/oms et créez un nouveau Workspace. Donnez un nom, choisissez une région et donnez une adresse email:

    image74

    Si vous avez plusieurs suscriptions liées à votre compte, choisissez la suscription où vous voulez lier votre workspace OMS:

    image310

    Maintenant que OMS est disponible, allez dans Solutions Gallery et choisissez Automation:

    image610

    Cliquez dessus et choisissez Add pour ajouter un compte d’automatisation sur l’interface OMS:

    image91

    Le plugin est maintenant disponible:

    image121

    Cliquez dessus pour le configurer. Choisissez le compte d’automatisation de votre suscription que vous voulez lier à OMS:

    image151

    Après quelques secondes, vous verrez le nombre de runbook et le nombres de jobs du compte d’automatisation:

    image181

    Il faut maintenant installer l’agent OMS sur un serveur dans votre Datacenter (qui doit être connectez à Internet). J’ai choisi un serveur qui exécute SMA pour installer l’agent. Pour télécharger l’agent, dans OMS, cliquez sur Settings et choisissez le type d’agent que vous voulez télécharger. Pour votre information, comme vous avez lié le compte d’automation à ce workspace, l’agent est différent de l’agent initial, qui  supervise seulement votre infrastructure:

    SNAGHTML3fb9cdf

    Lancez l’installation de l’agent:

    image75image76image77

    Choisissez Connect the agent to Microsoft Azure Operational Insights:

    image78

    Renseignez votre workspace ID et la clé que vous avez sur l’interface OMS, dans la partie Settings, où vous avez téléchargé le plugin:

    SNAGHTML3fd9237image79

    L’installation est terminée:

    image80

    Sur le serveur où l’agent est installé, vous pouvez vérifier que la partie Azure Automation a bien été installée, en regardant dans le dossier C:\Program Files\Microsoft Monitoring Agent\Agent\AzureAutomation si le dossier existe:

    image81

    Retournez dans OMS pour vois si le serveur est bien connecté:

    image82

    Nous allons maintenant donnez la possibilité à notre compte d’automatisation de lancer l’Hybrid Runbook. Pour faire ceci, exécutez le script PowerShell suivant sur le serveur où l’agent OMS a été installé:

    cd “C:\Program Files\Microsoft Monitoring Agent\Agent\AzureAutomation\7.2.7037.0\HybridRegistration”
    Import-Module HybridRegistration.psd1

    Add-HybridRunbookWorker –Name SCUGBE -EndPoint “URL -Token “Primary Access Key” –Verbose

    SNAGHTML4008671

    Pour remplir le script PowerShell précédant, vous aurez besoin des informations suivantes:

    SNAGHTML40156154

    Maintenant, vous pouvez exécuter vos Runbook qui ont besoin d’avoir un accès On-Premise, directement depuis Azure Automation. Pour vous montrer comment ça fonctionne, j’ai créé un nouveau runbook nommé Get-HealthService-Status avec 2 Assets, 1 Variable avec des noms de serveurs, séparés pas une “,” et 1 Credential avec un login/mot de passe qui est administrateur local de chaque serveur:

    image83SNAGHTML40624db

    Ci-dessous le code que j’exécute dans mon Runbook Azure PowerShell:

    $Servers = Get-AutomationVariable “ComputerName”
    $Cred = Get-AutomationPSCredential -Name ‘LocalAdmin’

    $Servers = $Servers.split(“,”);

    foreach($Server in $Servers){

    $service = Get-WmiObject -Class Win32_Service -ComputerName $Server -Filter “Name=’HealthService'” -Credential $Cred
    if ($service.state -eq “Stopped”){

    $service.StartService()
    Write-Output “The service HealthService is now running on computer $Server”

    } else {

    Write-Output “The service HealthService is already running on computer $Server”

    }
    }

    image84

    Publiez le et cliquez sur Start. Choisissez d’exécuter le runbook avec un Hybrid Worker et choisissez le groupe:

    image85

    Cliquez sur OK pour lancer l’exécution. Quand le job est terminée, allez dans la partie Output pour voir le résultat:

    image86

    Vous pouvez voir que sur le premier serveur, le service OMS est démarré, alors que sur le second, il a été démarré. C’est très intéressant de pouvoir voir si un service critique est démarré ou non, par exemple, toutes les heures, sans avoir SCOM et le redémarrer en cas de problème. Vous pouvez personnaliser ce script en envoyant un email par exemple si un service a été redémarré Sourire

    • 28/10/2015
  • [Azure] Créer votre premier Runbook PowerShell avec Azure Automation

    AzureAutomation

    Je vais aujourd’hui vous montrer comment créer un Runbook sur Azure Automation, avec PowerShell.

    Pour démarrer, j’ai une suscription Azure avec un Azure Active Directory lié:

    SNAGHTMLc2d20

    La première étape va être de créer un compte dans cet Azure AD pour exécuter le Runbook PowerShell sur Azure Automation. Ce compte est un utilisateur standard, mais il a les droits administrateur sur la suscription Azure, où le Runbook est exécuté:

    image60image61SNAGHTMLf7287image62

    Maintenant, déconnecter vous et connectez vous à Azure avec le nouvel utilisateur pour changer son mot de passe. Une fois terminé, naviguez avec votre compte, sur https://portal.azure.com et sélectionnez Automation Accounts:

    image63

    Cliquez sur Add et remplissez chaque champ:

    image64

    Quand le compte est créé, déplacez vous à l’intérieur et cliquez sur Assets. Cliquez ensuite sur Credentials > Add a credential pour ajouter un compte qui exécutera le runbook. Utilisez le nom d’utilisateur et le mot de passe du compte Azure AD que vous avez créé auparavant:

    image65

    Ajoutez ensuite des variables qui seront utilisées dans votre script PowerShell, dans mon cas, le nom des VMs:

    image66

    Créez également des planifications si vous voulez lancer automatiquement des runbooks:

    image67

    Quand vous avez terminé, retournez à la page d’accueil du compte et sélectionnez Runbooks:

    image68

    Créez un nouveau Runbook, avec le nom Connect-AzureSubscription et comme Runbook type, PowerShell. Ce runbook récupèrera les informations de connexion que l’on a créé plus tôt:

    image69

    Utilisez le script suivant, en adaptant le nom de la commande Get-AutomationPSCredential:

    $Cred = Get-AutomationPSCredential -Name ‘SCUGBECred’
    Add-AzureAccount -Credential $Cred

    Select-AzureSubscription -SubscriptionName “Free Trial”

    Cliquez sur Save puis sur Publish:

    image70

    Créez un nouveau runbook, et commez le Get-AzureVM. Collez le script suivant, en l’adaptant avec votre nom de variable:

    .\Connect-AzureSubscription.ps1
    $VMNames = Get-AutomationVariable -Name ‘VMName’
    $VMName = $VMNames.split(“,”);

    foreach($VM in $VMName){

    $serviceName = Get-AzureVM | Where {($_.Name -eq $VM)}
    $service = $serviceName.ServiceName
    $status = $serviceName.PowerState
    Write-Output “The VM $VM with service name $service is $status”

    }

    Sauvegardez. Vous pouvez essayer le script, via le Test pane:

    SNAGHTML6edc9d

    Comme vous pouvez le voir, le test est effectué sur les 2 VM que j’avais renseigné dans ma varibale VMName. Cliquez sur Publish pour publier le runbook pour qu’il puisse être utilisé. Vous pouvez également lié la planification créée précédemment:

    image71

    Après que l’heure de la tâche soit passée, votre script a dû s’exécuter. Allez dans Jobs pour voir si le job est terminé et vous pouvez cliquez sur Output pour avoir le résultat (si vous avez mis des logs ou autre):

    image72image73

    Cette nouvelle fonctionnalité est très intéressante dans le cas de VM de dev. Vous pouvez toutes les arrêter la nuit pour économiser de l’argent.

    • 27/10/2015
  • [PowerShell] Exécuter du PowerShell au travers d’un site ASP.NET

    PowerShell logo

    Je vais aujourd’hui vous expliquer comment exécuter un script PowerShell au travers d’un site web, en ASP.NET, avec des paramètres. Dans l’exemple que je vais vous présenter, l’utilisateur aura la possibilité de démarrer une VM qui se trouve sur Azure.

    L’interface finale ressemblera à ceci:

    image29

    Un des prérequis est d’avoir le fichier publishsettings de Azure pour votre suscription. Ouvrez une fenêtre PowerShell et importez le module Azure. Exécutez les commandes suivantes:

    Add-AzureAccount
    Select-AzureSubscription –SubscriptionId d9703db7-XXXXXX-XXXX-X-XXXX-XXXX
    Get-AzurePublishSettingsFile

    SNAGHTML47712f

    Une page web va s’ouvrir et va télécharger le fichier. Nous allons maintenant créer notre code ASP.NET, avec Visual Studio 2015. Créez un nouveau projet dans Visual Studio et choisissez ASP.NET Web Application:

    image30

    Choisissez le Template Empty:

    image31

    Dans la solution, créez un dossier où le script PowerShell sera stocké. Ajoutez à ce dossier le fichier publishsettings que vous avez téléchargé précédemment. Créez un nouveau script PowerShell et ajoutez y le code suivant:

    Param(
    [String]
    $VMName
    )
    Import-Module Azure
    Import-AzurePublishSettingsFile “C:\inetpub\Start-AzureVM\Sources\BizSpark-10-22-2015-credentials.publishsettings”
    $azureVM = Get-AzureVM | Where-Object {$_.Name -eq $VMName}
    Start-AzureVM -Name $azureVM.Name -ServiceName $azureVM.ServiceName

    image32

    Ajoutez ces 2 fichiers à Visual Studio:

    image33

    Créez maintenant une vue Web Form:

    image34

    Collez le code suivant pour ajouter:

    • Une text box
    • Un boutton
    • Un label

    <%@ Page Language=”C#” AutoEventWireup=”true” CodeBehind=”default.aspx.cs” Inherits=”Start_AzureVM._default” %>

    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

    <html xmlns=”http://www.w3.org/1999/xhtml” >
    <head runat=”server”>
    <title>Start an Azure VM</title>
    </head>
    <body>
    <form id=”form1″ runat=”server”>
    <div>
    <table>
    <tr><td><h1>Start an Azure VM</h1></td></tr>
    <tr><td><h3>Provide the name of the VM that you want to start</h3></td></tr>

    <tr>
    <td>
    <asp:TextBox ID=”ServerName” runat=”server” TextMode=”SingleLine”></asp:TextBox>
    <asp:Button ID=”ExecuteCode” runat=”server” Text=”Start VM” Width=”200″ OnClick=”ExecuteCode_Click” />
    </td>
    </tr>

    <tr>
    <td>
    <asp:Label ID=”ConfirmationMessage” runat=”server”></asp:Label>
    </td>
    </tr>
    </table>
    </div>
    </form>
    </body>
    </html>

    Ouvrez maintenant le fichier .cs et collez le code suivant pour:

    • Exécuter le script PowerShell avec le nom de la VM en paramètre
    • Ecrire un message de confirmation

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    namespace Start_AzureVM
    {
    public partial class _default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void ExecuteCode_Click(object sender, EventArgs e)
    {
    var SCRIPT_PATH = @”C:\inetpub\Start-AzureVM\PSScript\Start-AzureVM.ps1″;
    Process _Proc = new Process();
    _Proc.StartInfo.FileName = “Powershell.exe”;
    _Proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    _Proc.StartInfo.Arguments = @”” + SCRIPT_PATH + ” ‘” + ServerName.Text + “‘ “;
    _Proc.Start();

    ConfirmationMessage.Text = “The VM ” + ServerName.Text + ” is starting. Wait few minutes before trying to connect to it.”;
    ServerName.Text = string.Empty;
    }
    }
    }

    Ouvrez le fichier Web.config et changez le paramètre langversion de 6 à 5:

    image35

    Nous pouvons publier notre site web. Je vais déployer une nouvelle VM sur Azure pour fournir l’interface à nos utilisateurs. Cette VM contiendra:

    • IIS
    • Azure PowerShell module
    • Web Deploy 3.5
    • .Net Framework

    Je vais ajouter 2 endpoints de plus sur ma VM pour le HTTP et le Web Deploy:

    image36

    Quand la création est terminée, vous pouvez déployer le module Azure PowerShell et le Web Deploy 3.5 avec le Web Platform Installer:

    image37

    N’oubliez pas d’installer le Framework qui correspond à votre projet, dans mon cas 4.5.2.
    Pour IIS, installez le Web Server avec la feature ASP.NET 4.5:

    image38

    Vérifiez bien que le port 8172 est ouvert dans le firewall local de la machine:

    image39

    Ouvrez la console IIS Manager sur le serveur IIS et allez dans IIS Manager Users. Ajoutez un compte Windows qui a les droits de se connecter au serveur via le web deploy:

    image40

    Dans les paramètres du Web Deploy, cochez la case pour autoriser les connexions à distances, appliquez et démarrez le service:

    image41

    Créez maintenant un nouveau site (Start-AzureVM par exemple). Choisissez ensuite un pool d’application qui a les droits d’exécuter les scripts PowerShell:

    image42image59

    Sur le nouveau site, sélectionnez IIS Manager Permissions et autorisez un nouvel utilisateur:

    image43

    Retournez dans visual studio et cliquez sur Build > Publish Start-AzureVM:

    image44

    Choisissez où vous souhaitez publier votre site web:

    image45

    Choisissez la VM sur lequel le site web va être poussé:

    image46

    Fournissez les informations suivantes:

    • Le nom du serveur Azure et son port public
    • Le site sur lequel le website va être déployé
    • Un compte utilisateur qui a les droits d’utiliser le Web Deploy
    • L’URL pour accéder au site une fois que le wizard sera fermé (optionnel)

    image47

    Acceptez le certificat:

    image48

    Si vous avez l’erreur suivante:

    Could not connect to the remote computer (“iis01flo.cloudapp.net”).
    On the remote computer, make sure that Web Deploy is installed and that the required process (“The Web Management Service”) is started.

    The remote server returned an error: (404) Not Found.

    image49

    Allez dans le panneau de configuration et modifiez le logiciel Microsoft Web Deploy 3.5 et ajoutez toutes les features:

    image50

    Si tout est OK, vous devriez avec ceci:

    image51

    Choisissez ensuite les option que vous souhaitez:

    image52

    Quand vous cliquez sur le boutton Preview vous allez voir ce que VS va envoyer sur le serveur IIS:

    image53

    L’envoi est maintenant terminé:

    image54

    Internet Explorer s’ouvre sur le site que vous venez de déployer:

    image55

    Renseignez le nom d’une VM que vous souhaitez démarrer:

    image56

    Après quelques secondes, vous pouvez voir que la VM est en cours de démarrage:

    image57

    Vous pouvez également vérifier la commande qui a été exécuté dans les logs du serveur IIS:

    image58

    • 22/10/2015
  • [Azure] Implémenter le RBAC

    windowsAzureLogo

    Une grande nouveauté de Azure de ces dernières semaines est la disponibilité de Role Based Access Control (RBAC) : http://blogs.technet.com/b/ad/archive/2015/10/12/azure-rbac-is-ga.aspx

    L’avantage de cette solution est le fait de pouvoir attribuer des permissions sans pour autant donner les droits d’administrateurs aux utilisateurs.

    Je vais vous expliquer comment mettre en place cette solution et ainsi, mieux gérer vos droits. Pour commencer, il faut vous connecter sur https://portal.azure.com . RBAC est seulement possible sur cette interface. Une fois connecté, créez 2 groupes de ressources. Un pour stocker les VMs, les VHD associés à ces VMs, etc. et les autres pour stocker les réseaux:

    imageimage1

    Il faut maintenant assigner les bonnes permissions sur les bons groupes de ressources. Sur le groupe SCUGBE_RG_Store, je vais assigner l’utilisateur/groupe au rôle “Virtual Machine Contributor” pour créer les machines virtuelles et au rôle “Storage Account Contributor” pour donner la possibilité de créer un compte de stockage:

    image2image3image4

    Faites la même chose sur le groupe de ressource qui contient le réseau et donner le role Reader:

    image5

    Début - La partie suivante est optionnelle si vous ne souhaitez pas autoriser la connexion depuis l’extérieur de votre réseau.

    Nous allons créer un Network Security Group  pour ouvrir le port 3389 sur ce réseau pour autoriser la connexion RDP. Utilisez le script PowerShell suivant:

    Switch-AzureMode AzureResourceManager
    $rule1 = New-AzureNetworkSecurityRuleConfig -Name rdp-rule -Description “Allow RDP” -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389
    New-AzureNetworkSecurityGroup -ResourceGroupName SCUGBE_RG_Networks -Location “West Europe” -Name “SCUGBE-NSG” -SecurityRules $rule1

    image8

    Quand c’est terminé, vous devez assigner le rôle “Virtual Machine Contributor” à l’utilisateur/groupe pour autoriser l’utilisateur/groupe à enregistrer la carte réseau de la VM à ce réseau:

    image9

    On va maintenant ajouter un réseau spécifique à une personne/groupe et le lier au Network Security Group créé précédemment:

    image10

    On va associer une IP publique au Network Security Group pour donner la possibilité aux utilisateurs de se connecter à distance:

    Switch-AzureMode AzureResourceManager
    New-AzurePublicIpAddress -Name “SCUGBE-IPPublic” -ResourceGroupName SCUGBE_RG_Networks -Location “West Europe” -AllocationMethod Dynamic -DomainNameLabel “scugbe-rbac”

    image11

    Vous devez assigner le rôle “Virtual Machine Contributor” à l’utilisateur/groupe pour autoriser l’utilisateur/groupe à enregistrer l’IP de la VM:

    image12image13

    Fin - La partie suivante est optionnelle si vous ne souhaitez pas autoriser la connexion depuis l’extérieur de votre réseau.

    Avant de refaire un déploiement, nous devons assigner les permissions à un utilisateur/groupe de récupérer un IP dans le bon sous-réseau. Cette étape est seulement disponible en PowerShell. Pour ceci, nous avons besoin de récupérer le paramètre ObjectId:

    Switch-AzureMode AzureResourceManager
    Get-AzureRoleAssignment | FT DisplayName, Type, ObjectId

    image14

    Exécutez le script suivant, en l’adaptant avec vos valeurs:

    New-AzureRoleAssignment -ObjectId 2a83b08f-f189-4697-97e6-3fd5bcb433a3 -RoleDefinitionName “Virtual Machine Contributor” -ResourceName “SCUGBE_VNet_VMs” -ResourceType Microsoft.Network/virtualNetworks/subnets -ParentResource virtualNetworks/SCUGBE_VNet -ResourceGroupName SCUGBE_RG_Networks

    image15

    Il est maintenant temps de refaire un déploiement, avec mes 2 groupes de ressources:

    image16

    Connectez vous avec le compte qui a les droits de déployer une machine virtuelle et déployez une machine en utilisant le Resource Manager:

    image17image18image19image20

    La VM est en cours de déploiement:

    image21image22image23

    Quand la VM est déployée, vous pouvez vous connecter en RDP:

    image24

    Et vous pouvez voir uniquement les objets auxquels vous avez les droits:

    image25

    Si j’essaye de déployer une VM sur un réseau où je n’ai pas les droits, je reçois le message d’erreur suivant:

    image26image27image28

    Pour information, dans les prochaines versions de Azure, vous aurez la possibilité de créer vos propres rôles Sourire

    • 14/10/2015
  • [System Center 2012 R2] Numéro de build

    SysCtrR2

    Ayant besoin des numéros de build des différents produits de la gamme System Center, j’ai passé pas mal de temps à chercher sur Internet les numéros de version des différentes version. N’ayant pas trouvé un poste récapitulatif de tous les produits System Center avec leur numéro de build, je vais vous fournir ce poste, que je mettrai à jour au fur et à mesure des différentes sorties.

    App Controller 2012 R2 :

     

    Numéro de build

    KB

    Commentaire

    1.0.1001.0

    n/a

    System Center 2012 R2 App Controller Preview

    1.1.1200.0

    n/a

    System Center 2012 R2 App Controller RTM

     

    SCDPM 2012 R2 :

     

    Numéro de build

    KB

    Commentaire

    4.2.1092.0

    n/a

    System Center 2012 R2 Data Protection Manager Preview

    4.2.1205.0

    n/a

    System Center 2012 R2 Data Protection Manager RTM

    4.2.1217.0

    2904687

    Update Rollup 1 for System Center 2012 R2 Data Protection Manager

    4.2.1226.0

    2958100

    Update Rollup 2 for System Center 2012 R2 Data Protection Manager

    4.2.1254.0

    2966014

    Update Rollup 3 for System Center 2012 R2 Data Protection Manager

    4.2.1273.0

    3009516

    Update Rollup 4 for System Center 2012 R2 Data Protection Manager

    4.2.1292.0

    3021791

    Update Rollup 5 for System Center 2012 R2 Data Protection Manager

    4.2.1312.0

    3030574

    Update Rollup 6 for System Center 2012 R2 Data Protection Manager

    4.2.1338.0

    3065246

    Update Rollup 7 for System Center 2012 R2 Data Protection Manager

     

    SCO 2012 R2 :

     

    Numéro de build

    KB

    Commentaire

     

    n/a

    System Center 2012 R2 Orchestrator Preview

    7.2.84.0

    n/a

    System Center 2012 R2 Orchestrator RTM

    7.2.114.0 

    2904689

    Update Rollup 2 for System Center 2012 R2 Orchestrator

    7.2.171.0 

    3069115

    Update Rollup 7 for System Center 2012 R2 Orchestrator

     

    SCOM 2012 R2 :

     

    Numéro de build

    KB

    Commentaire

     

    n/a

    System Center 2012 R2 Operations Manager Preview

    7.1.10226.0

    n/a

    System Center 2012 R2 Operations Manager RTM

    7.1.10226.1009

    2904678

    Update Rollup 1 for System Center 2012 R2 Operations Manager

    7.1.10226.1015

    2929891

    Update Rollup 2 for System Center 2012 R2 Operations Manager

    7.1.10226.1037

    2965445

    Update Rollup 3 for System Center 2012 R2 Operations Manager

    7.1.10226.1046

    2992020

    Update Rollup 4 for System Center 2012 R2 Operations Manager

    7.1.10226.1052

    3023138

    Update Rollup 5 for System Center 2012 R2 Operations Manager

    7.1.10226.1064

    3051169

    Update Rollup 6 for System Center 2012 R2 Operations Manager

    7.1.10226.1090

    3064919

    Update Rollup 7 for System Center 2012 R2 Operations Manager

     

     

    SCSM 2012 R2 :

     

    Numéro de build

    KB

    Commentaire

    7.5.3046.276

    n/a

    System Center 2012 R2 Service Manager Preview

    7.5.3079.0

    n/a

    System Center 2012 R2 Service Manager RTM

    7.5.3079.61

    2904710

    Update Rollup 2 for System Center 2012 R2 Service Manager

    7.5.3079.148

    2962041

    Update Rollup 3 for System Center 2012 R2 Service Manager

    7.5.3079.236

    2989601

    Update Rollup 4 for System Center 2012 R2 Service Manager

    7.5.3079.315

    3009517

    Update Rollup 5 for System Center 2012 R2 Service Manager

    7.5.3079.367

    3039363

    Update Rollup 6 for System Center 2012 R2 Service Manager

    7.5.3079.442

    3063263

    Update Rollup 7 for System Center 2012 R2 Service Manager

     

    SCSPF 2012 R2 :

     

    Numéro de build

    KB

    Commentaire

     

    n/a

    System Center 2012 R2 Service Provider Foundation Preview

     

    n/a

    System Center 2012 R2 Service Provider Foundation RTM

    7.2.2051.0

    2920521

    Update Rollup 1 for System Center 2012 R2 Service Provider Foundation

    7.2.2102.0

    2932939

    Update Rollup 2 for System Center 2012 R2 Service Provider Foundation

    7.2.2172.0

    2992021

    Update Rollup 4 for System Center 2012 R2 Service Provider Foundation

    7.2.2212.0

    3050307

    Update Rollup 6 for System Center 2012 R2 Service Provider Foundation

    7.2.2286.0

    3069355

    Update Rollup 7 for System Center 2012 R2 Service Provider Foundation

     

    SCVMM 2012 R2 :

     

    Numéro de build

    KB

    Commentaire

    3.1.7200.0

    n/a

    System Center 2012 R2 Virtual Machine Manager Preview

    3.2.7510.0

    n/a

    System Center 2012 R2 Virtual Machine Manager RTM

    3.2.7620.0

    2904712

    Update Rollup 1 for System Center 2012 R2 Virtual Machine Manager

    3.2.7634.0

    2932926

    Update Rollup 2 for System Center 2012 R2 Virtual Machine Manager

    3.2.7672.0

    2965414

    Update Rollup 3 for System Center 2012 R2 Virtual Machine Manager

    3.2.7768.0

    2992024

    Update Rollup 4 for System Center 2012 R2 Virtual Machine Manager

    3.2.7895.0

    3023195

    Update Rollup 5 for System Center 2012 R2 Virtual Machine Manager

    3.2.8002.0

    3050317

    Update Rollup 6 for System Center 2012 R2 Virtual Machine Manager

    3.2.8071.0

    3066340

    Update Rollup 7 for System Center 2012 R2 Virtual Machine Manager

     

    Windows Azure Pack :

     

    Numéro de build

    KB

    Commentaire

     

    n/a

    Windows Azure Pack Preview

     

    n/a

    Windows Azure Pack RTM

    3.12.8198.0

    2924386

    Update Rollup 1 for Windows Azure Pack

    3.14.8196.32

    2932946

    Update Rollup 2 for Windows Azure Pack

    3.15.8196.48

    2965416

    Update Rollup 3 for Windows Azure Pack

    3.19.8196.21

    2992027

    Update Rollup 4 for Windows Azure Pack

    3.21.8196.46

    3023209

    Update Rollup 5 for Windows Azure Pack

    3.24.8196.35

    3051166

    Update Rollup 6 for Windows Azure Pack

    3.27.8196.0

    3091399

    Update Rollup 7.1 for Windows Azure Pack

    Si vous avez les numéros de version des différentes preview/rtm, n’hésitez pas à me les envoyer :-)

    • 1/9/2015
  • [Presentation] Private/Hybrid Cloud au MIC Mons

    J’ai la chance de pouvoir participer le Lundi 8 Juin 2015 au MIC de Mons (Microsoft Innovation Center). Vous trouverez plus d’informations concernant le MIC à l’adresse suivante: http://www.mic-belgique.be/

    Cette session (lvl 200-300), que je coanimerai avec Christophe Troessaert, aura le planning suivant (slides/demo):

    • Azure pack
    • System Center 2012 R2 ( SCOM, SCVMM, SMA)
    • Hyper-v 2012R2 + vmware
    • Déploiement de machine virtuel via WAP
    • Déploiement de role ( exchange, IIS, SQL, etc) via WAP
    • Consommation de service Database via WAP
    • SQL
    • MySQL
    • Création de site web via WAP

    La session commencera vers 18h30 – 19h et se terminera vers 20h20.

    Après la session il y aura un encas, et vous pourrez discuter/poser vos questions à Christophe et moi même.

    Pour vous enregistrer, c’est par ici: https://www.eventbrite.com/e/lundi-it-7-session-private-cloud-tickets-17065563560

    En espérant vous voir nombreux.

    • 21/5/2015
  • [WAP] VM Role Windows Server Technical Preview

    Je viens de créer un VMRole qui vous permettra de déployer une VM génération 2 avec Windows Server (2016) Technical preview installé.

    Vous pouvez télécharger ce VMRole ici : https://gallery.technet.microsoft.com/VMRole-Windows-Server-2016-9e941921

    N’hésitez pas à me contacter si vous avez des remarques/améliorations.

    • 6/5/2015
  • [WS 2016] Installer l’interface graphique complète (avec barre des tâches & menu démarrer)

    Après avoir installé Windows Server 2016 Technical Preview 2 (avec les outils d’administrations) je me suis retrouvé avec la fenêtre suivante au 1er démarrage:

    imageimage 
    Mais où est donc passé la barre des tâches et le menu démarrer?

    Par défaut, elle n’est pas installée, etvous pouvez donc gérer votre serveur avec seulement le commandline, Powershell et les outils graphiques, que vous pouvez lancer via le Server Manager.
    Si vous souhaitez faire réapparaitre la barre des tâches, 2 options s’offrent à vous.

    En GUI:

    Dans le Server manager, ajoutez la feature Desktop Experience avec ses dépendances:

    imageimage

    En PowerShell:

    Avec la commande Get-WindowsFeature Desktop-Experience | Install-WindowsFeature –IncludeAllSubFeature -Restart

    imageimageimage 
    Une fois le serveur redémarré, vous retrouvez le nouveau menu démarrer avec la barre des tâches:

    image

    • 5/5/2015