Sunday, 31 July 2016

IBM Operational Decision Manager Advanced 8.8.1 - My First Foray

I spent a few happy hours implementing ODM 8.8.1 on a Red Hat Linux VM yesterday, and have written up my notes below.

Bottom line, this is pretty similar to my experiences with earlier versions ( 8.5, 8.6, 8.7 etc. ) with one exception: -

- With 8.8.1, we've now split out the Rules Management Server onto a separate JVM, meaning that we potentially have two clusters and three servers

For this build, I've chosen to deploy Decision Center AND Decision Server; other options exist, of course

Hope this helps ….

Hostname


OS Users

wasadmin
db2inst1
db2user1

Detail

Switch to wasadmin user

su - wasadmin

Install ODM 8.8.1 binaries

/opt/IBM/InstallationManager/eclipse/tools/imcl -input installODM881.rsp -acceptLicense

Installed com.ibm.websphere.odm.dc.v88_8.8.1000.20160527_0751 to the /opt/IBM/ODM881 directory.
Installed com.ibm.websphere.odm.ds.rules.v88_8.8.1000.20160527_0819 to the /opt/IBM/ODM881 directory.
Installed com.ibm.websphere.odm.pt.dc.v88_8.8.1000.20160527_0943 to the /opt/IBM/ODM881 directory.
Installed com.ibm.websphere.odm.pt.rules.v88_8.8.1000.20160527_0949 to the /opt/IBM/ODM881 directory.

Create Deployment Manager Profile

/opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh -create -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/management -profileName Dmgr01 -nodeName Dmgr -isDefault -enableAdminSecurity true -adminUserName wasadmin -adminPassword passw0rd

INSTCONFSUCCESS: Success: Profile Dmgr01 now exists. Please consult /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/logs/AboutThisProfile.txt for more information about this profile.

Create Node Profile

/opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh -create -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/managed -profileName AppSrv01 -nodeName Node1

INSTCONFSUCCESS: Success: Profile AppSrv01 now exists. Please consult /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/AboutThisProfile.txt for more information about this profile.

Start Deployment Manager

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/startManager.sh

...
ADMU3000I: Server dmgr open for e-business; process id is 90622
...

Add Node into Cell

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/addNode.sh `hostname` 8879 -profileName AppSrv01 -username wasadmin -password passw0rd

...
ADMU0003I: Node Node1 has been successfully federated.
...

Stop Deployment Manager

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/stopManager.sh -username wasadmin -password passw0rd

...
ADMU4000I: Server dmgr stop completed.
...

Augment Deployment Manager Profile with Decision Center Capabilities

/opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh -augment -profileName Dmgr01 -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/rules/management/dc

INSTCONFSUCCESS: Profile augmentation succeeded.

Augment Deployment Manager Profile with Decision Center Capabilities

/opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh -augment -profileName Dmgr01 -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/rules/management/ds/

INSTCONFSUCCESS: Profile augmentation succeeded.

Set Variable

export ODM_HOME=/opt/IBM/ODM881/

Create Decision Center Cluster

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/configureDCCluster.sh -dmgrAdminUsername wasadmin -dmgrAdminPassword passw0rd -clusterPropertiesFile ~/configureDCCluster.properties -targetNodeName Node1 -dmgrHostName `hostname` -dmgrPort 8879

...
  [wsadmin] GBRPT0019I: Start application teamserver on server Node1-DCServer ...
  [wsadmin] GBRPC0028I: The cluster is up and running!

BUILD SUCCESSFUL
Total time: 6 minutes 15 seconds
...

Stop Deployment Manager

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/stopManager.sh -username wasadmin -password passw0rd

Create Decision Server Cluster

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/configureDSCluster.sh -dmgrAdminUsername wasadmin -dmgrAdminPassword passw0rd -clusterPropertiesFile ~/configureDSCluster.properties -targetNodeName Node1 -dmgrHostName `hostname` -dmgrPort 8879

...
  [wsadmin] GBRPC0013I: Synchronization done.
  [wsadmin] GBRPC0028I: The cluster is up and running!

BUILD SUCCESSFUL
Total time: 7 minutes 34 seconds
...

Switch to DB2 Instance Owner

su - db2inst1

Create Decision Center Database (RTSDB)

db2 create database RTSDB automatic storage yes using codeset UTF-8 territory GB pagesize 32768

Create Decision Server Database (RESDB)

db2 create database RESDB automatic storage yes using codeset UTF-8 territory GB pagesize 32768

Connect to RESDB as db2inst1 owner

db2 connect to RESDB user db2inst1 using passw0rd

Create Buffer Pool

db2 create bufferpool BP32K size 8000 automatic pagesize 32K

Grant DBADM rights to db2user1 user

db2 grant dbadm on database to user db2user1

Create RESDB Tables

db2 -tvf /opt/IBM/ODM881/executionserver/databases/trace_db2.sql

Connect to RESDB as db2user1 user

db2 connect to RESDB user db2user1 using passw0rd

Create RESDB Tables

db2 -tvf /opt/IBM/ODM881/executionserver/databases/trace_db2.sql

db2 -tvf /opt/IBM/ODM881/executionserver/databases/repository_db2.sql

db2 -tvf /opt/IBM/ODM881/executionserver/databases/xomrepository_db2.sql

db2 -tvf /opt/IBM/ODM881/executionserver/databases/decisionrunner_db2.sql

Disconnect from RESDB

db2 terminate

Connect to RTSDB as db2inst1 owner

db2 connect to RTSDB user db2inst1 using passw0rd

Grant DBADM rights to db2user1 user

db2 grant dbadm on database to user db2user1

Connect to RTSDB as db2user1 user

db2 connect to RTSDB user db2user1 using passw0rd

Create RTSDB tables

db2 -tvf rule-team-server.sql

Disconnect from RTSDB

db2 terminate

Switch to wasadmin user

su - wasadmin

Start wsadmin client

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/wsadmin.sh -lang jython -user wasadmin -password passw0rd -host `hostname` -port 8879

Create Administrators group

AdminTask.createGroup('[-cn Administrators]')

Save and sync

AdminConfig.save()
AdminNodeManagement.syncActiveNodes()

Add wasadmin user to Administrators group

AdminTask.addMemberToGroup('[-memberUniqueName uid=wasadmin,o=defaultWIMFileBasedRealm -groupUniqueName cn=Administrators,o=defaultWIMFileBasedRealm]')

Save and sync

AdminConfig.save()
AdminNodeManagement.syncActiveNodes()

Map Administrators group into Decision Center application roles

AdminApp.edit('teamserver', '[ -MapRolesToUsers [[ rtsInstaller AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No user:defaultWIMFileBasedRealm/uid=wasadmin,o=defaultWIMFileBasedRealm "" ]]]' )

AdminApp.edit('teamserver', '[ -MapRolesToUsers [[ rtsAdministrator AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No user:defaultWIMFileBasedRealm/uid=wasadmin,o=defaultWIMFileBasedRealm "" ]]]' )

AdminApp.edit('teamserver', '[ -MapRolesToUsers [[ rtsUser AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No user:defaultWIMFileBasedRealm/uid=wasadmin,o=defaultWIMFileBasedRealm "" ]]]' )

AdminApp.edit('teamserver', '[ -MapRolesToUsers [[ rtsConfigManager AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No user:defaultWIMFileBasedRealm/uid=wasadmin,o=defaultWIMFileBasedRealm "" ]]]' )

AdminApp.edit('teamserver', '[ -MapRolesToUsers [[ rtsAdministrator AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No "" group:defaultWIMFileBasedRealm/cn=Administrators,o=defaultWIMFileBasedRealm ]]]' ) 

Map Administrators group into Decision Server applications roles

AdminApp.edit('jrules-ssp', '[ -MapRolesToUsers [[ resAdministrators AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No user:defaultWIMFileBasedRealm/uid=wasadmin,o=defaultWIMFileBasedRealm "" ]]]' )

AdminApp.edit('jrules-ssp', '[ -MapRolesToUsers [[ resDeployers AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No user:defaultWIMFileBasedRealm/uid=wasadmin,o=defaultWIMFileBasedRealm "" ]]]' )

AdminApp.edit('jrules-res-management', '[ -MapRolesToUsers [[ resAdministrators AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No user:defaultWIMFileBasedRealm/uid=wasadmin,o=defaultWIMFileBasedRealm "" ]]]' )

AdminApp.edit('jrules-res-management', '[ -MapRolesToUsers [[ resDeployers AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No user:defaultWIMFileBasedRealm/uid=wasadmin,o=defaultWIMFileBasedRealm "" ]]]' )

AdminApp.edit('jrules-res-management', '[ -MapRolesToUsers [[ resMonitors AppDeploymentOption.No AppDeploymentOption.No "" Administrators AppDeploymentOption.No user:defaultWIMFileBasedRealm/uid=wasadmin,o=defaultWIMFileBasedRealm "" ]]]' )

Save and sync

AdminConfig.save()
AdminNodeManagement.syncActiveNodes()

Remove out-of-the-box Decision Center and Decision Server users

AdminTask.deleteUser('[-uniqueName uid=resAdmin,o=defaultWIMFileBasedRealm]')
AdminTask.deleteUser('[-uniqueName uid=resDeployer,o=defaultWIMFileBasedRealm]')
AdminTask.deleteUser('[-uniqueName uid=resMonitor,o=defaultWIMFileBasedRealm]')
AdminTask.deleteUser('[-uniqueName uid=rtsAdmin,o=defaultWIMFileBasedRealm]')
AdminTask.deleteUser('[-uniqueName uid=rtsConfig,o=defaultWIMFileBasedRealm]')
AdminTask.deleteUser('[-uniqueName uid=rtsUser1,o=defaultWIMFileBasedRealm]')

Save and sync

AdminConfig.save()
AdminNodeManagement.syncActiveNodes()

Set Variables

cellID = AdminControl.getCell()

Stop Decision Center Cluster

AdminControl.invoke('WebSphere:name=DecisionCenterCluster,process=dmgr,platform=common,node=Dmgr,version=8.5.5.5,type=Cluster,mbeanIdentifier=DecisionCenterCluster,cell='+cellID+',spec=1.0', 'stop')

Stop Decision Server Cluster

AdminControl.invoke('WebSphere:name=DecisionServerCluster,process=dmgr,platform=common,node=Dmgr,version=8.5.5.5,type=Cluster,mbeanIdentifier=DecisionServerCluster,cell='+cellID+',spec=1.0', 'stop')

Stop Rules Management Server

AdminControl.stopServer('RulesMgrSrv','Node1')

Quit

quit

Stop Node Agent

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopNode.sh -user wasadmin -password passw0rd

Stop Deployment Manager

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/stopManager.sh -user wasadmin -password passw0rd

Start Deployment Manager

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/startManager.sh

Start Node Agent

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startNode.sh

Start Decision Center Cluster

AdminControl.invoke('WebSphere:name=DecisionCenterCluster,process=dmgr,platform=common,node=Dmgr,version=8.5.5.5,type=Cluster,mbeanIdentifier=DecisionCenterCluster,cell='+cellID+',spec=1.0', 'start')

Start Decision Server Cluster

AdminControl.invoke('WebSphere:name=DecisionServerCluster,process=dmgr,platform=common,node=Dmgr,version=8.5.5.5,type=Cluster,mbeanIdentifier=DecisionServerCluster,cell='+cellID+',spec=1.0', 'start')

Start Rules Management Server

AdminControl.startServer('RulesMgrSrv','Node1')

Quit

quit

URLs

WAS Integrated Solutions Console


Decision Center

Enterprise Console


Business Console


Decision Server

Hosted Transparent Decision Service


ILOG Scenario Service Provider


Decision Runner


Rule Execution Server Console


No comments:

Note to self - use kubectl to query images in a pod or deployment

In both cases, we use JSON ... For a deployment, we can do this: - kubectl get deployment foobar --namespace snafu --output jsonpath="{...