Script de Compute Cluster Server – Présentation

Par Microsoft Scripting Guys

Si vous cherchez des méthodes pour automatiser la gestion de Microsoft® Windows® Compute Cluster Server 2003, vous vous trouvez au bon endroit. Les Microsoft Scripting Guys ont pour rôle de vous montrer que vous pouvez utililser les fonctionnalités disponibles dans l'interface graphique à partir de la ligne de commande. Et vous deviez taper la même commande plusieurs fois, vous devriez rédiger un script.

Les Scripting Guys ne sont pas complètement stupides (quoique certains le contestent). Nous supposons que plusieurs d'entre vous, ceux chargés de gérer des centres informatiques hautes performances, doivent se dire : « Scripts Windows, n'est-ce pas contradictoire ? Je pensais que vous pouviez uniquement gérer Windows à partir de l'interface graphique. » Nous espérons que les articles et les scripts présentés ici, et dans la suite du Centre de scripts, vous convaincront de reconsidérer votre jugement.

Lorsque Compute Cluster Server est utilisé dans le cadre d'un test, nous découvrons avec joie qu'il dispose d'une interface de ligne de commande à carburateur double corps et d'une bibliothèque de scripts à octane élevé. Sans ces éléments, votre moteur devrait être en sur-régime pour pouvoir gérer un cluster de calcul de 100 x 64 cases et exploserait complètement. Nous avons également découvert que beaucoup d'autres types de fonctionnalité de script d'administration système Windows peuvent devenir très pratiques pour gérer Compute Cluster Server.

Docteur Scripto : « Je croyais qu'un gigaflop ressemblait à Microsoft Bob. »

Sur la page Script de Compute Cluster Server, vous trouverez des liens vers des articles, des exemples de script et d'autres ressources. Cette présentation contient une vue d'ensemble des scripts de Compute Cluster Server. Naviguez vers les autres articles et exemples de script de Compute Cluster Server si vous souhaitez voir un point spécifique que vous devez comprendre afin de rédiger des scripts de Compute Cluster Server.

Si vous êtes arrivé jusqu'ici sans consulter la documentation principale sur Compute Cluster Server pour les professionnels de l'informatique, il ne serait pas superflu de démarrer par l'introduction relative au High-Performance Computing with Windows Cluster Server 2003 (Calculs hautes performances avec Windows Cluster Server 2003, en anglais). Nous n'avons pas trop envie de nous répéter : nous allons plutôt partir du principe que vous avez déjà acquis les bases de Compute Cluster Server et que vous souhaitez savoir comment le gérer avec des scripts.

Sommaire,Sur cette page

Au-delà de l'interface graphique
Comment gérer Compute Cluster Server à partir de la ligne de commande ?
Comment utiliser les scripts Windows sur Compute Cluster Server ?
Nouveautés dans les scripts de Compute Cluster Server ?

Au-delà de l'interface graphique

Supposons : vous avez probablement trouvé la documentation relative aux outils graphiques permettant d'exécuter des clusters de calcul (sinon, consultez la Windows Compute Cluster Server 2003 Technical Library (Bibliothèque technique de Windows Compute Cluster Server 2003, en anglais). Vous êtes fou de joie, hein ? Non ? Bien, les Scripting Guys ont été informés par des sources haut placées que la gestion à partir de la ligne de commande et avec les scripts constitue la norme dans un certain nombre d'installations informatiques hautes performances. Vous pouvez nous faire confiance : les outils d'interface graphique sont souvent efficaces. Mais pour l'interface orientée console, Compute Cluster Server fournit une interface de ligne de commande dotée de cinq outils qui garantissent l'interactivité au niveau de l'invite de commande. Une API d'automatisation COM permet au Compute Cluster Server d'accéder aux langages de script Windows et aux langages de programmation au niveau du système. D'autres technologies de script Windows peuvent aider à automatiser plusieurs opérations de gestion de cluster de calcul.

Lorsque vous combinez les outils de ligne de commande avec une stratégie de script efficace, vous disposez toujours d'une installation informatique haute performance très disponible, d'une charge administrative plus faible et d'une meilleure efficacité. Les scripts permettent d'automatiser et de standardiser les tâches répétitives ou complexes, de réduire les erreurs administratives et de codifier les meilleures pratiques. Ils permetttent également de personnaliser la connexion pour produire les informations spécifiques dont vous avez besoin au format de votre choix afin de faciliter les audits. Nous prêchons probablement des convertis, mais vous ne savez peut-être pas que ceci s'applique également à Windows.

Et non, contrairement aux idées reçues, les Scripting Guys ne travaillent pas à la commission. Toutes ces fonctionnalités pratiques sont inclues gratuitement dans Compute Cluster Server et Windows.

Comment gérer Compute Cluster Server à partir de la ligne de commande ?

Si vous devez effectuer une configuration unique et rapide d'un nœud ou résoudre un problème, admettez-le : vous n'allez probablement pas vous pencher sur une copie pour rédiger un script. Vous allez plus certainement utiliser votre fidèle shell et utiliser un quelconque outil de ligne de commande que vous avez sous la main pour cette tâche. Supposons encore : vous faites partie des personnes qui tapent à la vitesse de l'éclair, non ? Je le savais.

Vous devez prendre conscience que Compute Cluster Server propose ses propres outils de ligne de commande, et Windows bien davantage encore. Vous trouverez dans le tableau ci-dessous une liste des outils de Compute Cluster Server que vous pouvez initialement tester avant de les utiliser dans un script. Pour plus informations, tout au long de cette section nous vous indiquerons d'autres ressources, car l'objectif de cet article concerne les scripts avec VBScript, Windows Script Host (WSH) et les bibliothèques de scripts Windows.

Lorsque vous installez Compute Cluster Server, vous disposez d'outils de ligne de commande permettant d'utiliser des nœuds, des opérations et des tâches de cluster de calcul. Ces outils vous donnent la possibilité d'effectuer virtuellement n'importe quelle tâche de l'interface graphique à partir de l'invite de commande. Les développeurs ont écrit ces outils dans VBScript afin que vous puissiez examiner le code pour apprendre leur mode de fonctionnement. Le code de ces outils vous donnera des astuces pour écrire des scripts de Compute Cluster Server que vous pourrez personnaliser ou étendre, si vous le souhaitez. Naturellement, vous pouvez également utiliser ces outils dans des fichiers batch et des scripts WSH.

Outil

Fonction

job

Permet de créer, de soumettre, de visualiser et de gérer des travaux.

task

Permet de visualiser, d'annuler et de remettre en file d'attente des tâches.

node

Permet d'ajouter, de supprimer et de gérer des nœuds.

cluscfg

Permet de surveiller et de manipuler la file d'attente.

clusrun

Exécute les commandes ou scripts sur plusieurs nœuds en redirigeant la sortie vers le nœud client.

Pour plus d'informations sur la syntaxe des outils, exécutez « toolname /? » à partir de l'invite de commande sur un nœud ou consultez la page Compute Cluster Server Command Line Interface Reference (Référence d'interface de ligne de commande de Compute Cluster Server, en anglais).

Ressources supplémentaires pour la gestion via la ligne de commande

Utilisation de Microsoft Message Passing Interface
Microsoft Message Passing Interface (MS MPI) (en anglais) est le composant de Compute Cluster Server qui prend en charge l'exécution de tâches uniques dans plusieurs processus paralèlles. L'interface Microsoft MPI est basée sur l'implémentation MPICH2 gratuite et portable d'Argonne National Laboratory. Un autre outil de ligne de commande de Compute Cluster Server, Mpiexec.exe (en anglais), vous permet d'utiliser l'interface MPI à partir de la ligne de commande. Pour plus d'informations sur la syntaxe, tapez mpiexec dans l'invite de commande d'un nœud. Les applications utilisant une interface MPI incluent des appels vers des routines MPI spécifiques et doivent s'exécuter au sein de l'exécutable Mpiexec.exe.

Comment effectuer des opérations d'utilisateur
Consultez cette section de la bibliothèque technique de Windows Compute Cluster Server 2003 pour obtenir des conseils pratiques sur l'utilisation de RCE et de Microsoft MPI. La plupart de ces rubriques décrivent le fonctionnement d'une ligne de commande pour une opération donnée ainisi que la procédure dans l'interface graphique.

Utilisation de fichiers batch et script
Cette rubrique de la bibliothèque technique de Windows Compute Cluster Server 2003 fournit des instructions sur le passage de fichiers batch depuis d'autres plates-formes vers Compute Cluster Server.

Déploiement et gestion de Microsoft Windows Compute Cluster Server 2003
Cette rubrique de la bibliothèque technique de Windows Compute Cluster Server 2003 présente plusieurs moyens, y compris des méthodes de lignes de commande, d'automatiser le déploiement de Compute Cluster Server.

Si vous pensiez trouver ici des informations relatives aux scripts sur Microsoft Bob, nous sommes désolés, mais nous n'en avons pas.

Docteur Scripto : « L'API de script de Microsoft Bob est une énigme encapsulée dans un mystère, encapsulé dans une devinette... Ou bien était-ce une devinette encapsulée dans un mystère, encapsulé dans une énigme ? »

Comment utiliser les scripts Windows sur Compute Cluster Server ?

OK, vous avez testé l'outil de ligne de commandes. Regardez : votre clavier est en train de fumer ! À présent, vous devez exécuter certaines tâches complexes et répétitives que vous devrez effectuer régulièrement. Vous souhaitez peut-être tirer des informations d'un fichier ou configurer un grand nombres d'ordinateurs. Vous pouvez taper encore plus vite, mais votre clavier risque de s'emflammer. Vous pouvez commencer par insérer des commandes, dont vous êtes sûr qu'elles fonctionnent correctement, dans un fichier batch. Mais Windows possède un autre type de script totalement différent, plus puissant et pas plus difficile à apprendre que les fichiers batch.

Le type de script que nous défendons et utilisons sur le centre de scripts est présent dans l'environnement de script Windows Script Host (WSH). La plupart des scripts d'administration système sur Windows utilisent l'hôte de script de ligne de commande WSH, Cscript.exe, quoiqu'un hôte graphique, Wscript.exe, est également disponible.

Pour écrire des scripts qui s'exécutent dans ces environnements, vous pouvez utiliser un langage compatible avec WSH. Les moteurs de script VBScript et JScript livrés avec Windows et les moteurs pour d'autres langages, tels que Perl, Python et REXX, sont disponibles en téléchargement gratuits (consultez la liste de ressources). VBScript est le langage de script le plus répandu auprès des administrateurs système Windows, il est donc utilisé dans la plupart des exemples du centre de scripts.

Nous faisons tout pour que nos scripts travaillent dur à notre place, et pour ce faire, ils utilisent les bibliothèques de scripts basées sur le modèle d'objet de composant (Component Object Model , COM), une norme de programmation Windows qui permet l'interaction de différentes applications. Les deux principales bibliothèques de scripts COM que nous utilisons sont :

  • Windows Management Instrumentation (WMI) (en anglais), qui englobe la plupart des fonctionnalités du système d'exploitation Windows, ainsi que plusieurs autres domaines associés tels que Exchange Server. WMI fournit des fonctionnalités à distance permettant de gérer plusieurs hôtes.

  • Active Directory Service Interfaces (ADSI) (en anglais), qui expose des services d'annuaire, tels que Active Directory et le gestionnaire de comptes de sécurité Windows, aux scripts. Vous pouvez utiliser ADSI pour gérer des utilisateurs et des groupes locaux ou appartenant à un domaine.

Si vous possédez les bases des scripts Windows, il peut être judicieux de commencer par le Windows 2000 Scripting Guide. Ce guide décrit de manière exhaustive les scripts d'administration système Windows, de l'apprentissage de VBScript aux scripts au sein de l'entreprise. Une autre ressource importante est le référentiel de script, qui est une collection de milliers d'exemples de scripts d'administration système dans plusieurs langages.

Un exemple de code concret est composé d'un bon millier de mots (et nous souhaitons pouvoir convaincre notre chef de nous payer en conséquence). Voici donc un script simple qui fournit quelques informations susceptibles de vous aider pour votre nœud principal de cluster de calcul. Selon la configuration, vous devrez peut-être installer un ou deux correctifs de sécurité particuliers sur le nœud principal de votre cluster de calcul. Ce script vérifie si l'un des correctifs de sécurité est déjà installé. Nous ne fournirons pas d'explication détaillée maintenant, mais ceci devrait vous donner une idée des types de script dont il est question.

strHotFix = "KB897616"
Set objWMIService = GetObject("winmgmts:")
Set colItems = objWMIService.ExecQuery("SELECT * FROM " & _
 "Win32_QuickFixEngineering WHERE HotFixID = '" & strHotFix & "'")
WScript.Echo "Hot Fix " & strHotFix
If colItems.Count > 0 Then
  For Each objItem In colItems
    WScript.Echo "  Description: " & objItem.Description
    WScript.Echo "  Installed By: " & objItem.InstalledBy
    WScript.Echo "  Installed On: " & objItem.InstalledOn
  Next
Else
  WScript.Echo "  Not found"
End If

Alors, n'avez-vous pas de montée d'adrénaline ? Ce mini échantillon de code est écrit en VBScript et s'exécute dans l'environnement de script de ligne de commande WSH, Cscript.exe. Si vous souhaitez le tester, copiez le code et collez-le dans un fichier texte. Renommez le fichier texte en lui donnant l'extension .vbs. Appelons-le Hotfix.vbs.

Pour exécuter le script, ouvrez une fenêtre d'invite de commande en cliquant sur Cmd.exe. Dans l'invite, tapez :

cscript hotfix.vbs

Vous n'avez pas besoin de taper cscript avant le nom du script si votre hôte par défaut est déjà Cscript.exe. Pour ce faire (et pour faire disparaître les deux lignes du logo et enregistrer ce paramètre par défaut), exécutez :

cscript //h:cscript //nologo //s

Si vous exécutez Hotfix.vbs dans une invite sur laquelle aucun correctif KB897616 n'est installé, la ligne suivante s'affiche :

C:\scripts\CCS>hotfix.vbs
Hot Fix KB897616
  Not found

A présent, essayez de remplacer la valeur attribuée à strHotFix par "KB913446" par exemple. Si ce correctif de sécurité est installé sur votre ordinateur, vous obtiendrez :

C:\scripts>hotfix.vbs
Hot Fix KB913446
  Description: Security Update for Windows XP (KB913446)
  Installed By: SYSTEM
  Installed On: 2/16/2006

Docteur Scripto : « N'est-ce pas génial ? Même Microsoft Bob n'a pas réussi à gérer les correctifs comme cela. »

Doctor Scripto s'emballe un peu parfois, mais si vous devez utiliser des correctifs, ce type de script peut s'avérer utile. Il utilise une classe WMI, Win32_QuickFixEngineering, pour explorer Windows en profondeur et extraire ces informations. Sympa le nom, hein ? Ils n'auraient pas pu lui donner un peu plus simple, comme « HotFix » ? Si, ils auraient pu, mais cela aurait été une erreur. En effet, WMI n'est pas uniquement destiné aux scripteurs, mais aussi aux développeurs employant les langages au niveau système tels que C++, et ils se seraient tordu de rire en entendant un nom aussi évident que « HotFix ». Nous ignorons qui a baptisé les espaces de noms et les classes WMI, mais à notre avis, leur langue maternelle est l'esperanto.

La bonne nouvelle est que, lorsque vous connaissez quelques classes dont les fonctions vous sont utiles, vous pouvez les insérer dans d'autres scripts d'administration système très similaires à celui-ci. Et grâce à ces scripts, vous pouvez automatiser plusieurs tâches complexes et répétitives impliquées dans le déploiement, la configuration et le fonctionnement de Compute Cluster Server. Non seulement, ils éliminent des corvées considérables, mais en codifiant ces opérations sous forme de scripts, vous enrichissez également de manière efficace vos procédures de fonctionnement standard. Ainsi, lorsque vous partez en vacances, vos connaissances opérationnelles, elles, restent au travail.

Les bibliothèques de scripts de Windows existantes ont de multiples possibilités pour exécuter une installation de Compute Cluster Server. Comme vous avez pu le voir, les nœuds principaux et de calcul de Compute Cluster Server peuvent être connectés en cinq topologies différentes de réseaux publiques et privés (consultez Déploiement et gestion de Microsoft Windows Compute Cluster Server 2003). Pour vous aider à dompter cette complexité, WMI fournit des classes qui permettent aux scripts de configurer, de contrôler et de surveiller le réseau entre les nœuds Compute Cluster Server et via un réesau externe dans toutes ces topologies.

Compute Cluster Server installe plusieurs services Windows qui s'exécutent sur les nœuds, et WMI propose des fonctionnalités de script pour gérer ces services. À des fins de surveillance des journaux d'événements et des événements relatifs à Compute Cluster Server, vous pouvez également utiliser plusieurs classes WMI différentes.

Comme chaque nœud de cluster doit faire partie d'un domaine Active Directory, Compute Cluster Server utilise Active Directory pour autoriser et authentifier ses utilisateurs. Les scripts peuvent utiliser l'interface ADSI pour automatiser la gestion des utilisateurs et des groupes dans Active Directory et le gestionnaire de comptes de sécurité local.

Lorsque de nouveaux nœuds sont installés sur un cluster de calcul, vous devez effectuer d'autres tâches, qui peuvent également être scriptées. Par exemple, vous devrez activer le système d'exploitation Windows et une connexion Internet, puis configurer les paramètres réseau sur les nouveaux nœuds. Une nouvelle fois, les classes WMI sont là pour vous aider à automatiser les tâches rébarbatives.

Nouveautés dans les scripts de Compute Cluster Server ?

Jusqu'ici, nous avons utilisé les fonctionnalités de script bien établies depuis longtemps. Toutefois, Compute Cluster Server propose une nouveauté pour WMI et ADSI. De plus, en installant Compute Cluster Server, vous bénéficiez gratuitement d'une API d'automatisation COM toute nouvelle qui donne aux scripts un accès au planificateur de travaux Compute Cluster Server, que vous pouvez utiliser pour gérer la plupart des aspects de votre cluster de calcul. À l'instar de WMI et d'ADSI, vous pouvez rédiger un script de la bibliothèque de Compute Cluster Server dans l'environnement WSH, avec tout langage de script compatible WSH. Nous vous proposons là une affaire !

La grande nouveauté de script de Compute Cluster Server est la bibliothèque d'automatisation COM contenue dans Ccpapi.dll. Cette API corsée fournit un modèle d'objet pour les scripts et les applications qui recouvrent la globalité du cluster de calcul et du planificateur de tâches, y compris les clusters, les nœuds, les travaux et les tâches. Cette API permet d'écrire des scripts pour automatiser simplement une tâche pouvant être exécutée à l'aide de l'interface graphique ou des outils de ligne de commande. Et les noms des éléments tels que les classes et les attributs sont étonnament logiques et univoques. A quoi pensaient-ils ?

Si vous souhaitez vous plonger directement dans les détails de l'API de Compute Cluster Server, consultez le Compute Cluster Pack SDK (Kit de développement logiciel du pack Compute Cluster, en anglais) de Microsoft sur le site Microsoft Developers Network. Ce Kit fournit une référence des interfaces COM, mais elle est plus orientée pour les programmateurs en C++ que pour les scripteurs.

Si vous souhaitez faire un essai sur cette Lamborghini virtuelle dans vos scripts, nous n'avons qu'un mot :

Microsoft.ComputeCluster.Compute

Désolé, nous avons mis le volume un peu fort. Recommençons :
Microsoft.ComputeCluster.Compute

Si vous répétez cette formule dix fois au-dessus de votre cluster une nuit de pleine lune, Doctor Scripto assure que vous doublerez ainsi votre vitesse de processeur. Cependant, même si la lune n'est pas pleine, vous pouvez l'utiliser dans vos scripts : il s'agit de l'identificateur programmatique (progID) dont vous avez besoin pour faire appel aux pouvoirs obcurs de l'API de script de Compute Cluster Server. Vous devez l'utiliser pour servir le Bien, et non le Mal.

Disons que vous souhaitez obtenir les propriétés d'un nœud de cluster. Vous pourriez utiliser un script comme celui-ci :

strNode = "testlab12"
Set objComputeCluster = CreateObject("Microsoft.ComputeCluster.Cluster")
objComputeCluster.Connect("localhost")
WScript.Echo "Compute Cluster Name: " & objComputeCluster.Name
Set colNodes = objComputeCluster.ComputeNodes
For Each objNode In colNodes
  If LCase(strNode) = LCase(objNode.Name) Then
    WScript.Echo "Compute Node Name: " & objNode.Name
    WScript.Echo "  Number of Processors: " & objNode.NumberOfProcessors
    WScript.Echo "  Processor Architecture: " & objNode.ProcessorArchitecture
    WScript.Echo "  Processor Speed: " & objNode.ProcessorSpeed & " MHz"
    WScript.Echo "  Memory: " & objNode.Memory & " MB"
    WScript.Echo "  Status: " & objNode.Status
    WScript.Quit
  End If
Next
WScript.Echo strNode & " not found."

Si testlab12 est en ligne dans le cluster de calcul, vous devez obtenir des lignes ressemblant à :

C:\scripts>ccs-list-node-simple.vbs
Compute Cluster Name: TESTLAB
Compute Node Name: TESTLAB12
  Number of Processors: 2
  Processor Architecture: AMD64
  Processor Speed: 2192 MHz
  Memory: 2047 MB
  Status: 0

Dans le cas contraire :

C:\scripts>nodeproperties.vbs
Compute Cluster Name: TESTLAB
testlab12 not found.

Vous êtes curieux de savoir ce que « Status: 0 » signifie ? Vous y tenez vraiment ? OK, OK, cela veut simplement dire que l'état des nœuds est prêt. Ils n'auraient pas pu le dire comme cela ? Eh bien, la propriété Status utilise une liste de constantes associées à une valeur entière. Malheureusement, vous ne pouvez pas accéder directement à la valeur de la chaîne avec un script. Mais si vous souhaitez savoir comment un script gère cette propriété et obtient une chaîne explicative, consultez le script Get Nodes Properties dans le référentiel de scripts.

Pardon ? Vous voulez savoir ce qui se passe ? Il y a des personnes incroyablement exigeantes, ici. Comme nous le disait un vieux sage, "Laissez-les vous supplier."

Pas de panique, nous n'avons pas l'intention de vous faire attendre. Revenez bientôt, vous pourrez lire un article plus détaillé expliquant quelques unes des tâches principales pouvant être automatisées par script, Un tour des fonctionnalités de script de Compute Cluster Server. Vous pouvez également parcourir les exemples de script qui montrent comment automatiser Compute Cluster Server à l'aide d'API de script de Compute Cluster Server, ainsi que les scripts standard permettant de gérer Compute Cluster Server.

Nous espérons que vous écrirez un certain nombre de scripts d'administration système pour vos clusters de calcul. Et dans ce cas, envoyez-nous des exemples et indiquez-nous les problèmes que vous avez rencontrés. Vous pouvez nous contacter à The Microsoft Scripting Guys.

Docteur Scripto : « Il vous suffit de mentionner Microsoft Bob. »