Everytime I work on new project there is a need of creation of the clustered domain. From my past experiences collected all basic requirements together list them over here.
- AdminServer configuration includes Name, Listen Address, ListenPort
- User credentials username, password
- After writing basic domain going for create machine which include Name, type of machine
- Nodemaager includes NMTypes such as plain, ssl, hosted node, nodemanager port
- Managed servers have Name, ListenAddress, ListenPort, set machine
- Cluster includes name, ClusterAddress, Servers part of the cluster interesting part here
Assumptions for this task:
In the script as per my convenience some of them are hardcoded, My hardcoded values:
WLST Configuring WebLogic Cluster Domain |
In the script as per my convenience some of them are hardcoded, My hardcoded values:
- Managed Server list
- Cluster list
In this script lots of Python sequence functions are used.
Lets begin the fun of WLST HERE...
- List index,
- Dictionary keys
- String startwith
Lets begin the fun of WLST HERE...
# purpose: Create the domian with the one Admin Server along with the # two managed servers in each cluster. app_cluster, web_cluster # Assumption here all managed servers runs on the same machine # Modified date: 07-April-2017 # File name : create_clusterdomain.py # Dependencies : cluster_domain.properties # Note this names of managed servers, cluster, hostname all hard coded # def printline(s): print "-"*10 + s loadProperties('/u01/app/software/scripts/pybin/cluster_domain.properties') # Created a Cluster and assaign the servers to that cluster # Create a domain from the weblogic domain template WLHOME=os.environ["WL_HOME"] readTemplate(WLHOME+'/common/templates/wls/wls.jar') printline("reading template completed") # Configure the Administration Servers with out using SSL Port cd('Servers/AdminServer') set('ListenAddress',WLSAdminIP) set('ListenPort', int(AdminPort)) printline("AdminServer ListenAddress, port set") cd('/') cd('Security/base_domain/User/weblogic') cmo.setPassword(AdminPasswd) printline("User credentials set") setOption('OverwriteDomain', 'true') writeDomain(DomainPath+'/'+DomainName) printline("Domain creation done.") closeTemplate() readDomain(DomainPath+'/'+DomainName) machines={'myM100':'192.168.33.100', 'myM110':'192.168.33.110'} for m in machines.keys(): cd('/') create(m, 'UnixMachine') cd('Machine/' + m) create(m, 'NodeManager') cd('NodeManager/' + m) set('ListenAddress', machines[m]) set('NMType','ssl') # Create the Managed Servers and configuration them ManagedServerList=['app01','app02','web01','web02'] app_ca="" web_ca="" for s in ManagedServerList: cd('/') create(s,'Server') cd('Server/'+s) i=ManagedServerList.index(s) lp=8101+i set('ListenPort', int(lp)) j=int(s[-1]) m=machines.keys()[j-1] set('ListenAddress', machines[m]) set('Machine', m) if s.startswith('app') : if j%2==0: app_ca+=',' app_ca+=machines[m]+':'+str(lp) elif s.startswith('web'): if j%2==0: web_ca+=',' web_ca+=machines[m]+':'+str(lp) printline("Managed server :"+s+" created") printline("configured managed servers done.") printline("app cluster address:"+app_ca) printline("Web cluster address:"+web_ca) # Create and Configure a Cluster and assian the Managed Servers to that cluster clusters={'app_clustr1':'app01,app02', 'web_clustr1':'web01,web02'} clstrs=clusters.keys() for c in clstrs: cd('/') create(c,'Cluster') assign('Server', clusters[c],'Cluster', c) cd('Clusters/'+c) set('ClusterMessagingMode','multicast') if c.startswith('app'): set('ClusterAddress',app_ca) elif c.startswith('web'): set('ClusterAddress',web_ca) set('MulticastAddress','237.0.0.101') set('MulticastPort',7200+clstrs.index(c)) printline("cluster "+c+" created") printline("Configured clusters and assigned managed servers done.") #Write the domain and Close the domain template updateDomain() closeDomain() printline("Task completed successfully, exiting!!!") exit()Now the properties file which you can enhance with your limitations
WLSAdminIP=192.168.33.100 AdminPort=8001 AdminPasswd=welcome1 DomainPath=/u01/app/oracle/domains DomainName=uat_domain
Lets have the execution screen for you: