tutoriel

Ma méthode pour les stations « lentes »

2

Les postes de travail ont un sujet récurrent : ils sont jugés trop lents. Il faut déjà faire la part entre l’impatience de l’utilisateur et ce qu’on demande à la machine. Le plus souvent, cela concerne les ordinateurs portables, qui ont des ressources plus limitées que les fixes (quoique la frontière se réduise de plus en plus). Il se trouve aussi, que les portables sont souvent attribués à des « VIP », dont on écoute plus volontiers leurs problèmes, y compris l’impatience.

Quand je dois traiter ce type de sujet, voici les éléments que je vérifie par ordre. Je chronomètre à chaque fois le temps de boot + ouverture de session comme temps de référence.

  1. Bios: est-ce que le mode ahci/raid est activé ? (attention à certains disques SSD qui n’aiment pas le mode raid pour le trim)
  2. Supprimer les anciens profils itinérants avec delprof.exe + lancer une defrag
  3. Vérifier que la carte réseau ethernet et bien avant la carte Wifi & co (si la station passe par le réseau ethernet)
  4. Vérifier que la partie réseau n’a pas de problème (100Mb/s full duplex, pas de collision sur le port..)
  5. Lancer Autoruns de Sysinternals. Nettoyer certains programmes non indispensables (Java updater, Adobe speed Launcher…)
  6. Vérifier la version des pilotes & bios. Cela inclus les utilitaires constructeurs types lecteurs d’empreintes/smartcard.
  7. Vérifier la version du moteur antivirus. S’il est configuré pour faire un full scan au boot, le désactiver au moins temporairement.
  8. Lancer un autre moteur antivirus/antispyware autre (par exemple housecall qui est gratuit).
  9. Lancer Process monitor en mode « boot logging« .
  10. Vérifier le plan d’économie d’énergie. S’il n’est pas par défaut ou modifié par le constructeur, le remettre par défaut.
  11. S’il s’agit d’un profil itinérant, vérifier la taille et le débit réseau vers le serveur de fichier l’hébergeant (avec Wireshark sur le chemin).
  12. Prendre un autre portable, avec le même matériel. Y installer Windows manuellement (sans utiliser de master). Installer le minimum nécessaire et comparer les temps.

 

Avec cette méthode, j’ai déjà réussi à faire chuter le temps de boot+ouverture de session de 1mn30 à 45 secondes.

Si vous utilisez d’autres pistes avec succès, n’hésitez pas à m’en faire part dans les commentaires!

Popularity: 7% [?]

19-02-2011 14-09-58

Sécuriser son Windows dans le cloud (Dedibox/Amazon…)

0

Suite  à mon retour vers Dedibox, et le fait que j’y installe du Windows, je me suis demandé ce que je pouvais faire pour la sécuriser.

Voici les pistes envisagées:

  • Pas de port TCP accessible directement. Passer donc par exemple avec LogMeIn, au moins pendant la configuration. L’accès idrac n’est pas assez fluide et simple d’accès.
  • Renommer le compte Administrateur via GPedit
  • Interdire l’affichage du dernier compte authentifié via GPedit.
  • Ajouter un disclaimer, toujours via GPedit. Cela n’arrêtera pas un pirate motivé, mais peu suffire à bloquer certains logiciels de brute force RDP.
  • Autoriser RDP mais:
    • Sur un port TCP non standard. Procédure Microsoft : http://support.microsoft.com/kb/306759/en-us/
    • Utiliser le firewall Windows pour autoriser l’accès uniquement depuis certaines IP fixes. Pour y accéder depuis ailleurs, d’abord se connecter en LogMeIn pour modifier la règle firewall.
    • Autoriser uniquement les clients permettant une authentification réseau.
  • Scanner régulièrement les adresses IP depuis l’extérieur avec nmap pour vérifier ce qui est visible.
  • Appliquer les mises à jour Windows dès leur sortie.

Popularity: 9% [?]

16-02-2011 08-25-44

Dedibox: Nat de VM Hyper-V

4

Suite au retour sur Dedibox, j’ai décidé d’utiliser Hyper-V plutôt que VMware pour la virtualisation. Les adresses IP publiques sont facturées chez Online.net, et d’autre part je ne veux pas que certaines VM soient exposées sur Intrenet (DC, Exchange…).

Par défaut, Hyper-V ne permet pas de faire du Nat, et donc cacher tout se beau monde tout en leur donnant accès à Internet.

Voici les grandes étapes:

  • Installer le rôle Network Policy and Access Services
  • Créer un réseau interne dans Hyper-V
  • Assigner une adresse IP fixe (ex 192.168.1.1) sur la carte réseau du réseau ainsi crée (carte virtuelle Hyper-V)
  • Configurer Routing and Remote Access pour faire du NAT
  • Configurer les VM afin d’utiliser le réseau virtuel Hyper-V et de passer en DHCP ou IP fixe suivant vos souhaits.

Ajouter le rôle

Configurer le NAT

Popularity: 15% [?]

15-02-2011 17-23-33

Test nouvelle Dedibox (R410)

9

Je n’ai pas pu résister à l’appel des nouvelles offres Dedibox !

Les plus fervents lecteurs savent que j’ai déjà par le passé utilisé leur serveurs avant de basculer chez Amazon.

Sauf que là, le rapport puissance/qualité reprends le dessus en version serveur dédié. 24Go de ram, 16 coeurs logiques et 2To. L’arme de destruction massive reste l’idrac, qui permet enfin de faire ce que l’on veut avec son serveur :)

Commande du serveur

Depuis l’interface Web, commande faite en quelques clics. Premier stress, rupture de stock (message du premier écran). Anyway, je prends quand même, quitte à patienter 7 jours. Bizarre, sur l’écran suivant, on m’indique qu’il y a du stock (30), et que je vais en avoir une tout de suite :) Ca n’a pas raté, 10mn seulement après la commande, mon serveur tout chaud est sorti du four !

KVM KVM KVM

Tel un chercheur d’or, je me mets en quête de mon idrac immédiatement. Bon, en fait il faut déployer un serveur, même bidon, pour que le menu magique apparaisse. Ce qui peut tromper, c’est le menu rescue, qui propose un kvm virtuel (vnc), qui n’a rien à voir avec un idrac de dell. Pour les lecteurs pressés, c’est ici qu’il faut aller:

Ensuite, on a accès à l’interface Web de Dell pur jus. On lance le KVM Dell (Java), et il suffit de monter un .iso local ou donner accès à un lecteur DVD/virtuel clone drive.

La question est : Est-ce que le débit va être au rendez-vous pour déployer un OS (au hasard, Windows) ? La réponse est OUI. Avec mon accès fibre Orange, je pousse facilement l’ISO à traver idrac à 5Mb/s.

Stockage

La question qu’on peut se poser est: Comment est configuré le raid ? En raid 1. Du coup on voit environ 1800Go:

La suite prochainement :)

Popularity: 16% [?]

PowerShell: Measure-Command et Write-Output

1

Measure-Command permet de mesurer le temps d’exécution d’un bloc de code PowerShell, de façon simple et efficace. Cependant, cela génère une contrainte:

Measure-Command n’affiche aucun write-output à l’écran!

Il faut alors utiliser par exemple write-host, qui lui envoi le texte directement à la console, et n’est donc pas impacté. Utiliser write-host peut générer des impact:

  • Une redirection de la sortie écran vers un fichier ne fonctionnera pas ( > monlog.txt).
  • L’ordonnanceur ORSYP ne gère pas bien les sorties faites par Write-host, alors que les write-output ne posent pas de problème

Voici un script pour illustrer le sujet (ou à télécharger ici lotp_test_measure-command):

#******************************************************************************
#
#
Titre: lotp_test_measure-command.ps1
#
#
Description: test de measure-command
#
#
Prérequis: désactiver la signature des scripts PowerShell: Set-ExecutionPolicy remotesigned
#
#
Auteur: Mathieu Chateau – LOTP
#
mathieu.chateau@lotp.fr
#
Version: 0.1
#
******************************************************************************

#purge de l’écran
Clear

#Objectif du script: stocker plusieurs valeurs pour chaque ligne du tableau

Write-Output « Test 01: fait un sleep de 2s dans un measure-command« 
$temps=Measure-Command { sleep -Seconds 2}
Write-Output « temps d’exécution du test 01: $temps« 
Write-Output « ############« 

Write-Output « Test 02: fait un write-output dans un measure-command« 
$temps=Measure-Command {Write-Output « ce message est supprimé par measure-command, vous ne le verrez pas« }
Write-Output « le message n’est pas apparu mais la commande est exécutée quand même« 
Write-Output « temps d’exécution du test 02: $temps« 
Write-Output « ############« 

Write-Output « Test 03: fait un write-host dans un measure-command« 
$temps=Measure-Command {Write-host « ce message est envoyé à la console, vous le voyez même dans un measure-command« }
Write-Output « temps d’exécution du test 03: $temps« 

Popularity: 10% [?]

Powershell : tableau multidimensionnel (array de array)

3

J’ai dû récemment stocker des valeurs dans des tableaux (array) multidimensionnel en PowerShell. J’ai quelques peu galéré, et je me suis dit que je ne devais pas être le seul. Mes recherches d’infos via Google ne ramenaient pas grand chose, il est donc temps d’y remédier… :)

L’objectif est de stocker plusieurs ensembles de valeurs dans un tableau, afin de pouvoir les appeler dans une boucle for.

Ce qui m’a induit en erreur: Si on ne met pas une virgule au départ, cela ne fonctionne pas….Sauf si on met plus d’un élément lors de l’initialisation du tableau de tableau…Tout se complique quand on change et ne met plus qu’un seul élément… Patatras!

Voici un script qui explicite les différents cas, le dernier étant celui qu’il faut utiliser:

Egalement en téléchargement ici: lotp_test_array_of_array

#******************************************************************************
#
# Titre: lotp_test_array_of_array.ps1
#
# Description: test sur des array
#
# Prérequis: désactiver la signature des scripts PowerShell: Set-ExecutionPolicy remotesigned
#
# Auteur: Mathieu Chateau – LOTP
# mathieu.chateau@lotp.fr
# Version: 0.1
#******************************************************************************

#purge de l’écran
Clear

#Objectif du script: stocker plusieurs valeurs pour chaque ligne du tableau
Function afficherTableau($array)
{

for ($i=0;$i -lt $array.Length;$i++)
{
Write-Output « boucle N°: $i »
Write-Output $array[$i][0]
Write-Output $array[$i][1]
Write-Output $array[$i][2]
Write-Output « ——– »
}

}

#Ce tableau ne fonctionne pas du tout comme prévu (il manque la virgule au début pour cela)
$tableauMauvais=(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »)
Write-Output « Affichage mauvais tableau »
afficherTableau $tableauMauvais

#Ce tableau fonctionne mais la construction n’est pas correcte (pas de virgule au début, mais ok car 2 éléments)
$tableauPasCorrect=(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »),(« Microsoft »,« Réseau »,« Sécurité »)
Write-Output « Affichage tableau qui fonctionne mais mal construit »
afficherTableau $tableauPasCorrect

#Tableau multidimensionnel construit correctement
#creation du tableau avec un seul élément (virgule avant la parenthèse)
$tableauCorrect=,(« Mathieu »,« Chateau »,« mathieu.chateau@lotp.fr »)
#Ajout d’un élément
$tableauCorrect+=,(« Microsoft »,« Réseau »,« Sécurité »)
Write-Output « Affichage tableau qui fonctionne et bien construit »
afficherTableau $tableauCorrect

Pour la coloration syntaxique dans le blog, j’ai utilisé le script PowerShell proposé ici:
http://helgeklein.com/blog/2010/01/syntax-highlighting-powershell-code-in-html-with-a-powershell-script/

Popularity: 14% [?]

Tutoriel LOTP: Introduction à Fiddler2 (8mn)

1

Voici un tutoriel sur Fiddler2, qui permet de tracer les requêtes Web, très utile pour diagnostiquer/investiguer un site web:

Sur Youtube:

Popularity: 24% [?]

wireshark_popcorn_srvloc

Wireshark: traces du PopCorn Hour

1

Maintenant que j’ai un PopCorn sur le réseau, j’ai voulu voir son impact sur mon réseau local:

  • 160 paquets au boot sur 1 mn 30

Il génère principalement du multicast DNS (mDNS), et du SSDP. Désactiver le protocole propriétaire myihome permet de réduire pas mal les messages mDNS.

Surprenant, mon PC se met à l’interroger en UDP toutes les 30 secondes, sur le port 427 (srvloc), mais le PopCorn n’écoute pas sur ce port:

TCPView permet de voir le processus à l’écoute sur mon PC, mais il affiche juste le conteneur, svchost:

wireshark_popcorn_tcpview

Process Explorer permet de venir à bout de l’énigme:

wireshark_popcorn_procexp

C’est donc le pilote HP de mon imprimante réseau qui envoi des requêtes au PopCorn. Bien que celui-ci réponde par un message icmp qu’il n’écoute pas ce port, HP continue… Argh!

Voici un filtre Wireshark pour trouver rapidement un boitier PopCorn sur le réseau:

http.server contains "Syabas myiBox"

Popularity: 12% [?]

Windows Server 2008 R2 - Administration avancée

Windows Server 2008 R2 – Administration avancée est sorti!

1

La nouvelle version du livre pour Windows Server 2008 R2 est disponible chez ENI, toujours à la fois en livre papier et numérique

Il s’applique toujours à la version précédente, car on a spécifié quand c’est R2 seulement. Il inclut également un nouveau chapitre dédié à la haute disponibilité

Popularity: 12% [?]

pxeboot.n12

WDS/MDT: enlever F12

0

Par défaut, pour démarrer depuis le réseau via WDS, il faut:

  • Indiquer pendant le bios de démarrer sur le réseau (F12 en général)
  • Une fois le bail DHCP obtenu, il faut de nouveau et rapidement presser F12 pour vraiment démarrer sur le réseau

Cette deuxième confirmation est une sécurité. Si l’ordre de boot positionne le réseau avant le disque dur, les machines essaieront tout le temps de démarrer via le réseau avant le disque dur. En général, on démarre sur le réseau uniquement pour installer le système d’exploitation, et ensuite tout le temps depuis le disque dur.

Moyennant d’avoir les bios correctement configurés, le deuxième F12 est en trop. Depuis WDS (2003 et 2008), il suffit de remplacer pxeboot.com par pxeboot.n12 pour supprimer le deuxième F12:

Pour rattraper un historique sur un parc existant, Dell et HP offre des outils centralisés pour paramétrer le bios des machines à distance (génération d’un exécutable à télé-distribuer en général):

Popularity: 18% [?]

amazon_calculateur

Migration de Dedibox vers Amazon EC2

8

Je suis entrain de préparer ma migration depuis Dedibox pro vers Amazon EC2 (Elastic Cloud Compute). Voici mes premières impressions du nuage Amazon.

Pourquoi je migre

Dedibox a un positionnement étrange. Ils proposent des serveurs performants (Dedibox Pro), mais ils empêchent l’utilisation de leur serveurs comme hyperviseur, ce qui en réduit fortement l’intérêt. Leurs switches coupent les ports qui présentent plus d’une adresse mac, ce qui est le cas avec VMware ESXi ou Hyper-V. Je m’étais rabattu sur un Linux avec VMware Server, mais les VM sont très (trop) lentes. Il en résulte une très bon serveur matériel, mais inexploitable pour de la virtualisation décente. Nul doute que ce soit du hasard, la virtualisation étant le moyen principal de consommer les ressources sur ce type de serveur. OVH propose ESXi, mais le coût est plus fort (notamment avec les 15€/mois pour avoir droit à plusieurs IP publiques, sans parler du raid matériel).
Comme de toute façon mon objectif c’est d’avoir des environnements à la demande, et que c’est la cible d’Amazon EC2, leur offre m’a intéressé rapidement. Au pire, cela va me coûter autant que Dedibox, mais au moins j’en aurai pour mon argent!

Etape 1: Le calculateur Amazon

En parlant d’argent, la première difficulté est de savoir combien ça va coûter! Bon en fait, la première difficulté est de savoir le type d’instance qui convient:

  • A la demande: aucun engagement, vous ne payez que la consommation,
  • Réservée: vous payer une fois une somme, et ensuite la consommation coûte très peu,
  • Spot: vous ne savez pas quand la VM sera démarrée, mais elle coûtera peu (moins qu’à la demande, mais plus que réservée). Il s’agit d’enchère où Amazon solde les ressources non utilisées.

De façon logique, avoir une VM à la demande allumée tout le temps coûte beaucoup plus cher qu’une VM réservée allumée tout le temps.
Le calculateur a un problème d’ergonomie. Par défaut, il inclut dans le prix mensuel (1er mois), les frais qu’on ne paye qu’une fois. Machinalement, on multiplie par 12 et on prend peur!

Pour calculer le coût par mois il faut donc faire (pour une instance small, réservée et allumée en permanence):

(227.50$ + 29.28$ * 12)/12 = 48.23$ / mois

Le coût moyen d’un VM est donc de  34€ par mois en lissé. Car les 227.50$ sont à payer tout de suite. Pour cette somme, on a donc un linux 32 bit, sur une VM ayant les capacités suivantes:

  • Processeur: 1VCPU 1,7Ghz : 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit)
  • Mémoire: 1,7Go
  • Stockage: 160Go de disque

Le truc bizarre, c’est les 44$ de taxes sur la facture (voir tout en bas de l’article)…

Etape 2: Réserver une instance

C’est le moment de se jeter à l’eau!! Avant, j’ai tout de même démarré une VM à la demande pendant une 1/2 heure pour être sûr des performances. On choisi la taille de la VM (small en ce qui me concerne), et le lieu où elle sera instanciée (2 sites aux USA, 1 site en Europe (Irelande). J’ai choisi l’Irlande, afin de m’épargner la latence transatlantique. Après 5 cliques de mulot, on est en pending. Après 10 minutes, le statut passe à active.
Il s’en suit un grand moment de solitude, où l’on cherche sa VM tant attendue sans la trouver! L’aide n’est pas très explicite. Il faut en fait créer une VM à la demande sur le même site géographique, dans la même zone (2 possibles en Irelande). On ne voit nulle part que s’est rattaché à notre réservation, il faut faire confiance au système. On a juste la confirmation au bout de quelques heures, dans le suivi de facturation en voyant qu’elle est facturée à 0,04$ par heure où elle est allumée.
A ce jour, une VM réservée ne peut héberger qu’un Linux. Windows est cantonné aux VM à la demande, et son taux horaire est un peu plus élevé, car la licence Windows est fournie par Amazon.
Le choix de l’architecture (32/64 bit) dépend de la taille de VM.

Etape 3: Créer la VM

Maintenant que j’ai compris qu’il faut créer une VM à la demande et faire confiance, cela est très facile (5 écrans + 5 minutes de patience). On n’installe pas son système d’exploitation, mais on choisit une image toute prête parmi plusieurs centaines. Amazon met en avant 5 Fedora (4 en 32bit et 1 en 64bit), et 3 Windows. L’onglet Community AMIs permet d’élargir le choix à 971 images.

Le découpage du stockage pour Linux sur les images Amazon est 10Go pour le système et 150Go pour le reste. La VM voit deux partitions (/dev/sda1 et /dev/sda2):

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             10321208   1383500   8413420  15% /
/dev/sda2            153899044   6793004 139288416   5% /mnt
none                    870472         0    870472   0% /dev/shm

Lors de la création de la VM et ultérieurement, Amazon propose inclus un Firewall externe à la VM. Vous pouvez ainsi définir les flux entrant autorisés. C’est très pratique, car on évite un iptable:

Etape 4: Accès à l’instance

Maintenant que l’instance est running, il est temps d’y accéder. Un clic droit sur l’instance propose le menu suivant:

L’option Connect donne l’écran suivant:

Vous l’aurez compris:

  • pas d’accès de type console (Get System Log permet de voir le log du boot),
  • Pas de mot de passe root, mais l’utilisation d’un certificat (obtenu à la création de la VM).

Sur Windows, un client gratuit pour faire du ssh est Putty. Le problème est que Putty ne reconnait pas le certificat fourni par Amazon. Ce dernier documente la procédure pour le faire fonctionner:
http://docs.amazonwebservices.com/AmazonEC2/gsg/2007-01-19/putty.html

En résumé, il faut utiliser PuttyGen, fourni par les même que Putty, afin de loader le certificat Amazon et le convertir dans le format Putty. Après, ça fonctionne nickel:

Etape 5: Performances

Cet aspect est critique en général et en particulier quand on parle de VM. Bonne nouvelle, je suis très satisfait des performances:

  • Réseau: on tire facilement 20Mb/s
  • Disque: 121Mo/s en écriture (dd if=/dev/zero of=dd.dd bs=1M)

Pourquoi est-ce qu’Amazon fournie de telles performances ? Parce qu’il facture la consommation réseau (0.170$ par Go de data)! Contrairement aux hébergeurs classique qui facture tout compris, Amazon facturant à la consommation, ne perd pas d’argent si de gros consommateurs utilisent son service. Sur Dedibox, vous pouvez consommer du 100Mb/s non stop sans payer pour autant. Ils  mutualisent donc plus fortement les connexions afin de réduire les coûts (avez-vous déjà remarqué qu’au dessus de 50Mb/s il y a un trait rouge sur votre graphe de consommation ?).

Je préfère payer un peu plus cher quand je consomme plus mais avoir cette qualité. On peut suivre presque en temps réel sa facturation à venir:

Etape 6: Les options Amazon

Ils ne sont pas en restent pour vous inciter à prendre plus de service:

  • Répartiteur de charge entre vos VM, avec détection de panne sur les VM (facturé au Go de data)
  • Stockage supplémentaire utilisable par une VM avec des snapshots (mais indépendant de celle-ci) (facturé au Go et million de IO)
  • Adresse IP publique supplémentaire que vous pouvez rattacher à n’importe quelle VM (1/VM) (facturée si non utilisée)

Popularity: 23% [?]

Tutoriel LOTP: introduction à Wireshark (15mn)

13

Voici un tutoriel sur Wireshark qui permet de sniffer les paquets réseaux. Il est souvent utilisé quand on a des problèmes réseaux, notamment pertes de paquets et lenteurs.

Enjoy!

Ceux qui préfère télécharger, c’est par ici : http://content.screencast.com/users/Mathieu_CHATEAU/folders/Default/media/3ff0e0a7-823e-4ebf-8e2d-f0ac0f8f9435/introduction_Wireshark.mp4?downloadOnly=true

Popularity: 64% [?]

Windows Server 2008 R2 sur mon MacBook Air!

1

Ce post fait suite à mon billet précédent « J’ai un Mac…C’est grave docteur ?« .
J’avais installé Windows 7 RC, qui marchait très bien. Cependant, j’avais besoin de faire tourner un Windows Server 2008 R2 avec hyper-V.
Ce dernier ne peut pas être exécuté dans une VM. J’ai donc décidé d’installer Windows Server 2008 R2 sur mon MacBook Air.
La procédure est simple mais il y a un évènement à ne surtout pas rater… here we go:

  • Copier le dossier Bootcamp du DVD MacOS X sur une clé USB, ceci va être critique pour plus tard !
  • démarrer sous MacOS X. Dégager la partition Windows, et en créer une nouvelle (via le menu BootCamp).
  • démarrer sur le DVD Windows Server 2008 R2. Faire le setup de manière classique.
  • au premier boot de Windows, il faut installer les pilotes bootcamp (le msi directement) sur le champ.
    Si vous redémarrer sans le faire, vous ne pourrez pas faire ctrl + alt + supr, et donc ouvrir une session.
    J’ai dû brancher un clavier usb pour pouvoir le faire!

Il ne reste plus ensuite qu’à redonner l’apparence d’un poste de travail à Windows Server 2008 R2, via powershell:

import-module servermanager
Add-WindowsFeature Desktop-Experience
Add-WindowsFeature Wireless-Networking
Add-WindowsFeature Net-Framework
Add-WindowsFeature Telnet-Client
Set-Service -name Themes -startuptype Automatic
shutdown /r /t 15 /c "reboot pour prise en compte du service themes"

Il ne reste plus qu’à activer le thème Windows 7 pour retrouver Aero.

L’installation d’Hyper-V bloque la mise en veille du portable:
Sleep and hibernate power features are not available when you enable Hyper-V technology on a Windows Server 2008-based portable computer

J’ai donc crée un boot par défaut sans hyper-V via bcdedit:

bcdedit /copy {current} /d "Microsoft Windows Server 2008 - sans hypervisor"
bcdedit /set {identifiant de la commande précédente} hypervisorlaunchtype off /default

Popularity: 9% [?]

vmware workstation 2008R2 cluster

Tutoriel lotp: VMware Workstation – Windows Server 2008R2 en cluster

3

Je viens de faire un tutoriel sur la mise en oeuvre d’un cluster Windows Server 2008 R2 dans VMware Workstation.
La partie sensible est la réservation persistante scsi-3 impérative depuis Windows Server 2008.

J’ai poste le tutoriel sur screencast: http://www.screencast.com/t/R7ndyktfNXk
vmware workstation 2008R2 cluster

pour les adeptes de Youtube, je l’ai posté aussi (mais qualité inférieure):

Popularity: 47% [?]

Est-ce que vos serveurs/stations sont sous garantie ?

1

Il y a certains contextes où l’on ne dispose pas de cette information. Le parc en question est composé de serveurs Dell et HP. Ces deux fabricants proposent de vérifier cette information sans problème, mais seulement de façon unitaire (par 10 pour HP, mais pour un même numéro de produit). Un appel au support Gold donne le même résultat pour les deux, ils ne proposent pas d’autres moyens, et le support eux mêmes utilisent ces pages.

Pour Dell: http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/fr/details?c=fr&l=fr&s=gen
Pour HP: http://www13.itrc.hp.com/service/ewarranty/warrantyResults.do

Quand on a quelques serveurs ou stations, cela ne pose pas de problème. Mais quand il s’agit de vérifier 230 machines, cela se complique!

1/Récupérer les numéros de série des serveurs/stations

La première étape consiste à avoir la liste des machines où récupérer le numéro de série, par exemple depuis l’active directory avec Adfind.
J’ai crée le vbscript suivant, qui prend en argument un nom de serveur, et renvoi une ligne formatée pour un CSV, avec plusieurs informations dont l’asset tag HP ou Dell. Par exemple:

ServeurA;Dell Computer Corporation;PowerEdge 1850;SerialIci;;2;x86 Family 15 Model 4 Stepping 1;3220455424;
ServeurB;HP;ProLiant DL360 G5;SerialIci;;4;x86 Family 6 Model 23 Stepping 10;3487408128;

Le code VBScript:

-------------------------------------------------------------------------------------
Dim hostname,manufacturer,model,serial,assettag
Set objArgs = WScript.Arguments
strComputer = objArgs(0)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colSettings = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objComputer in colSettings
 hostname= objComputer.Name
 manufacturer=objComputer.Manufacturer
 model=objComputer.Model
 memory= objComputer.TotalPhysicalMemory
 cpucount= objComputer.NumberOfProcessors
Next
Set colSettings = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_Processor")
For Each objProcessor in colSettings
 cputype=objProcessor.Description
Next
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_BIOS",,48)
For Each objItem in colItems
serial=objItem.SerialNumber
Next
wscript.echo hostname & ";" & manufacturer & ";" & model & ";" & serial & ";" & assettag & ";" & cpucount & ";" & cputype & ";" & memory & ";"
-------------------------------------------------------------------------------------

Il reste ensuite a appeler ce script par machine:

for /f %s in (serveurs.txt) do cscript //NOLOGO serial.vbs %s >> serveurs.csv

2/Vérifier les garanties

On a donc maintenant un fichier CSV avec notamment le fameux serial par machine. Le reste va devenir un peu plus « artisanal », car on va:

  • Construire l’URL a appelé pour chacun des fabricants (avec le numéro de série en paramètre)
  • Récupérer la page Web (résultat de la recherche) en html avec wget. (Une page html par machine, le fichier ayant comme nom le numéro de série)
  • Parser les pages pour récupérer uniquement la date d’achat et fin de garantie.

Les étapes unitaires ne sont pas techniquement compliquée, mais nécessite un peu de temps. Plus on a de machines à vérifier, plus cela devient intéressant en terme de temps. D’autre part, on progresse toujours plus en prenant ce chemin qu’en faisant la même tâche 230 fois…

A/Construire les adresses

Une fois le fichier excel importé, on va utiliser les fonctions Excel (en anglais) pour créer l’url des pages. Cela suppose que les numéros de séries sont dans la colonne E.

Pour Dell:

=CONCATENATE("wget -F -O ";E3;" ""http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/fr/details?c=fr&l=fr&s=gen&~ck=anavml&servicetag=";E3;"""")

Le résultat est de la forme:

wget -F -O YYYYY "http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/fr/details?c=fr&l=fr&s=gen&~ck=anavml&servicetag=YYYYYY"

Pour HP:

=CONCATENATE("wget -F -O ";E3;" --post-data=""BODServiceID=NA&RegisteredPurchaseDate=&country=FR&productNumber=AAAAAA-AA&serialNumber2=&serialNumber3=&serialNumber4=&serialNumber5=&serialNumber6=&serialNumber7=&serialNumber8=&serialNumber9=&serialNumber10=&x=31&y=12&serialNumber1=";E3;"""";" http://www13.itrc.hp.com/service/ewarranty/warrantyResults.do")

Il faut remplacer AAAAAA-AA par le product part.

Le résultat est de la forme:

wget -F -O YYYYYY --post-data="BODServiceID=NA&RegisteredPurchaseDate=&country=FR&productNumber=AAAAAA-AA&serialNumber2=&serialNumber3=&serialNumber4=&serialNumber5=&serialNumber6=&serialNumber7=&serialNumber8=&serialNumber9=&serialNumber10=&x=31&y=12&serialNumber1=YYYYYYYY"http://www13.itrc.hp.com/service/ewarranty/warrantyResults.do

B/Récupérer les pages Web

Il suffit de copier/coller le résultat des concaténations dans un .bat. Wget pour Windows est téléchargeable ici par exemple.

Le répertoire courant du .bat se rempli de fichiers portant comme nom chaque numéro de série.

Vous devez d’abord faire tous les Dell puis tous les HP afin de séparer les fichiers.

C/Parser les pages Web

J’ai commencé l’informatique sur Unix/Linux. Pour se qui est de parser des fichiers textes, j’ai gardé mes habitudes sed/awk/grep. Pour faire cela, j’utilise Cygwin sur Windows, qui est gratuit.

Parser les pages HTML pour Dell:

for serial in $(ls -1);do
achat=`cat $serial | awk '{FS="</table>";print $2}' | awk '{FS="<td";print $7}' | grep class | cut -d'>' -f2 | cut -d'<' -f1`
garantie=`cat $serial | awk '{FS="contract_oddrow\">";print $5}' | cut -d'<' -f1 | grep "/"`
echo "$serial ; $achat ; $garantie" >>dell_output.csv
done

Parser les pages HTML pour HP:

for serial in $(ls -1);do
achat=`cat $serial | sed "s/[\t]//g" | grep '^[0-9]\{2\}' | head -1`
garantie=`cat $serial | sed "s/[\t]//g" | grep '^[0-9]\{2\}' | head -2 | tail -1`
echo "$serial ; $achat ; $garantie" >> hp_output.txt
done

Il ne reste plus qu’à faire le rapprochement via les numéros de séries dans Excel :)

Popularity: 8% [?]

Haut de page