Overblog
Suivre ce blog Administration + Créer mon blog
11 mai 2016 3 11 /05 /mai /2016 15:52

3 - Variables Utilisateur

Ce sont des variables créées et utilisées par les utilisateurs dans les SMART Folders ou dans les jobs. Ce sont toutes variables nommées avec un nom non réservé comme par exemple %%MAVARIABLE. Elles peuvent être utilisées pour variabiliser les paramètres de jobs. Le Path peut être renseigné par un %%DIR_SCRIPTS, le destinataire d'un DO MAIL pourra être défini par une variable.

Elles servent aussi de variables intermédiaires dans un calcul. Car nous le verrons plus loin, on ne peut pas utiliser plus d'un opérateur, ou fonction par ligne.

3a - Utilisables dans un script

Les variables Control-M et en particulier les variables utilisateurs sont transférés au système d'exploitation sous la forme de variables d'environnement. En effet, si un script shell Unix utilise un paramètre $REPERTOIRE, la variable %%REPERTOIRE pourra être valorisée dans le job exécutant ce script et la valeur sera transmise au paramètre $REPERTOIRE. Il en va de même pour les paramètres de scripts Windows.

3b - Variables de SMART Folder

Les variables utilisateurs peuvent être définis au niveau d'un SMART Folder et dans ce cas, elles pourront être utilisées comme si elles étaient globales par les jobs appartenant au SMART Folder.

4- Variables opérateurs

On ne dispose que de 3 types d'opérateurs :

4a - L'addition

%%PLUS ou le signe + permettent de réaliser une addition.

Exemples :

%%A = %%B + 5

%%C = %%B %%PLUS %%A

4b - La soustraction

Le signe – ou %%MINUS permet de réaliser une soustraction.

Exemples :

%%RCM1 = %%RUNCOUNT – 1

%%P = %%N %%MINUS 5

4c - La concatenation

Le point "." est le symbole de la concaténation. Il sert surtout à délimiter les variables.

Exemples :

%%A = JOUR

%%B = BON

%%C = BON%%A donnera BONJOUR

%%C = %%B%%A donnera aussi BONJOUR

%%C = %%BJOUR donnera un message d'erreur disant que la variable %%BJOUR n'existe pas.

%%C = %%B.%%A donnera BONJOUR

Attention, penser à doubler le point lorsqu'il doit figurer dans le résultat final.

%%JOBNAME._%%ODATE..log donnera par exemple JOB#001_160510.log

Prochain chapitre : 5 – Variables Fonctions

Partager cet article
Repost0
24 décembre 2015 4 24 /12 /décembre /2015 16:38

J'avais déjà dans un article de mai 2011 fait état de la migration d'ordonnanceur. Dans cet article que vous retrouverez dans la page "Pourquoi et comment changer d'outil d'ordonnancement ?" de ce blog, je me demandais pourquoi changer d'ordonnanceur et je donnais les grandes lignes de la méthodologie de migration.

Convertir vers Control-M
Convertir vers Control-M

Depuis ces dernières années, les opportunités de projet de conversion ont augmentées et les outils pour mener à bien ce type de projet ont eux aussi été amélioré.

Pour Control-M, l'éditeur BMC Software propose aujourd'hui un Toolkit de migration qui prend en charge de nombreux produits comme $Universe, One Automation, ZEKE, TWS, Autosys, TNG, mais aussi la crontab Unix et le gestionnaire Windows AT de Microsoft.

De mon côté, j'ai mis en place des outillages de renormalisation qui me permettent d'adapter les XML de définitions générés par le toolkit de migration et de les adapter aux normes et standards de l'utilisateur pour optimiser l'exploitabilité de la solution Control-M. Ils offrent aussi la possibilité de pouvoir en exploiter toutes les fonctionnalités et de combler certains raccourcis .

Méthodologie de migration.

Une conversion ne peut pas s'improviser. Elle doit s'appuyer sur une méthodologie projet et sur l'expérience de l'équipe de mise en œuvre. Certains utilisateurs finaux se contente d'acquérir la licence auprès de l'éditeur et confie la migration à leur équipe internes ou à des consultants non expérimentés d'une société de services généraliste. Pour ma part, je dispose d'une importante expérience en la matière, d'une méthodologie éprouvée et d'outillages spécifiques permettant d'accélérer et d'optimiser les phases de conversion.

La formation est une des clés de réussite d'un projet de migration. Les équipes maitrisent la solution source, mais n'ont qu'une connaissance marketing, ou lié à un POC de la solution cible. Une vraie formation permet à tout le monde de parler la même langue.

Risques et contraintes

La migration à 100% n'existe pas. On ne peut pas avec les mécanismes et fonctionnalités d'un ordonnanceur reproduire à l'identique des mécanismes et fonctionnalités d'un autre ordonnanceur. Des adaptations sont obligatoires et constitues le principal risque d'une migration. La charge et la durée de telles adaptations n'est pas facile à évaluer. Il est parfois nécessaire de reprendre manuellement des scripts utilisant les commandes ou des variables propres à l'ordonnanceur source.

La complexité d'une importante conversion réside dans les mécanismes qu'il est parfois nécessaire de mettre en place pour faire communiquer l'ancien et le nouvel ordonnanceur.

La vie des applicatifs rythme celle de l'exploitation. Mises à jour, nouvelles versions ou modifications ponctuelles sont le lot commun et ne permettent pas de longue période de conversion. La période entre le moment où l'on fait un export des données descriptives des traitements dans l'ordonnanceur source et le moment où l'on active ces traitements dans l'ordonnanceur source, s'appelle la période de gel. Car on ne peut plus faire de modifications sur les batchs exportés. L'automatisation des procédures de migration permet de limiter cette période de gel. On peut en effet, continuer la modification sur la source pendant les phases de validations car l'export final sera réalisé quelques heures avant la mise en production sur la cible.

Les contraintes de temps sont parfois négligées dans une phase d'appel d'offre. Les prestataires et fournisseurs sollicités sont tentés de faire rêver leur futur client en lui laissant croire qu'Harry Potter c'est recyclé dans la migration d'ordonnanceurs. L'expérience m'oblige à dire qu'un projet de conversion ne peut pas être réalisé en 3 semaines ! Qu'il s'étale souvent sur plusieurs mois. Mais que commercialement les concurrents ne peuvent pas avancer cet argument, car ils ont peur que leur client ne veuillent pas l'entendre. Lancer un appel d'offre de migration quelques mois ou semaines avant la date anniversaire du renouvellement du contrat de licence de son ordonnanceur n'est pas raisonnable.

Projets et références

Vous connaissez la migration des environnements $Universe de SOCOTEC vers Control-M. Cela avait fait l'objet d'un témoignage au BMC Exchange 2014 que j'avais relayé sur ce blog dans l'article "Migration $U vers Control-M – Témoignage". Le convertisseur a été amélioré et prend en charge aujourd'hui les TIH (environnement complexe spécificité de $U).

Le rachat par Automic de l'éditeur Orsyp a conduit de nombreux clients à s'interroger sur la pertinence d'une migration. En effet, l'architecture Serveur/Agents de One Automation n'est pas identique à celle de $Universe qui implantait un moteur d'ordonnancement sur chaque serveur applicatif. De plus, le mode évènementiel de l'ordonnanceur d'Orsyp n'est pas celui d'Automic.

Je mène en ce moment deux projets de conversion de $Universe vers Control-M avec des volumétries importantes et je suis beaucoup sollicité par des utilisateurs de $Universe pour répondre à des présentations ou des appels d'offre.

Mais le sujet des migrations ne se limite pas à cet ordonnanceur. J'ai migré l'an dernier un environnement Job Scheduler (ordonnanceur open source) vers Control-M. BMC ne propose pas de toolkit, mais la structure au format XML des définitions de cet outil a facilité la conversion. La lourdeur du moteur et de la console de pilotage développés en Java avaient eu raison du client utilisateur.

Pour un autre client, J'ai récemment migré des plateformes NSM vers un Control-M version 8.

L'utilitaire de conversion fourni par l'éditeur m'a bien aidés à dégrossir le sujet. Mais comme il a été avant tout étudié pour convertir du TNG Unicenter et que NSM est l’évolution de ce produit, j'y ai trouvé quelques lacunes. En effet, en plus des actions correctives permettant d'apporter une normalisation adaptée au besoin du client, il m'a fallu compléter les XML convertis en allant récupérer dans les extractions NSM certains paramètres SAP qui n'étaient pas migrés. J'ai aussi transformé en jobs de type SAP BW les process chains qui étaient restées sous la forme d'une commande NSM. J'ai retrouvé une problématique équivalente avec les jobs SAP migrés de $Universe, les paramètres SAP ne sont pas totalement renseignés et nécessitent une adaptation.

A cela, il faut ajouter la conversion des planifications qui n'est pas réalisée car, il n'est pas possible d'extraire les calendriers NSM au format attendu par le Conversion toolkit. Mais la généralisation des Rule Based Calendars qui sont, comme pour $Universe avec les Rules, équivalent aux calendriers utilisés par NSM a permis de simplifier la migration.

Les concepts de NSM, comme ceux de TNG sont appuyés sur des Jobset et des jobs, c’est-à-dire des notions que l'on retrouve dans les Folders et les jobs de Control-M. La notion de montée au plan est là aussi présente dans NSM. Ces bases communes et une bonne formation ont elles aussi facilités la conversion au niveau des utilisateurs.

Si vous souhaitez échanger sur ce sujet, vous pouvez commenter cet article ou me contacter par mail. Je vous répondrais avec plaisir.

Partager cet article
Repost0
30 octobre 2015 5 30 /10 /octobre /2015 10:02

Suite de notre série sur variables internes à Control-M avec les variables dites "Système".

Ces variables peuvent être classées en 3 catégories :

  • Les variables système qui regroupent les valeurs des paramètres des jobs, les dates et quelques autres fonctions.
  • Les variables post-exécution
  • Les variables liées à la définition des Control modules et des jobs AS-400.

2-a - Les variables système

Les variables Système Control-M sont certainement les plus connues. On les utilise dans les différents champs du formulaire de définition de job. Pour définir un nouveau nommage d'Output (l'ex-Sysout), pour renseigner l'objet d'un Email dans une Notification ou une Do Action, ou pour passer la date de Order en paramètre à un script.

Quelques exemples :

%%JOBNAME, %%ORDERID, que l'on ne présente pas,

%%RUNCOUNT qui retourne de nombre d'exécution,

%%ODATE qui donne la date de Order du job sur 6 caractères

%%DATE qui donne la date système sur 6 caractères

Lorsque l'on ajoute un $ (Dollar) entre les deux pourcents et la variable, l'année est exprimée sur 4 caractères (%%$DATE, %%$YEAR, …)

Certains sont moins connus, mais ont leur intérêt :

%%BLANKn permet de générer une chaine de caractères avec "n" espaces.

%%NEXT renvoi la prochaine date de planification d'un job, tout comme %%PREV donne la date de la précédente date de planification du job.

%%FOLDER_ID restitue le numéro d'OrderId d'un SMART Folder. Attention, cette variable avait un autre nom dans les versions précédentes (7, 6).

Les variables %%POSTCMD et %%PRECMD utilisées dans les versions 6 et 7 sont aujourd'hui directement accessibles dans la zone "More" de l'onglet "General" de la v8 avec les paramètres Post-Command et Pre-command.

Le "Parameter guide" de la documentation produit en donne toute la liste, qui est assez longue et offre de nombreuses possibilités.

Les variables Système Control-M peuvent être utilisées pour constituer les noms de conditions. Elles peuvent être aussi modifiées au passage d'un Odrer. Un "ctmoder –variable %%CYCLIC=N %%APPLIC=TEST" fera monter au plan un job défini comme cyclique sans son caractère cyclique dans l'application TEST.

2-b - Variables post-exécution

%%COMPSTAT qui est la variable associée à l'information présente dans la log OSCOMPSTAT, c’est-à-dire l'Operating System Completion Status, que nous appelons en français le code retour.

%%AGV_CPU et %%AVG_TIME qui retourne le temps moyen d'exécution ou d'utilisation CPU. On peut aussi y associer %%SD_CPU ou %%SD_TIME qui exprime en secondes la déviation entre le temps d'exécution du job et son temps moyen. Ces varaiables ne pourront être déterminées que si les statistiques sont valorisées au travers de la commande ctmjsa.

%%JOB_ID pour récupérer le Process ID du traitement lancé et %%NODEID le nom du serveur qui a fait tourner le job. Intéressant lorsque l'on utilise des HostGroup multiple.

2-c - Les paramètres de Control Modules

Il est à noter que les paramètres descriptifs des Control Modules et des jobs AS/400 se présentent sous la forme de variables préfixées par le module auquel elles sont liées.

Exemples :

%%SAP-ACCOUNT

%%FTP-LUSER

%%FTP-DEST_NEWNAME1

%%ALERT-NAME

Prochains chapitres : 3 – Variables Utilisateurs et 4 – Variables opérateurs

Partager cet article
Repost0
17 juin 2015 3 17 /06 /juin /2015 21:57

Et oui, vous en rêviez ! Un petit ajout caché dans les options de la console Control-M Workload Automation en Fix Pack 7, mais quelle fonctionnalité !

Ce que vous attendiez depuis des années est enfin là. Une révolution ! Et pourtant, rien dans la Release notes.

Juste au dessus du format des conditions Drag and drop, une coche avec l'option "Update condition name when property change".

Oui, vous avez bien lu ! J'ai un job A, lié à un job B par la condition A-TO-B, si je renomme le job A en job Z, la condition change de nom et s'appelle Z-TO-B !

C'est pas génial !

Partager cet article
Repost0
15 juin 2015 1 15 /06 /juin /2015 23:24

A la question "Avez-vous le connecteur pour l'ERP SHMURTZ qui fait papa-maman dans le domaine très fermé de la mise sous-vide des éléphants d'Asie ?" Il sera désormais très facile pour BMC Software de répondre "Oui".

Application Integrator
Application Integrator

En effet, depuis le début du mois de juin 2015, le fix pack 7 de la version 8 du Control-M/Enterprise Manager a été mis à disposition et contient parmi quelques améliorations et corrections de bugs, un générateur de "Control Modules".

Quelque soit l'application que vous utilisez et qui ne bénéficie pas d'un Control Module dans le catalogue de Control-M, il sera maintenant possible de se constituer son propre module via l'Application Integrator, directement accessible depuis le domaine "Tools" de la console Workload Automation. Les applications peuvent être pilotées soit par le mode commande, soit par un accès Webservice. Les paramètres peuvent être passés dans le formulaire spécifique via des champs libres (ou non), des boutons radios, des coches, des listes. Des actions pré et post exécution ont été prévues, ainsi que l'interprétation du code retour.

Une plateforme communautaire d'échange des ces applications intégrées a été mise à disposition et va permettre aux utilisateurs de partager leurs créations. On peut espérer y trouver bientôt un type de jobs pour Time Navigator, pour JDE ou pour CFT.

Il sera aussi très simple de fabriquer des modèles prédéfinis avec boutons radio et listes déroulantes pour permettre aux équipes de créer des jobs (même pour une appplication développée en interne) en évitant la commande de 1000 caractères avec une douzaine d'options.

Cette innovation, à l'origine d'un projet dit "en perruque" dans les laboratoires de développement et qui pourrait passer inaperçue cachée dans un simple Fix Pack, offre à la solution Control-M un atout majeur pour se démarquer face à ses concurrents.

Partager cet article
Repost0

Présentation

  • : Batch Processing blog
  • : Blog d'Alain LECLAIR consultant expert en Workload Automation et Industrialisation de Productions informatiques.
  • Contact

Recherche

Catégories