Hi guys. I'm new to this but have been going throught the Puppet Learning exercises but haven't worked out a framework/system to deploy WebSphere applications. I started writing a module that calls a Unix script (which invokes Jython) but now I really need your help to FIRST OF ALL set it all up to utilise the master/agent configuration to manage the differences between environments and applications. That is: * which classes to write * whether to use defined classes (which parameter values to pass) * use inheritances * our environments are different (eg. multiple location of wsadmin.sh to invoke Jython, with different cellnames and sometimes different values for -MapModulesToServers/-MapResRefToEJB/-MapRolesToUsers) so probably need to use some sort of config file (but something with CSV format or maybe other type of delimiter so I can control/populate new apps from there to deploy so it must be self manage rather than having to write new code and that's easy to summarise and later compare to different environment - see below). I may be wrong here in that we may not need this but at least a way to tell Puppet that this application is different especially in certain environments * use various templates (or use 1 template with variables in there) #autodeploy.cfg #type, app, appname, EAR destination, deployWS, ... ear, Claims, ClaimsEAR, \$(APP_INSTALL_ROOT)/Cell01,, ear, ClaimsReporting, ClaimsReportingEAR, \$(APP_INSTALL_ROOT)/\$(WAS_CELL_NAME),, ear, DMOrchestra, dm-orchestra-service-ear, \$(APP_INSTALL_ROOT)/\$(WAS_CELL_NAME), -deployws jar, xml, An example deployment tree structure of a typical WebSphere application where the logic below must iterate through (if it exists): /mnt/autodeploy/SIT/Claims/claims-admin-ear-5.1.15.ear /mnt/autodeploy/SIT/ClaimsReporting/ClaimsReporting-claims_reporting_ITPC-107.ear /mnt/autodeploy/UAT/Claims/claims-admin-ear-5.1.15.ear /mnt/autodeploy/UAT/ClaimsReporting/ClaimsReporting-claims_reporting_ITPC-107.ear /mnt/autodeploy/UAT/ContentUploadService /mnt/autodeploy/UAT/Unknown [Unknown app not listed in config file so display message] If you know Jython (WebSphere's scripting language) then great as currently we don't even detect for the cellname. Later on I want to transfer the Unix logic (if/for loop statements) to Puppet/Ruby language, see below for a draft plan.
Step Initial Tool Proposed Tool Additional info display date Unix Puppet for each directory in /mnt/autodeploy Unix Puppet Values to pass (parameter or defined class)? for any *.ear/.jar/.xml file Unix Puppet Need? Array or Puppet template or config file (see below - use cut/awk/sed?)… if ear file Unix Puppet display msg 'Which ear file's backup' backup old ear file Jython identify cell Jython update app Jython rename/delete new ear file Unix Puppet else jar file Unix Puppet else xml file Unix Puppet else display msg 'Nothing found at that directory'