Office Servers and Services

"La connaissance ne vaut que si elle est partagée" / "An effective Knowledge is a shared one"

Archives d’Auteur

Docker Datacenter Azure partie 2

Posted by Anthony Costeseque sur septembre 27, 2016


Bonjour à tous,

Dans cette deuxième partie nous allons voir comment mettre à jour les composants de l’infrastructure.

Ici nous allons passer

Les UCP Controller de la version 1.1.2 à 1.1.3

La Registry (DTR) de la version 2.0.2 à 2.0.3

 

Pour la partie UCP Controller


A partir du node0 on récupère la dernière version du container UCP

    sudo docker pull docker/ucp:1.1.3


Puis on lancer l’upgrade

    sudo docker run \

–rm \

-it \

–name ucp \

-v /var/run/docker.sock:/var/run/docker.sock \

docker/ucp:1.1.3 upgrade -i


Une infra HA (notre cas) la maj à jour est transparente, aucune interruption de service


Pareil pour node1


Pareil pour node2


Tout est à jour

 

Passons à la partie Registry (DTR)


Pour commencer il faut récupérer l’ID d’un Replica des nodes de la DTR, ici nous prendrons l’ID du node0 : badf00dcafe0


Ici c’est plus simple, l’upgrade fait tous les nodes 1 par 1

ssh ucpadmin@axiansregistry.ukwest.cloudapp.azure.com -p 2200

sudo docker pull docker/dtr

sudo curl -k https://axiansucp.ukwest.cloudapp.azure.com/ca > ucp-ca.pem

sudo docker run \

-it \

–rm \

docker/dtr upgrade \

–ucp-url axiansucp.ukwest.cloudapp.azure.com \

–existing-replica-id badf00dcafe0 \

–ucp-username XXXX \

–ucp-password XXXX \

–ucp-ca « $(cat ucp-ca.pem) »


L’upgrade est terminée tous les nodes ont été mis à jour



Les composants de l’infrastructure sont à jour

UCP Controllers node et DTR nodes

Dans la prochaine partie nous verrons la sécurisation et l’ajout du stockage pour la DTR

Bonne lecture,

Pour toutes questions n’hésitez pas.

Anthony Costeseque

Posted in Non classé | Leave a Comment »

Docker Datacenter sur Azure partie 1

Posted by Anthony Costeseque sur septembre 22, 2016


Bonjour à tous,

Nous allons parler dans la série de posts à venir de Docker sur Azure et plus particulièrement Docker Datacenter
(DDC) qui est l’offre complète commerciale
CaaS (Container as a Service) de Docker orientée pour les Entreprises.


Disponible On-Premise chez vous dans votre Datacenter ou dans le Cloud Public et dans notre cas Azure.

Note : l’année prochaine (mid 2017) disponible en mode Hybrid dans votre Datacenter avec Azure Stack.


La version Azure et Azure Stack a été annoncé lors de la DockerCon 2016 (juin 2016) par Mark Russinovich (Microsoft Azure CTO).

https://azure.microsoft.com/en-us/blog/microsoft-brings-container-innovation-to-the-enterprise-at-dockercon-2016/

 

Docker Datacenter correspond à un abonnement intégré comprenant :


Docker Universal Control Plane (UCP) : Orchestration et Gestion de cluster de serveurs Docker (avec Swarm intégré)

Docker Trusted Registry (DTR) : Dépôt (registry) pour les images de conteneurs

Docker Engine

Support intégré et d’API

Configurations validées grâce à des modules d’extension tiers

Support commercial

Pour les prix : https://www.docker.com/pricing

 

Pour commencer notre PoC il faudra demander une souscription d’évaluation à Docker en fournissant l’ID de votre souscription Azure cible (et donc avoir une souscription Azure :p)

Une fois votre demande validée vous trouverez la souscription dans votre compte Docker (il faut donc aussi avoir un compte Docker forcement :p).

https://store.docker.com/bundles/docker-datacenter/purchase?plan=free-trial


Il vous suffit de récupérer le ficher de licence (License Key)


Nous allons maintenant preparer notre pair de clefs SSH pour l’authentification SSH sur tous les serveurs de la plateforme.

J’utilise Putty Key Generator


J’utilise une passphrase en plus de l’authentification avec la clef privée

SSH-2 RSA avec une taille de clef de 2048

Sauvegarder ensuite la clef publique (qui sera ajoutée au authorized_keys de tous les serveurs de la plateforme lors du deploiement) et la clef privée

    DockerDC_PublicKey.key

    DockerDC_PrivateKey.ppk

Pour l’ajout de la clef privé sur un des serveurs de l’infrastructure voir à un poste d’administration Linux que vous utiliserez pour travailler, il faut convertir la clef privée du format Putty of format OpenSSH

Il suffit d’aller dans Conversions > Export OpenSSH Key


Je l’ai sauvegardé dans id_rsa

Ce qui donne au final


 

Avant de commencer le déploiement voyons à quoi ressemble l’infrastructure déployée


On a 3 types de machines

    UCP Controller Nodes qui correspond à Docker Universal Control Plane (UCP) -> nous déploierons 3 nodes

    Docker UCP Nodes qui correspond aux Docker Engine -> nous déploierons 2 nodes

    UCP DTR Nodes qui correspond à Docker Trusted Registry (DTR) -> nous déploierons 3 nodes

Nous aurons donc 3 fqdn pour accéder à chaque service et donc 3 IP publiques le tout porté par 3 load balancer

    Docker Universal Control Plane (UCP) -> dans mon exemple axiansucp.ukwest.cloudapp.azure.com

    Docker Engine -> dans mon exemple axiansdockerengine.ukwest.cloudapp.azure.com

    Docker Trusted Registry (DTR) -> dans mon exemple axiansregistry.ukwest.cloudapp.azure.com

 

Nous allons maintenant déployer Docker Datacenter à partir de la Market Place


 


En mode ARM (Azure Resource Manager) nous allons remplir les différentes propriétés du template (en version 1.0.7)


Nous passons le type d’authentification en mode Clé publique SSH

Il vous suffit de coller le contenu du fichier DockerDC_PublicKey.key (généré précédemment)

De fournir le nom de votre Ressources Group (ici rgDockerDatacenter)

Ainsi que l’emplacement (ici le nouvel emplacement aux Royaume-Uni)


Il faut choisir la configuration des sous-réseaux (la configuration par défaut est suffisante)


On complète avec la cible de notre PoC

Le type de VM Azure, le nb de VM pour chaque brique 3 / 2 / 3, les fqdn, un password pour l’admin de l’UCP et le fichier de licence récupéré précédemment


Resumé


Rappel ce n’est pas gratuit :)


Le déploiement est en cours


 


Le déploiement est terminée


Il a pris 19 minutes


Les ressources deployées


Pour automatiser les futurs déploiements, notamment sur Azure Stack ! pensez à récupérer le script


Vous trouverez dans l’archive le template json et le fichier de paramètres avec tous ce que nous avons saisie précédemment lors du déploiement

J’ai donc maintenant 8 nodes de deployés

UCP Controller Nodes

ucpclus0-ucpctrl

ucpclus1-ucpctrl

ucpclus2-ucpctrl

Docker UCP Nodes

ucpclus0-ucpdtrnode

ucpclus1-ucpdtrnode

UCP DTR Nodes

ucpclus0-ucpdtrnode

ucpclus1-ucpdtrnode

ucpclus2-ucpdtrnode

 

La documentation officielle : https://success.docker.com/Datacenter/Apply/Docker_Datacenter_on_Azure

Nous donne les actions post déploiement à réaliser et notamment comment retirer le bandeau de warning


En effet le certificat de la Root CA a été généré sur le node0 des 3 nodes UCP Controller, il nous faut pousser ce certificat sur les 2 autres nodes (replicats)

Nous allons le faire en SSH, j’utilise ici le client MobaXtrem

Configuré votre connexion pour utiliser votre clef privée (DockerDC_PrivateKey.ppk générée précédemment)

ssh ucpadmin@axiansucp.ukwest.cloudapp.azure.com -p 2200

Note : 2200 nous connecte au node0 / 2201 au node1 et 2202 au node2


 


Nous voilà connecté au node 0 (ucpclus0-ucpctrl)


Nous allons exécuter les commandes suivantes pour extraire le certificat de la Root CA que nous pousserons ensuite sur les 2 replicats (ucpclus1-ucpctrl / ucpclus2-ucpctrl)

sudo docker run –rm –name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:1.1.0 id 1 > /tmp/id

INSTANCEID=$(cat /tmp/id)

sudo docker run –rm -i –name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp backup –root-ca-only –passphrase ddconazure –id $INSTANCEID > /tmp/backup.tar

Nous allons maintenant travailler à partir de ce node pour toutes les actions à venir et nous allons donc poser la clef privée pour pouvoir nous connecter sur les autres nodes

    sudo vi ~/.ssh/id_rsa

    Puis coller le contenu du fichier DockerDC_PrivateKey.ppk généré précédemment

Puis nous allons envoyer le dump backup.tar vers les 2 replicats

scp backup.tar ucpclus1-ucpctrl:/tmp

scp backup.tar ucpclus2-ucpctrl:/tmp

Nous pouvons maintenant nous connecter au au node1 (ucpclus1-ucpctrl)

    ssh ucpadmin@axiansucp.ukwest.cloudapp.azure.com -p 2201


Ici on est connecté


sudo docker run –rm –name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:1.1.0 id 1 > /tmp/id

INSTANCEID=$(cat /tmp/id)

sudo docker run –rm -i –name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp restore –root-ca-only –passphrase ddconazure –id $INSTANCEID < /tmp/backup.tar

Puis le dernier node 2 (ucpclus2-ucpctrl)

    ssh ucpadmin@axiansucp.ukwest.cloudapp.azure.com -p 2202


Node 2 terminé

Les 3 nodes UCP Controller sont maintenant à jour avec la Root CA

Et maintenant le résultat : https://axiansucp.ukwest.cloudapp.azure.com


Plus de bandeau de warning, la plateforme est Up and Running :)


Tous les nodes UCP Controller sont en bonnes santé

Prochain post Upgrade de tous les composants

Bonne lecture,

Et pour toutes questions n’hésitez pas.

Anthony Costeseque

Posted in Non classé | Leave a Comment »

PowerShell sur Linux & MacOS

Posted by Anthony Costeseque sur août 22, 2016


Apres Bash sur Windows, .Net Core sur Linux, la grosse news de la fin de semaine dernière c’est PowerShell passé en Open Source (MIT License) et disponible sur Linux et MacOS :D

Mais surtout c’est un et même codebase pour toutes les plateformes (pour l’instant Ubuntu 14.04, Ubuntu 16.04, CentOS 7 et OS X 10.11) …

https://aka.ms/hosoyc

 
 

 
 

Pour vous faire la main et tester facilement tout cela

Sur un host linux n’importe lequel avec docker d’installé :

git clone https://gitlab.vpack.fr/acosteseque/docker-posh.git

cd docker-posh

wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb

docker build -t axians/powershelldemo .

docker run –rm -it axians/powershelldemo



On notera la présence du PackageManagement, de DSC et de Pester ;)

Bonne lecture est bon test !!

Anthony Costeseque

Posted in Non classé | Leave a Comment »

Séminaire DevOps à Aix en Provence

Posted by Anthony Costeseque sur juin 14, 2016


Bonjour à tous,

 

Je vais animer une matinée consacrée à DevOps à la fin du mois dont le contenu sera le suivant :

 

Les besoins applicatifs croissants et la nécessité de réactivité, imposent des organisations de plus en plus agiles et évolutives.

 
 

Venez découvrir comment optimiser les infrastructures et les opérations pour favoriser la transformation digitale qui se met en place dans les entreprises.

Nous aborderons les bonnes pratiques pour la mise en place d’une démarche DevOps adaptée à votre contexte.

A travers la vision des différentes parties prenantes de la DSI : Dev / Ops / Qualité / Managemet / Business.

 
 

Organisation :    Axians Cloud Builder et Microsoft

Date :        Vendredi 24 Juin 2016 Matinée + cocktail déjeunatoire (9h00 – 14h30)

Lieu :        l’Hôtel du Roi René – 24 Boulevard du Roi René, 13100 Aix-en-Provence

Inscription :    par retour de mail

 
 

Infrastructure et Operations Agiles, la perspective d’une démarche DevOps

Thème

Durée

Chrono

Introduction

 

9h00

DevOps

Vision globale

Retour d’expérience chez Microsoft

10 idées reçues sur DevOps

30 min

9h30 – 10h

Par où commencer pour réussir ?

Bonnes pratiques

Les clefs de confiance

1h00

10h – 11h

Pause

15min

11h – 11h15

Cloud Hybride accélérateur (pour les Opérations)

Azure & Azure Stack

30min

11h15 – 11h45

Container et approche Microservices

Docker & Windows Server 2016 & Nano Server

15min

11h45 – 12h

Démonstration

30min

12h – 12h30

Questions/Réponses et conclusion

30min

12h30 – 13h

Cocktail déjeunatoire

1h30

13h – 14h30        

 
 

Espérant vous recevoir et partager avec vous sur ce sujet d’actualité,

Pour vous inscrire : Contactez Laëtitia MARIE au 01.70.68.96.39 ou par email laetitia.marie @ axians.com

A très bientôt,

Anthony Costeseque

Posted in Non classé | Leave a Comment »

Expiration d’un certificat Office 365

Posted by Anthony Costeseque sur mars 3, 2016


Microsoft a annoncé l’expiration d’un certificat prévu le 15 avril 2016 pouvant fortement impacter votre environnement.

En effet, le 15 avril 2016, le certificat Office 365 TLS sera renouvelé. Ce certificat est utilisé par Office 365 pour fournir l’encodage TLS entre Office 365 et les servers externes SMTP.

Cette expiration peut potentiellement bloquer votre flux de messagerie entre vos serveurs On-Premises Exchange
2013 et Office 365, si vous remplissez l’un des points suivants :

  • Vos serveurs Exchange on-premise sont sous Exchange 2013 Cumulative Update 8 (CU8) ou une version inférieure.
  • Vous avez mis à jour vos serveurs Exchange 2013 qui gèrent le flux de messagerie avec Office 365 vers le CU9 ou plus. Cependant, depuis la mise à jour vers CU9, vous N’AVEZ PAS relancé l’outil Hybrid Configuration (via le centre d’administration Exchange ou via le lien de téléchargement direct)

L’article, ci-dessous, détaille les actions que vous devez vérifier et exécuter :

Blog Technet – Important notice about certificate expiration for Exchange 2013 Hybrid customers

Note : L’hybridation avec Exchange 2010 On-Premise n’est pas concerné !

Anthony Costeseque

Posted in Non classé | Leave a Comment »

Exchange + DSC = xExchange partie 5

Posted by Anthony Costeseque sur janvier 14, 2016


Bonjour à tous,

Nous allons maintenant voire comment installer Exchange :)

Après les exemples précèdent sur Jetstress et les prérequis, vous allez pouvoir constater à quel point cela va être simple de déployer 4 serveurs Exchange !! ;)

Nous allons commencer par les binaires d’installation d’Exchange (ici pour la démo en CU11)

https://www.microsoft.com/en-us/download/details.aspx?id=50366


Extract dans « C:\DSC\Binaries\E2K13CU11 » (sur la machine d’admin)

Regardons le script « InstallExchange.ps1 »

Disponible ici : https://onedrive.live.com/redir?resid=2BAAD2DFF0402075!237481&authkey=!ABZMgWQJmJJg5hs&ithint=folder%2cpsd1


Nous avons de nouveau credential à fournir pour l’installation d’Exchange (avec les bon droits) !

5 DSC Ressources sont présentes :

1 native (File) : pour la copie en local des binaires d’installation d’Exchange

2 du module xPendingReboot : pour surveiller si un reboot est necessaire

2 du module xExchange : pour l’installation d’Exchange et l’ajout de la clef produit


On compile nos fichiers de configuration

Et regardons comment cela se déroule

Et là assez souvent (trop pour compter dessus) la ressource « File » plante …:/ (en tout cas sur WMF 4 (je ferai le test sur un prochain post en WMF 5 et Exchange 2016))

Elle car le nombre de fichiers à copier est trop important (le CU11 compte 25 937 fichiers dans 3 968 répertories)

Le symptôme est simple le process WmiPrvSE.exe passe à 100% lors de l’exécution de la task scheduled « Consistency »



Et là il faut faire le ménage … on commence ici à aborder un peu la partie troubleshooting

Les configurations sont stockées dans « C:\Windows\System32\Configuration »

On va supprimer le process à 100%

$dscProcessID = Get-WmiObject msft_providers | Where-Object {$_.provider -like ‘dsccore’} | Select-Object -ExpandProperty HostProcessIdentifier

Get-Process -Id $dscProcessID | Stop-Process

On va vider le cache qui aurait pu commencer à se créer

Get-ChildItem $env:Windir\System32\Configuration\BuiltinProvCache -Filter *.cache -Recurse | Remove-Item –Force

Puis retirer la configuration en attente

Remove-DscConfigurationDocument -Stage Pending

Nous pouvons repartir à nouveau sauf que la copie des binaires Exchange se fera de la même façon que les modules DSC, le script est « DeployExchangeBinaries.ps1 »

disponible ici https://onedrive.live.com/redir?resid=2BAAD2DFF0402075!231970&authkey=!ABZMgWQJmJJg5hs&ithint=folder%2cps1


.\DeployExchangeBinaries.ps1 -TargetComputers AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04

Mettons à jour le script de configuration pour l’installation d’Exchange


Nous allons commenter la ressource File ainsi que le DependsOn de la ressource suivante

Et on recompile la configuration


On va maintenant faire le premier serveur avant de faire tous les autres, car le premier est important : l’AD sera préparer, l’organisation Exchange sera créée, etc


cd C:\DSC\Configurations\5-InstallExchange

Start-DscConfiguration -Path . -Verbose -Wait -ComputerName AC-01-EXCH-01



L’installation s’est correctement réalisée :) regardons dans l’EMS (Exchange Management Shell)


Nous pouvons passer à l’installation de tous les serveurs restant :)

cd C:\DSC\Configurations\5-InstallExchange

Start-DscConfiguration -Path . -Verbose -Wait -ComputerName AC-01-EXCH-02,AC-01-EXCH-03,C-01-EXCH-04


Nos 4 serveurs sont maintenant installés et ont leur Clef produit d’appliquée

Jusqu’à maintenant je ne me suis jamais connecté sur les serveurs Exchange nous n’avons fait qu’exécuter des scripts PowerShell ou Push des configurations DSC sur nos 4 serveurs cibles !

(à part pour le point copies des binaires Exchange avec DSC qui ne fonctionne pas très bien et où nous avons fait un peu de troubleshooting pour vous montrer comment tout cela fonctionne (mais en utilisant directement la solution aucun problème !))

Dans la prochaine partie nous allons voir la configuration d’Exchange

Bonne lecture,

Et pour toutes questions n’hésitez pas !

Anthony Costeseque

Posted in Non classé | 1 Comment »

Exchange + DSC = xExchange partie 4

Posted by Anthony Costeseque sur janvier 12, 2016


Bonjour à tous,

Nous allons maintenant voire comment installer les prérequis d’Exchange.

Cette partie n’est pas fournie dans les exemples du Module xExchange, je l’ai donc créé et nous allons voir cela en détail.

Nous allons de plus utiliser un nouveau module « xPendingReboot » pour surveiller si le serveur a besoin de rebooter.


N’oubliez pas de l’ajouter dans C:\DSC\Modules puis d’utiliser le script « DeployDSCModules.ps1 » pour le déployer sur vos clients DSC.

Le script de configuration pour les prérequis s’appelle « InstallExchangePrerequisites.ps1 »

Note : il est fait pour une installation Exchange type Prefered Architecture (PA) c’est-à-dire CAS+MBX sur le même serveur et OS Windows 2012 R2

il est disponible ici : https://onedrive.live.com/redir?resid=2BAAD2DFF0402075!231975&authkey=!ABZMgWQJmJJg5hs&ithint=folder%2c


Le script matérialise en fait 2 étapes

1 – L’installation des Features necessaires : Install-WindowsFeature RSAT-ADDS, AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation

Réalisé à l’aide de la Ressource DSC « WindowsFeature »

2 – L’installation d’UCMA (Unified Communications Managed API 4.0 Runtime)

Réalisé à l’aide des Ressources DSC « File » « xPendingReboot » « Package »

Note : Le filter Pack Office 2010 + SP1 n’est plus nécessaire

https://technet.microsoft.com/en-us/library/bb691354(v=exchg.150).aspx

Comme d’habitude on compile


C:\DSC\Configurations\4-InstallExchangePrerequisites> .\InstallExchangePrerequisites.ps1

Puis on Push les configurations sur les cibles (les serveurs Exchange)



C:\DSC\Configurations\4-InstallExchangePrerequisites>Start-DscConfiguration -Path . -Verbose -Wait -ComputerName AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 -Force


Tout s’est bien déroulé :)

Bonne lecture

Anthony Costeseque

Posted in Non classé | Leave a Comment »

Exchange + DSC = xExchange partie 3

Posted by Anthony Costeseque sur janvier 8, 2016


Bonjour à tous,

On attaque maintenant le dur :p

Nous allons automatiser le déploiement de JetStress avec le Module DSC xExchange et plus particulièrement les ressources : xExchJetstress & xExchJetstressCleanup

Les étapes seront :

    Configuration du LCM (Local Configuration Manager) des serveurs cibles (Exchange)

    Installation / Exécution de JetStress

    Désinstallation de JetStress

Nous allons donc générer les fichiers de configuration (.MOF) en séparant la partie « générique » du script de la partie « données (config) », cela va permettre de gérer plusieurs environnements différents (lab / prod par exemple) en exécutant les mêmes opérations avec des données différentes.

La partie générique sera en .ps1 et la partie données (config) sera en .psd1

Dans notre exemple nous allons travailler sur un environnement de lab en Push model avec :

1 DAG de 4 serveurs avec 4 copies par DB

    1 DB disk + 1 Spare disk

Configuration du LCM (Local Configuration Manager) des serveurs cibles (Exchange)

Cette configuration va nous permettre de mettre en place la sécurisation des credential avec le certificat généré dans la partie 2

Nous allons commencer par le fichier de « données (config) », le fichier s’appellera ExchangeSettings-Lab.psd1


    Disponible ici : https://onedrive.live.com/redir?resid=2BAAD2DFF0402075!231975&authkey=!ABZMgWQJmJJg5hs&ithint=folder%2c

Le fichier de données (config) définit une table qui contient la déclaration de nos serveurs cibles avec :

    Une partie commune à tous les serveurs cibles : la partie AllNodes / NodeName = ‘*’

    Une partie spécifique à chaque serveur cible : la partie AllNodes / NodeName = ‘Nom de la Cible’

Donc ici nous avec les informations liées au certificat utilisé ainsi que pour la suite la configuration pour les DB sur les disques des serveurs cibles et pour finir l’emplacement du binaire d’installation de JetStress

Puis le fichier script générique qui s’appellera ConfigureLCMForDeployment.ps1


Le fichier de script qui va générer le fichier de configuration est constitué de 3 parties

    Le block de « configuration » (qui est équivalent à une fonction PowerShell)

    Avec à l’intérieur les blocks de configuration des serveurs cibles

    Qui définissent les blocks de ressources DSC à utiliser

Donc ici le script contient le block de configuration qui s’appelle « ConfigureLCMForDeployment » avec un block de configuration de Node qui définit la ressource LocalConfigurationManager avec la configuration de 3 propriétés

2 variables seront récupérées dans le fichier de données (config) $Node.Thumbprint et $AllNodes.NodeName

Maintenant que tout est prêt nous allons générer nos fichiers de configurations (.MOF)


Ici dans l’ISE

Pour ceux qui veulent le faire dans PowerShell


    cd C:\DSC\Configurations\1-ConfigureLCMForDeployment

    .\ConfigureLCMForDeployment.ps1

Le résultat est la génération de 4 fichiers meta.mof (1 par serveur cible définit dans le fichier de données (config))


Maintenant nous pouvons pousser la configuration sur les cibles


    Get-DscLocalConfigurationManager -CimSession AC-01-EXCH-01

    Ici on voit bien que le CertificateID n’est pas configuré


    Set-DscLocalConfigurationManager -Path . -Verbose -ComputerName AC-01-EXCH-01

    La configuration c’est bien deroulée nous pouvons l’appliquer à tous les serveurs cibles


    Set-DscLocalConfigurationManager -Path . -Verbose -ComputerName AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04


    Get-DscLocalConfigurationManager -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | fl PSComputerName,CertificateID

    Tous les serveurs sont bien configurés

Passons à l’Installation / Exécution de JetStress

Nous allons préparer notre repository de fichiers sur notre serveur « FileServerBase »


Les fichiers pour Jetstress à placer dans le répertoire « ESEDlls » sont à récupérer sur l’extract de l’install d’Exchange (dans mon exemple le CU 11 d’Exchange 2013 (Exchange2013-x64-cu11.exe))

    https://www.microsoft.com/en-us/download/details.aspx?id=50366

    setup\serverroles\common\ese.dll

    setup\serverroles\common\perf\amd64\eseperf.dll

    setup\serverroles\common\perf\amd64\eseperf.hxx

    setup\serverroles\common\perf\amd64\eseperf.ini

    setup\serverroles\common\perf\amd64\eseperf.xml

Le fichier de configuration JetstressConfig.xml

Et pour finir le binaire d’install ;) (ici en v15.01.0318.000)

    https://www.microsoft.com/en-us/download/details.aspx?id=36849

Tout est disponible ici : https://onedrive.live.com/redir?resid=2BAAD2DFF0402075!231985&authkey=!ABZMgWQJmJJg5hs&ithint=folder%2c


On partage notre repository et on le sécurise en donnant l’accès qu’au groupe d’utilisateurs que l’on souhaite (l’accès au share se fera au travers de credential fournis lors de la compilation de la configuration (dans la variable $FileCopyCreds))

Et maintenant le script générique (la partie données (config) reste la même que pour le LCM)


Ici ça à l’air un peu plus complexe ;) mais c’est très simple !

Le script contient le block de configuration qui s’appelle « InstallAndRunJetstress » avec un block de configuration de Node qui définit 6 ressources avec la configuration de X propriétés pour chacune

On utilise ici la Ressource DSC xExchange d’où l’import initial « Import-DscResource -Module xExchange » c’est pour les définitions de xExchAutoMountPoint et xExchJetstress

Pour les autres Ressources DSC il n’y pas d’import car ce sont les natives


Au départ on va configurer les points de montages (avec la ressource xExchAutoMountPoint) sur des disques vierges non initialisés (dans mon exemple, chaque serveur Exchange a 2 disques de 4To non initialisés (1 disque qui va contenir 4 DBs+Logs et 1 disque de Spare pour AutoReseed))

Puis on va copier et installer JetStress, copier les fichiers du répertoire ESEDlls ainsi que le fichier de config xml

Pour finalement lancer JetStress à l’aide de la ressource xExchJetstress (dans mon exemple, un reboot aura été nécessaire pour y parvenir)


On génère les fichiers de configurations, puis on déploie



    Exemple avec le serveur 2

    Start-DscConfiguration -Path . -Verbose -Wait -ComputerName AC-01-EXCH-02

Après le reboot (automatique) JetStress va se lancer (à travers une tache planifiée)



Les 4 DB / Logs seront créés sur notre volume JetStress tourne


    Le résultat sera disponible dans

    C:\Program Files\Exchange Jetstress\Performance_XXXXX.html

Le test est OK pour notre serveur 2 (bon c’était un lab sur du SDD, mais sur la prod on aura des disques NL-SAS qui ne dépasseront pas 100 IOPs objectif à ateindre)

Et pour finir la désinstallation de JetStress




    Start-DscConfiguration -Path . -Verbose -Wait -ComputerName AC-01-EXCH-02 -Force

Et voilà pour cette 3eme partie :)

Bonne lecture

Anthony Costeseque

Posted in Non classé | Leave a Comment »

Exchange + DSC = xExchange partie 2

Posted by Anthony Costeseque sur janvier 2, 2016


Bonjour à tous,

Que cette nouvelle année 2016 rime avec passion, énergie et réalisation !

Pour bien débuter continuons notre exploration de DSC dans Exchange :D

Et avant d’attaquer le dur nous allons préparer notre environnement de travail.

Cela va consister en :

    1 – Préparation du certificat pour sécuriser les credential stockés dans les fichiers .MOF générés

    2 – Déploiement des Modules DSC nécessaires sur les serveurs cibles

    3 – Modification WMI – augmentation des quotas

Commençons par le certificat

Pour plus de détails je vous invite à lire :

http://blogs.msdn.com/b/powershell/archive/2014/01/31/want-to-secure-credentials-in-windows-powershell-desired-state-configuration.aspx

http://blogs.msdn.com/b/powershell/archive/2015/10/02/powershell-dsc-faq-sorting-out-certificates.aspx

L’objectif est simple, étant donné que les fichiers .MOF stocke les credential fourni en clair il faut les sécuriser. La sécurisation se fera en utilisant une paire de clefs (présent dans un certificat SSL) pour crypter / décrypter les credentials.

Lors de la génération des configurations la clef publique est utilisée et lors de la lecture des configurations par le LCM des clients DSC c’est la clef privée qui sera utilisée.

  

Clef Publique

Clef Privée

Poste Admin

Oui

Non

DSC Clients

Non

Oui

 

Pour la démonstration j’utiliserai une PKI Microsoft (AD CS) Enterprise (non standalone pour pouvoir utiliser les template).

On duplique le template « Worstation Authentication »


Et on le personnalise



On lui donne un nom (DSC Client) et une durée de validité (ici 1 an), on autorise l’export de la clef privée.



2048 pour un certificat d’1 an c’est largement suffisant, on donnera le Subject au moment de la demande.



Pour la renforcer la sécurité on peut modifier les ACL pour n’autoriser que le groupe d’ordinateurs qui va utiliser DSC à pouvoir s’enrôler.


On publi notre template


On est prêt à générer notre certificat

Je vais réaliser la demande à partir u serveur qui va me servir à Push mes configuration et qui me servira aussi de Pull serveur par la suite.




J’ouvre une mmc pour charger la snap-in certificat (au niveau compte d’ordinateur)




Dans toutes les taches on faire une nouvelle demande de certificat




Mon template est bien disponible et il me faut personnaliser le Subject







On commence par le « Common Name » ici « DSC Certificate » puis (optionnel) on peut ajouter l’organization / l’organization Unit et le Pays, on fini par donner un Friendly Name au certificat (ici DSC Certificate)



La demande c’est bien déroulé et le certificat est bien disponible dans store personnel du compte d’ordinateur local (note la clef sur le dessin du certificat montre que la clef privée est présente)

Nous allons maintenant exporter le certificat avec sa clef privée pour le déployer sur les Clients, lors de l’export nous supprimerons la clef privée du certificat (car comme vu au début la clef privée n’est pas nécessaire sur le poste d’admin)






Bien cocher « supprimer la clef privée si l’export réussi », puis sécuriser le fichier avec un mot de passe complexe ! vous pouvez utiliser PowerShell pour en générer un :)


[Reflection.Assembly]::LoadWithPartialName(« System.Web »)

[System.Web.Security.Membership]::GeneratePassword(16,0)


Notez que le dessin de la clef a disparu (la clef privée n’est plus présente)

Maintenant il faut exporter la clef publique qui sera utilisée par le serveur d’admin qui génèrera les fichiers de configurations





Pour finir nous allons récupérer le Thumbprint


    cd Cert:\LocalMachine\My

    ls

Notre certificat publique se trouve dans C:\DSC\Certificates\DSCCertificate-Public.cer

Et son Thumbprint est E2D4D502C2C201F19A364EF5879D5B8E83B0327E

Passons au déploiement de la clef privée sur les clients DSC (les serveurs Exchange) à l’aide du script DeployPrivateKey.ps1 (de Mike Hendrickson)


    Disponible ici : http://1drv.ms/1IJGIZB

Nous allons devoir désactiver le Firewall temporairement le temps de l’exécution des scripts

    Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Select PSComputerName,Name,Enabled | FT Name,Enabled -GroupBy PSComputerName -AutoSize

Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Set-NetFirewallProfile -Enabled False

Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Select PSComputerName,Name,Enabled | FT Name,Enabled -GroupBy PSComputerName -AutoSize

Nous pouvons maintenant lancer le script


    cd c:\DSC\Scripts\HelperScripts

.\DeployPrivateKey.ps1 -TargetComputers AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04



Utiliser des credential (local ou du domaine) ayant des droits d’administrateur sur les clients DSC (les serveurs Exchange)





Le certificat a été correctement déployé et la clef privée est sécurisée

Continuons avec le déploiement des Modules DSC nécessaires sur les serveurs cibles

Avec WMF 4 il faut installer le module PowerShellGet pour trouver et installer facilement les modules PowerShell présent dans la Gallery (module automatiquement present avec WMF 5)

https://www.microsoft.com/en-us/download/details.aspx?id=49186&751be11f-ede8-5a0c-058c-2ee190a24fa6=True



Les cmdlets disponibles

    Get-Command -Module PowerShellGet


Vérifions que le module xExchange est bien disponible

    Find-Module xExchange


Installons le module, la première utilisation d’Install-Module demande l’installation de NuGet

    Install-Module xExchange -Force


Le module est maintenant disponible dans « C:\Program Files\WindowsPowerShell\Modules »

Nous allons le copier dans c:\DSC\Modules


Maintenant nous allons utiliser le script DeployDSCModules.ps1 (de Mike Hendrickson)


Disponible ici : http://1drv.ms/1IJGIZB


    .\DeployDSCModules.ps1 -TargetComputers AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04

Il est possible de rajouter des modules par la suite (comme xWebAdministration) puis de relancer le script


Finissons avec la modification de WMI (augmentation des quotas)

Pour eviter l’erreur PowerShell provider MSFT_xExchClientAccessServer failed to execute Test-TargetResource functionality with error message: Exception of type ‘System.OutOfMemoryException’ was thrown.

Il est nécessaire d’augmenter les quotas WMI pour que Remote PowerShell s’exécute correctement.

Nous allons utiliser le script SetWMIQuota.ps1 (de Mike Hendrickson)


    Disponible ici : http://1drv.ms/1IJGIZB


    .\SetWMIQuota.ps1 -TargetComputers AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04

Et voilà notre environnement est maintenant prêt !! :)))

Nous pouvons réactiver le Firewall des serveurs

    Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Select PSComputerName,Name,Enabled | FT Name,Enabled -GroupBy PSComputerName -AutoSize

Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Set-NetFirewallProfile -Enabled True

Get-NetFirewallProfile -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | Select PSComputerName,Name,Enabled | FT Name,Enabled -GroupBy PSComputerName -AutoSize

 

Dans la prochaine partie (3) nous allons voir le déploiement entièrement automatisé de JetStress !

Bonne lecture ! Et encore une fois une Excellente Année 2016 à tous :D

Anthony Costeseque

Posted in Non classé | Leave a Comment »

Exchange + DSC = xExchange partie 1

Posted by Anthony Costeseque sur décembre 22, 2015


Bonjour,

Nous allons parler de Desired State Configuration (DSC) dans le contexte d’Exchange :)

Objectif l’automatisation complète du déploiement d’Exchange ainsi que du maintien de sa configuration dans le temps (vérification permanente de non divergence)

Avant de démarrer une présentation rapide de DSC


6 concepts / mots clefs à retenir ;)

Le but est de générer les fichiers de configuration (MOF) qui seront traités par l’agent (Local Configuration Manager (LCM)) du/des serveurs cibles à l’aide de Modules PowerShell composés de Ressources DSC

Et cela à travers 2 modèles de déploiement possible :

Push (j’envoie vers les clients)

Pull (les clients viennent chercher leur configuration sur un serveur central)

Les Modules qui contiennent les Ressources DSC sont disponibles dans la PowerShell Gallery ou directement depuis PowerShell (à l’aide de cmdlets qui parsent la gallery) si vous êtes en WMF 5.0 (GA depuis peu)

https://www.microsoft.com/en-us/download/details.aspx?id=50395

Mais dans notre cas nous resterons sur WMF 4 ! Exchange 2013 ne supporte pas pour l’instant WMF 5:/

Nous utiliserons plusieurs Modules que je listerai par la suite, mais le principal est xExchange !

    http://www.powershellgallery.com/packages/xExchange

    La version en cours de dev dans GitHub https://github.com/PowerShell/xExchange

A l’heure où j’écris nous en sommes à la version 1.5 qui supporte Exchange 2013 et vient d’amener le support de 2016 au travers de 34 Ressources DSC

    Pour les lecteurs en Windows 10 vous pouvez regarder par vous-même

        Find-Module -Name xExch*

        Find-DscResource -moduleName xExchange

        Find-DscResource -moduleName xExchange | measure

 

Pour ceux qui voudrait aller plus loin sur PowerShell & DSC voici les ressources pour bien démarrer :)

Formation MVA gratuites

Getting started with Windows PowerShell Jump Start

http://www.microsoftvirtualacademy.com/training-courses/getting-started-with-powershell-3-0-jump-start

Advanced Tools & Scripting with PowerShell Jump Start

http://www.microsoftvirtualacademy.com/training-courses/advanced-tools-scripting-with-powershell-3-0-jump-start

Getting Started with PowerShell Desired State Configuration (DSC)

http://www.microsoftvirtualacademy.com/liveevents/getting-started-with-powershell-desired-state-configuration-dsc

Advanced PowerShell Desired State Configuration (DSC) and Custom Resources

https://mva.microsoft.com/en-US/training-courses/advanced-powershell-desired-state-configuration-dsc-and-custom-resources

Documentation

https://msdn.microsoft.com/en-us/powershell/dsc/overview

https://github.com/PowerShell/PowerShell-Docs

PowerShell Gallery

http://www.powershellgallery.com/

PowerShell modules

Desired State Configuration (DSC) resources

Development

https://github.com/powershell/

 

Bonne lecture et à très bientôt pour la deuxième partie :)

Pour toutes questions n’hésitez pas !

Anthony Costeseque

Posted in Non classé | Leave a Comment »