Here is an example from the demo server, but also we do a similar thing at penn.  An env (e.g. WS, UI, loader/pspng) would have a dir and a command for patches for that env, and a script to run it.

e.g. the demo server UI

[appadmin@i2midev1 patchesAuto]$ more grouper.installer.properties

# this should be before the version number
#download.server.url = http://localhost:8090/grouper-ws/temp
download.server.url = http://software.internet2.edu/grouper

# default version to install
grouper.version = 2.3.0

# default to install or upgrade (default is install)
grouperInstaller.default.installOrUpgrade = patch

# default app to upgrade: api, ui, ws, or client
grouperInstaller.default.appToUpgrade = ui

# default of directory where app will be installed
grouperInstaller.default.installDirectory = /opt/tomcats/tomcat_f/webapps/grouper_v2_3

grouperInstaller.default.existingInstalledDirectory = /opt/tomcats/tomcat_f/webapps/grouper_v2_3

# if patches that are named grouper_v2_2_1_api_patch_0_test.tar.gz should be used to test a patch
# NOTE: the demo server is where patches are tested, so we have this set, but its commented out, since you shouldnt
# grouperInstaller.useTestPatches = true


##############################
## Autorun properties
##
## If you uncomment one of these properties it will be used as empty, only uncomment to use
##
##############################
#### set this to true to try to use defaults for everything.  Only things without default values will need to be set
grouperInstaller.autorun.useDefaultsAsMuchAsAvailable = true


[appadmin@i2midev1 patchesAuto]$ more run.sh
#!/bin/bash

export JAVA_HOME=/opt/java8
export PATH=$JAVA_HOME/bin:$PATH
/sbin/service tomcat_f stop
cd /opt/grouper/2.3/patchesAuto
java -cp .:grouperInstaller.jar edu.internet2.middleware.grouperInstaller.GrouperInstaller
rm -rf /opt/tomcats/tomcat_f/work/Catalina
/sbin/service tomcat_f start

[appadmin@i2midev1 patchesAuto]$ 

 

 

 

Here is an example run of that script (note, no user input is required)

[appadmin@i2midev1 patchesAuto]$ ./run.sh

Shutting down tomcat_f Tomcat services: 
Using CATALINA_BASE:   /opt/tomcats/tomcat_f
Using CATALINA_HOME:   /opt/tomcat6base
Using CATALINA_TMPDIR: /opt/tomcats/tomcat_f/temp
Using JRE_HOME:        /opt/javas/java_f
Using CLASSPATH:       /opt/tomcat6base/bin/bootstrap.jar
Waiting for exit...
Waiting for exit...
Waiting for exit...
Waiting for exit...
Waiting for exit...
Waiting for exit...
Waiting for exit...
Waiting for exit...
Waiting for exit...
Waiting for exit...
Waiting for exit...
Killing the tomcat abruptly

.....
Do you want to 'install' a new installation of grouper, 'upgrade' an existing installation,
  'patch' an existing installation, 'admin' utilities, or 'createPatch' for Grouper developers
  (enter: 'install', 'upgrade', 'patch', 'admin', 'createPatch' or blank for the default) [patch]: <using default which is blank due to grouperInstaller.autorun.useDefaultsAsMuchAsAvailable and grouperInstaller.autorun.actionEgInstallUpgradePatch>: 
Enter in a Grouper temp directory to download tarballs (note: better if no spaces or special chars) [/opt/grouper/2.3/patchesAuto/tarballs]: <using default which is blank due to grouperInstaller.autorun.useDefaultsAsMuchAsAvailable and grouperInstaller.autorun.tarballDirectory>: 
What do you want to patch?  api, ui, ws, pspng, or psp? [UI]: <using default which is blank due to grouperInstaller.autorun.useDefaultsAsMuchAsAvailable and grouperInstaller.autorun.appToUpgrade>: 
Where is the grouper UI installed? [/opt/tomcats/tomcat_f/webapps/grouper_v2_3]: <using default which is blank due to grouperInstaller.autorun.useDefaultsAsMuchAsAvailable and grouperInstaller.autorun.grouperWhereInstalled>: 
What do you want to do with patches (install, revert, status, fixIndexFile)? [install]: <using default which is blank due to grouperInstaller.autorun.useDefaultsAsMuchAsAvailable and grouperInstaller.autorun.patchAction>: 
Do you want to fix the patch index file (download all patches and see if they are installed?) (not recommended) (t|f)? [f]: 
<using default which is blank due to grouperInstaller.autorun.useDefaultsAsMuchAsAvailable and grouperInstaller.autorun.fixIndexFile>: 

################ Checking patch grouper_v2_3_0_api_patch_0
Patch: grouper_v2_3_0_api_patch_0: was applied on: 2016/04/20 23:05:12

...

################ Checking patch grouper_v2_3_0_api_patch_51
Patch: grouper_v2_3_0_api_patch_51: was applied on: 2017/01/26 08:39:23


################ Checking patch grouper_v2_3_0_api_patch_52
.Downloading from URL: http://software.internet2.edu/grouper/release/2.3.0/patches/grouper_v2_3_0_api_patch_52.tar.gz to file: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_52.tar.gz

Unzipping: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_52.tar.gz
Expanding: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_52.tar to /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_52
Would you like to install all patches (t|f)? [t]: 
<using default which is blank due to grouperInstaller.autorun.useDefaultsAsMuchAsAvailable and grouperInstaller.autorun.installAllPatches>: 
Patch grouper_v2_3_0_api_patch_52 is low risk, is not a security patch
GRP-1475: Delete loader jobs when loader group is deleted
 - added to end of property file: grouper_v2_3_0_api_patch_52.date = 2017/02/09 22:01:13
This patch requires all processes that user Grouper to be stopped.
  Please stop these processes if they are running and press <enter> to continue...
<using default which is blank due to grouperInstaller.autorun.useDefaultsAsMuchAsAvailable and grouperInstaller.autorun.continueAfterPatchStopProcesses>: 
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/attr/assign/AttributeAssign.class
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/attr/assign/AttributeAssign$3.class
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/attr/assign/AttributeAssign.java
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/attr/assign/AttributeAssign$2.class
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/attr/assign/AttributeAssign$1.class
Patch successfully applied: grouper_v2_3_0_api_patch_52
 - added to end of property file: grouper_v2_3_0_api_patch_52.state = applied


################ Checking patch grouper_v2_3_0_api_patch_53
Downloading from URL: http://software.internet2.edu/grouper/release/2.3.0/patches/grouper_v2_3_0_api_patch_53.tar.gz to file: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_53.tar.gz
Unzipping: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_53.tar.gz
Expanding: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_53.tar to /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_53
Patch grouper_v2_3_0_api_patch_53 is low risk, is not a security patch
GRP-1445: Grouper loader real time updates - change log table for SQL jobs
 - added to end of property file: grouper_v2_3_0_api_patch_53.date = 2017/02/09 22:01:15
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader/GrouperLoaderIncrementalJob.class
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader/GrouperLoaderIncrementalJob$1.class
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader/GrouperLoaderIncrementalJob.java
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader/GrouperLoaderIncrementalJob$Row.class
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/internal/dao/hib3/Hib3DAO.class
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/internal/dao/hib3/Hib3DAO.java
Patch successfully applied: grouper_v2_3_0_api_patch_53
 - added to end of property file: grouper_v2_3_0_api_patch_53.state = applied


################ Checking patch grouper_v2_3_0_api_patch_54
Downloading from URL: http://software.internet2.edu/grouper/release/2.3.0/patches/grouper_v2_3_0_api_patch_54.tar.gz to file: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_54.tar.gz
Unzipping: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_54.tar.gz
Expanding: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_54.tar to /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_54
Patch grouper_v2_3_0_api_patch_54 is low risk, is not a security patch
GRP-1476: Real time loader mysql issues
 - added to end of property file: grouper_v2_3_0_api_patch_54.date = 2017/02/09 22:01:17
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader/GrouperLoaderIncrementalJob.class
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader/GrouperLoaderIncrementalJob$1.class
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader/GrouperLoaderIncrementalJob.java
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader/GrouperLoaderIncrementalJob$Row.class
Patch successfully applied: grouper_v2_3_0_api_patch_54
 - added to end of property file: grouper_v2_3_0_api_patch_54.state = applied


################ Checking patch grouper_v2_3_0_api_patch_55
Downloading from URL: http://software.internet2.edu/grouper/release/2.3.0/patches/grouper_v2_3_0_api_patch_55.tar.gz to file: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_55.tar.gz
Unzipping: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_55.tar.gz
Expanding: /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_55.tar to /opt/grouper/2.3/patchesAuto/tarballs/patches/grouper_v2_3_0_api_patch_55
Patch grouper_v2_3_0_api_patch_55 is low risk, is not a security patch
GRP-1477: Reduce error logging when code fails in threads that would be retried out of threads
 - added to end of property file: grouper_v2_3_0_api_patch_55.date = 2017/02/09 22:01:18
Applying file: /opt/tomcats/tomcat_f/webapps/grouper_v2_3/WEB-INF/classes/edu/internet2/middleware/grouper/util/GrouperUtil.java
...
Patch successfully applied: grouper_v2_3_0_api_patch_55
 - added to end of property file: grouper_v2_3_0_api_patch_55.state = applied


################ Checking patch grouper_v2_3_0_api_patch_56
Patch doesnt exist yet (not an error): http://software.internet2.edu/grouper/release/2.3.0/patches/grouper_v2_3_0_api_patch_56.tar.gz
Patch doesnt exist yet (not an error): http://software.internet2.edu/grouper/release/2.3.0/patches/grouper_v2_3_0_api_patch_56_test.tar.gz


################ Checking patch grouper_v2_3_0_ui_patch_0
Patch: grouper_v2_3_0_ui_patch_0: was applied on: 2016/04/24 19:48:40

...

################ Checking patch grouper_v2_3_0_ui_patch_15
Patch: grouper_v2_3_0_ui_patch_15: was applied on: 2017/01/24 19:47:09


################ Checking patch grouper_v2_3_0_ui_patch_16
Patch doesnt exist yet (not an error): http://software.internet2.edu/grouper/release/2.3.0/patches/grouper_v2_3_0_ui_patch_16.tar.gz
Patch doesnt exist yet (not an error): http://software.internet2.edu/grouper/release/2.3.0/patches/grouper_v2_3_0_ui_patch_16_test.tar.gz

There are no new UI patches to install


Starting tomcat_f Tomcat services: 
Using CATALINA_BASE:   /opt/tomcats/tomcat_f
Using CATALINA_HOME:   /opt/tomcat6base
Using CATALINA_TMPDIR: /opt/tomcats/tomcat_f/temp
Using JRE_HOME:        /opt/javas/java_f
Using CLASSPATH:       /opt/tomcat6base/bin/bootstrap.jar

[appadmin@i2midev1 patchesAuto]$ 

 

Here is the demo server WS:

[appadmin@i2midev1 patchesAutoWs]$ ls
grouperInstaller.jar  grouper.installer.properties  grouper.installer.properties~  run.sh  run.sh~  tarballs
[appadmin@i2midev1 patchesAutoWs]$ more grouper.installer.properties

# this should be before the version number
#download.server.url = http://localhost:8090/grouper-ws/temp
download.server.url = http://software.internet2.edu/grouper

# default version to install
grouper.version = 2.3.0

# default to install or upgrade (default is install)
grouperInstaller.default.installOrUpgrade = patch

# default app to upgrade: api, ui, ws, or client
grouperInstaller.default.appToUpgrade = ws

# default of directory where app will be installed
grouperInstaller.default.installDirectory = /opt/tomcats/tomcat_g/webapps/grouper-ws_v2_3

grouperInstaller.default.existingInstalledDirectory = /opt/tomcats/tomcat_g/webapps/grouper-ws_v2_3

# if patches that are named grouper_v2_2_1_api_patch_0_test.tar.gz should be used to test a patch
# NOTE: the demo server is where patches are tested, so we have this set, but its commented out, since you shouldnt
# grouperInstaller.useTestPatches = true



##############################
## Autorun properties
##
## If you uncomment one of these properties it will be used as empty, only uncomment to use
##
##############################
#### set this to true to try to use defaults for everything.  Only things without default values will need to be set
grouperInstaller.autorun.useDefaultsAsMuchAsAvailable = true


[appadmin@i2midev1 patchesAutoWs]$ more run.sh
#!/bin/bash

export JAVA_HOME=/opt/java6
export PATH=$JAVA_HOME/bin:$PATH
/sbin/service tomcat_g stop
cd /opt/grouper/2.3/patchesAutoWs
java -cp .:grouperInstaller.jar edu.internet2.middleware.grouperInstaller.GrouperInstaller
rm -rf /opt/tomcats/tomcat_g/work/Catalina
/sbin/service tomcat_g start

[appadmin@i2midev1 patchesAutoWs]$ 

 

Here is what we use at Penn for PSPNG/loader. Note, the /opt/appserv/tomcat/apps/grouperWs/loader  directory is the API directory where the PSPNG is installed.  See the "ls" at the bottom

 

[appadmin@fastprod-mgmt-01 patcher]$ ls
grouperInstaller.jar  grouper.installer.properties  grouper.installer.properties~  run.sh  run.sh~  tarballs
[appadmin@fastprod-mgmt-01 patcher]$ more grouper.installer.properties

# this should be before the version number
#download.server.url = http://localhost:8090/grouper-ws/temp
download.server.url = https://software.internet2.edu/grouper

# default version to install
grouper.version = 2.3.0

# default to install or upgrade (default is install)
grouperInstaller.default.installOrUpgrade = patch

# default app to upgrade: api, ui, ws, or client
grouperInstaller.default.appToUpgrade = pspng

# default of directory where app will be installed
grouperInstaller.default.installDirectory = /opt/appserv/tomcat/apps/grouperWs/loader

grouperInstaller.default.existingInstalledDirectory = /opt/appserv/tomcat/apps/grouperWs/loader


##############################
## Autorun properties
##
## If you uncomment one of these properties it will be used as empty, only uncomment to use
##
##############################
#### set this to true to try to use defaults for everything.  Only things without default values will need to be set
grouperInstaller.autorun.useDefaultsAsMuchAsAvailable = true

[appadmin@fastprod-mgmt-01 patcher]$ more run.sh
#!/bin/bash

export JAVA_HOME=/opt/appserv/common/java7
export PATH=$JAVA_HOME/bin:$PATH
cd /opt/appserv/tomcat/apps/grouperWs/loader/patcher
java -cp .:grouperInstaller.jar edu.internet2.middleware.grouperInstaller.GrouperInstaller
echo
echo "run this to complete the patching"
echo "clusterCopy.sh grouperWs /opt/appserv/tomcat/apps/grouperWs/loader"
echo "clusterRun fastprod-medium-a-01 '/sbin/service grouperLoader restart'"


 
[appadmin@fastprod-mgmt-01 patcher]$ ls /opt/appserv/tomcat/apps/grouperWs/loader
bin  classes  ddlScripts  grouperPatchStatus.properties  lib  patcher
[appadmin@fastprod-mgmt-01 patcher]$ 
 
  • No labels