Scripting Jython avec wsadminlib
Depuis la version 6.0, le jython est le langage officiel de scripting pour WAS.
Le jython est un langage puissant, avec une syntaxe complexe. De plus, la documentation correspondant aux commandes wsadmin est assez difficile à localiser dans l’Infocenter IBM.
L’administrateur WAS qui souhaite scripter la création d’un serveur d’application et de ses ressources peut rapidement se retrouver avec des scripts compliqués à développer et difficiles à maintenir. De plus, il y a peu d’exemples disponibles en ligne (à part le fichier wsadminJythonExampleScripts.zip).
Pour les sites en WAS version 6.1 ou 7.0, il y a maintenant une ressource IBM très intéressante disponible en ligne. Il s’agit du package wsadminlib. Ce package encapsule la plupart des fonctions courantes de scripting, comme la création de serveurs et de clusters, la configuration de propriétés, l’interrogation d’attributs, …
Il y a plus de 500 méthodes disponibles pour environ 9000 lignes de jython.
Il y a deux manières d’utiliser ce package :
- En extrayant le bloc de code correspondant à une méthode, pour le réutiliser dans un script spécifique
- En utilisant, à partir d’un script, les fonctions disponibles dans ce package (ce qui est la meilleure solution !)
Chaque méthode est appelée avec les paramètres nécessaires, et le résultat de la fonction peut être récupéré dans une variable. Un système de log des opérations effectuées est également disponible.
Exemple d’utilisation pour créer un cluster avec deux serveurs :
# Création d'un cluster de deux serveurs sur le même node
# LM Demey - 25/05/2010
# Ce script a été testé en WAS 7.0 et utilise la bibliothèque wsadminlib.
# Mode d'appel (depuis le bin du profil ou du Dmgr) : wsadmin -lang jython -f fichier.py
# Exemple : wsadmin -user was -password was -lang jython -f C:\LMD\create_clu.py
# Ce script n'attend pas de paramètres.
#-----------------------------------------------------------------
#
# il faut que wsadminlib.py soit accessible, le chemin doit être complet.
execfile('C:\LMD\New\wsadminlib.py')
# Recherche de la cellule
cellname = getCellName()
print "La cellule est " + cellname + "."
# Création d'un cluster
clustername = "CLU01"
# Suppression du cluster if any
print "Suppression éventuelle du cluster " + clustername + " ..."
deleteServerClusterByName( clustername )
createCluster( cellname, clustername, createReplicationDomain = False )
# Création des serveurs
servername = "CLU01_S1"
nodename = "node01"
print "Création du serveur d'application " + servername + " sur le node " + nodename + " ..."
createServerInCluster(clustername, nodename, servername,sessionReplication = False)
print "Création du serveur d'application " + servername + " sur le node " + nodename + " OK"
#
servername = "CLU01-S2"
nodename = "node01"
print "Création du serveur d'application " + servername + " sur le node " + nodename + " ..."
createServerInCluster(clustername, nodename, servername,sessionReplication = False)
print "Création du serveur d'application " + servername + " sur le node " + nodename + " OK"
#
AdminConfig.save()
print "Sauvegarde de la configuration OK"
print "--- Fin du script ---"
Exemple de sortie du script ci-dessus :
wsadmin -lang jython -f create_clu.py
WASX7209I: Connecté au processus "dmgr" sur le noeud LMD70Dmgr en utilisant le connecteur SOAP. Le type de processus est : DeploymentManager
$Id: wsadminlib.py 104 2010-02-15 19:06:18Z dingsor $
La cellule est LMD70.
Suppression éventuelle du cluster CLU01 ...
Création du serveur d'application CLU01_S1 sur le node node01 ...
Création du serveur d'application CLU01_S1 sur le node node01 OK
Création du serveur d'application CLU01-S2 sur le node node01 ...
Création du serveur d'application CLU01-S2 sur le node node01 OK
Sauvegarde de la configuration OK
— - Fin du script ---
Le package wsadminlib est téléchargeable à partir de la page :
http://www.ibm.com/developerworks/websphere/library/samples/
Il existe également un blog, animé par les auteurs du package, qui propose des cas d’utilisation : http://wsadminlib.blogspot.com/
Bon scripting !