@@ -104,241 +104,9 @@ data:
104
104
105
105
export DOMAIN_HOME=${SHARED_PATH}/domain/%DOMAIN_NAME%
106
106
107
- # Function to create node manager home for a server
108
- # $1 - Domain UID
109
- # $2 - Server Name
110
- # $3 - Admin Server Hostname (only passed for managed servers)
111
- function createNodeMgrHome() {
112
-
113
- # Create startup.properties file
114
- datadir=${DOMAIN_HOME}/servers/$2/data/nodemanager
115
- startProp=${datadir}/startup.properties
116
- createFolder ${datadir}
117
- echo "# Server startup properties" > ${startProp}
118
- echo "AutoRestart=true" >> ${startProp}
119
- if [ -n "$3" ]; then
120
- echo "AdminURL=http\://$3\:%ADMIN_PORT%" >> ${startProp}
121
- fi
122
- echo "RestartMax=2" >> ${startProp}
123
- echo "RotateLogOnStartup=false" >> ${startProp}
124
- echo "RotationType=bySize" >> ${startProp}
125
- echo "RotationTimeStart=00\:00" >> ${startProp}
126
- echo "RotatedFileCount=100" >> ${startProp}
127
- echo "RestartDelaySeconds=0" >> ${startProp}
128
- echo "FileSizeKB=5000" >> ${startProp}
129
- echo "FileTimeSpanFactor=3600000" >> ${startProp}
130
- echo "RestartInterval=3600" >> ${startProp}
131
- echo "NumberOfFilesLimited=true" >> ${startProp}
132
- echo "FileTimeSpan=24" >> ${startProp}
133
- echo "NMHostName=$1-$2" >> ${startProp}
134
-
135
- # Create nodemanager home for the server
136
- nmdir=${DOMAIN_HOME}/servers/$2/nodemgr_home
137
- createFolder ${nmdir}
138
- prop=${nmdir}/nodemanager.properties
139
- cp ${DOMAIN_HOME}/nodemanager/nodemanager.properties ${nmdir}
140
- cp ${DOMAIN_HOME}/nodemanager/nodemanager.domains ${nmdir}
141
- cp ${DOMAIN_HOME}/bin/startNodeManager.sh ${nmdir}
142
-
143
- # Edit the start nodemanager script to use the home for the server
144
- sed -i -e "s:/nodemanager:/servers/$2/nodemgr_home:g" ${nmdir}/startNodeManager.sh
145
-
146
- # Edit the nodemanager properties file to use the home for the server
147
- sed -i -e "s:DomainsFile=.*:DomainsFile=${nmdir}/nodemanager.domains:g" ${prop}
148
- sed -i -e "s:NodeManagerHome=.*:NodeManagerHome=${nmdir}:g" ${prop}
149
- sed -i -e "s:ListenAddress=.*:ListenAddress=$1-$2:g" ${prop}
150
- sed -i -e "s:LogFile=.*:LogFile=/shared/logs/nodemanager-$2.log:g" ${prop}
151
-
152
- }
153
-
154
- # Function to create script for starting a server
155
- # $1 - Domain UID
156
- # $2 - Server Name
157
- # $3 - Flag (only passed for admin server)
158
- function createStartScript() {
159
-
160
- nmdir=${DOMAIN_HOME}/servers/$2/nodemgr_home
161
- stateFile=${DOMAIN_HOME}/servers/$2/data/nodemanager/$2.state
162
- scriptFile=${nmdir}/startServer.sh
163
- pyFile=${nmdir}/start-server.py
164
- argsFile=${nmdir}/set-ms-args.py
165
-
166
- # Create a script that starts the node manager, then uses wlst to connect
167
- # to the nodemanager and start the server.
168
- # The script and 'EOF' on the following lines must not be indented!
169
- cat << EOF > ${scriptFile}
170
- #!/bin/bash
171
-
172
- # Check for stale state file and remove if found"
173
- if [ -f ${stateFile} ]; then
174
- echo "Removing stale file ${stateFile}"
175
- rm ${stateFile}
176
- fi
177
-
178
- echo "Start the nodemanager"
179
- . ${nmdir}/startNodeManager.sh &
180
-
181
- echo "Allow the nodemanager some time to start before attempting to connect"
182
- sleep 15
183
- echo "Finished waiting for the nodemanager to start"
184
-
185
- echo "Update JVM arguments"
186
- if [ $# -eq 3 ]
187
- then
188
- echo "Update JVM arguments for admin server"
189
- echo "Arguments=\${USER_MEM_ARGS} -XX\:+UnlockExperimentalVMOptions -XX\:+UseCGroupMemoryLimitForHeap \${JAVA_OPTIONS}" >> ${startProp}
190
- else
191
- echo "Update JVM arguments for managed server"
192
- wlst.sh ${argsFile} $1 $2 ${startProp}
193
- fi
194
-
195
- echo "Start the server"
196
- wlst.sh -skipWLSModuleScanning ${pyFile}
197
-
198
- echo "Wait indefinitely so that the Kubernetes pod does not exit and try to restart"
199
- while true; do sleep 60; done
200
- EOF
201
-
202
- checkFileExists ${scriptFile}
203
- chmod +x ${scriptFile}
204
-
205
- # Create a python script to execute the wlst commands.
206
- # The script and 'EOF' on the following lines must not be indented!
207
- cat /u01/weblogic/read-domain-secret.py > ${pyFile}
208
- cat << EOF >> ${pyFile}
209
-
210
- # Connect to nodemanager and start server
211
- nmConnect(admin_username, admin_password, '$1-$2', '5556', '%DOMAIN_NAME%', '${DOMAIN_HOME}', 'plain')
212
- nmStart('$2')
213
-
214
- # Exit WLST
215
- nmDisconnect()
216
- exit()
217
- EOF
218
-
219
- checkFileExists ${pyFile}
220
-
221
- # Create a python script to set JVM arguments for managed server.
222
- # The script and 'EOF' on the following lines must not be indented!
223
- cat << EOF > ${argsFile}
224
-
225
- import os
226
- import sys
227
- EOF
228
-
229
- cat /u01/weblogic/read-domain-secret.py >> ${argsFile}
230
- cat << EOF >> ${argsFile}
231
-
232
- mem_args=os.environ['USER_MEM_ARGS']
233
- java_opt=os.environ['JAVA_OPTIONS']
234
- admin_server=os.environ['ADMIN_NAME']
235
- admin_port=os.environ['ADMIN_PORT']
236
-
237
- domain_UID=sys.argv[1]
238
- server_name=sys.argv[2]
239
- startup_file=sys.argv[3]
240
-
241
- adminUrl='t3://' + domain_UID + '-' + admin_server + ':' + admin_port
242
- dirStr='Servers/managed-server1/ServerStart/' + server_name
243
-
244
- # Connect to admin server to get startup arguments of this server
245
- connect(admin_username, admin_password, adminUrl)
246
- cd(dirStr)
247
- args=get('Arguments')
248
- disconnect()
249
-
250
- f = open(startup_file, 'a')
251
- s=str("Arguments="+ mem_args + " -XX\:+UnlockExperimentalVMOptions -XX\:+UseCGroupMemoryLimitForHeap " + java_opt )
252
- if not (args is None):
253
- s=str(s + " " + args + "\n")
254
- else:
255
- s=str(s + "\n")
256
-
257
- f.write(s)
258
- f.close()
259
- EOF
260
-
261
- checkFileExists ${argsFile}
262
-
263
- }
264
-
265
- # Function to create script for stopping a server
266
- # $1 - Domain UID
267
- # $2 - Server Name
268
- function createStopScript() {
269
-
270
- nmdir=${DOMAIN_HOME}/servers/$2/nodemgr_home
271
- scriptFile=${nmdir}/stopServer.sh
272
- pyFile=${nmdir}/stop-server.py
273
-
274
- # Create a script that stops the server.
275
- # The script and 'EOF' on the following lines must not be indented!
276
- cat << EOF > ${scriptFile}
277
- #!/bin/bash
278
-
279
- echo "Stop the server"
280
- wlst.sh -skipWLSModuleScanning ${pyFile}
281
-
282
- # Return status of 2 means failed to stop a server through the NodeManager.
283
- # Look to see if there is a server process that can be killed.
284
- if [ \$? -eq 2 ]; then
285
- pid=\$(jps -v | grep '[D]weblogic.Name=$2' | awk '{print \$1}')
286
- if [ ! -z \$pid ]; then
287
- echo "Killing the server process \$pid"
288
- kill -15 \$pid
289
- fi
290
- fi
291
-
292
- EOF
293
-
294
- checkFileExists ${scriptFile}
295
- chmod +x ${scriptFile}
296
-
297
- # Create a python script to execute the wlst commands.
298
- # The script and 'EOF' on the following lines must not be indented!
299
- cat /u01/weblogic/read-domain-secret.py > ${pyFile}
300
- cat << EOF >> ${pyFile}
301
-
302
- # Connect to nodemanager and stop server
303
- try:
304
- nmConnect(admin_username, admin_password, '$1-$2', '5556', '%DOMAIN_NAME%', '${DOMAIN_HOME}', 'plain')
305
- except:
306
- print('Failed to connect to the NodeManager')
307
- exit(exitcode=2)
308
-
309
- # Kill the server
310
- try:
311
- nmKill('$2')
312
- except:
313
- print('Connected to the NodeManager, but failed to stop the server')
314
- exit(exitcode=2)
315
-
316
- # Exit WLST
317
- nmDisconnect()
318
- exit()
319
- EOF
320
- }
321
-
322
- checkFileExists ${pyFile}
323
-
324
107
# Create the domain
325
108
wlst.sh -skipWLSModuleScanning /u01/weblogic/create-domain.py
326
109
327
- # Setup admin server
328
- createNodeMgrHome %DOMAIN_UID% %ADMIN_SERVER_NAME%
329
- createStartScript %DOMAIN_UID% %ADMIN_SERVER_NAME% 'admin'
330
- createStopScript %DOMAIN_UID% %ADMIN_SERVER_NAME%
331
-
332
- # Create the managed servers
333
- index=0
334
- while [ $index -lt %CONFIGURED_MANAGED_SERVER_COUNT% ]
335
- do
336
- ((index++))
337
- createNodeMgrHome %DOMAIN_UID% %MANAGED_SERVER_NAME_BASE%${index} %DOMAIN_UID%-%ADMIN_SERVER_NAME%
338
- createStartScript %DOMAIN_UID% %MANAGED_SERVER_NAME_BASE%${index}
339
- createStopScript %DOMAIN_UID% %MANAGED_SERVER_NAME_BASE%${index}
340
- done
341
-
342
110
echo "Successfully Completed"
343
111
344
112
create-domain.py : |-
@@ -351,13 +119,15 @@ data:
351
119
domain_path = os.environ.get("DOMAIN_HOME")
352
120
cluster_name = "%CLUSTER_NAME%"
353
121
number_of_ms = %CONFIGURED_MANAGED_SERVER_COUNT%
122
+ cluster_type = "%CLUSTER_TYPE%"
354
123
355
124
print('domain_path : [%s]' % domain_path);
356
125
print('domain_name : [%DOMAIN_NAME%]');
357
126
print('admin_username : [%s]' % admin_username);
358
127
print('admin_port : [%ADMIN_PORT%]');
359
128
print('cluster_name : [%s]' % cluster_name);
360
129
print('server_port : [%s]' % server_port);
130
+ print('cluster_type : [%s]' % cluster_type);
361
131
362
132
# Open default domain template
363
133
# ============================
@@ -416,28 +186,56 @@ data:
416
186
set('NodeManagerPasswordEncrypted', admin_password)
417
187
418
188
# Create a cluster
189
+ # ======================
419
190
cd('/')
420
- create(cluster_name, 'Cluster')
191
+ cl=create(cluster_name, 'Cluster')
192
+
193
+ if cluster_type == "CONFIGURED":
421
194
422
- # Create managed servers
423
- for index in range(0, number_of_ms):
424
- cd('/')
195
+ # Create managed servers
196
+ for index in range(0, number_of_ms):
197
+ cd('/')
425
198
426
- msIndex = index+1
427
- name = '%MANAGED_SERVER_NAME_BASE%%s' % msIndex
199
+ msIndex = index+1
200
+ name = '%MANAGED_SERVER_NAME_BASE%%s' % msIndex
428
201
429
- create(name, 'Server')
430
- cd('/Servers/%s/' % name )
431
- print('managed server name is %s' % name);
432
- set('ListenAddress', '%DOMAIN_UID%-%s' % name)
433
- set('ListenPort', server_port)
434
- set('NumOfRetriesBeforeMSIMode', 0)
435
- set('RetryIntervalBeforeMSIMode', 1)
436
- set('Cluster', cluster_name)
202
+ create(name, 'Server')
203
+ cd('/Servers/%s/' % name )
204
+ print('managed server name is %s' % name);
205
+ set('ListenAddress', '%DOMAIN_UID%-%s' % name)
206
+ set('ListenPort', server_port)
207
+ set('NumOfRetriesBeforeMSIMode', 0)
208
+ set('RetryIntervalBeforeMSIMode', 1)
209
+ set('Cluster', cluster_name)
437
210
438
- create(name,'Log')
439
- cd('/Servers/%s/Log/%s' % (name, name))
440
- set('FileName', '/shared/logs/%s.log' % name)
211
+ create(name,'Log')
212
+ cd('/Servers/%s/Log/%s' % (name, name))
213
+ set('FileName', '/shared/logs/%s.log' % name)
214
+ else:
215
+ print('Configuring Dynamic Cluster %s' % cluster_name)
216
+
217
+ templateName = cluster_name + "-template"
218
+ print('Creating Server Template: %s' % templateName)
219
+ st1=create(templateName, 'ServerTemplate')
220
+ print('Done creating Server Template: %s' % templateName)
221
+ cd('/ServerTemplates/%s' % templateName)
222
+ cmo.setListenPort(server_port)
223
+ cmo.setListenAddress('%DOMAIN_UID%-%MANAGED_SERVER_NAME_BASE%${id}')
224
+ cmo.setCluster(cl)
225
+ print('Done setting attributes for Server Template: %s' % templateName);
226
+
227
+
228
+ cd('/Clusters/%s' % cluster_name)
229
+ create(cluster_name, 'DynamicServers')
230
+ cd('DynamicServers/%s' % cluster_name)
231
+ set('ServerTemplate', st1)
232
+ set('ServerNamePrefix', "%MANAGED_SERVER_NAME_BASE%")
233
+ set('DynamicClusterSize', number_of_ms)
234
+ set('MaxDynamicClusterSize', number_of_ms)
235
+ set('CalculatedListenPorts', false)
236
+ set('Id', 1)
237
+
238
+ print('Done setting attributes for Dynamic Cluster: %s' % cluster_name);
441
239
442
240
# Write Domain
443
241
# ============
@@ -452,38 +250,6 @@ data:
452
250
updateDomain()
453
251
closeDomain()
454
252
print 'Domain Updated'
455
-
456
- # Encrypt the admin username and password
457
- adminUsernameEncrypted=encrypt(admin_username, domain_path)
458
- adminPasswordEncrypted=encrypt(admin_password, domain_path)
459
-
460
- print 'Create boot.properties files for admin and managed servers'
461
-
462
- asbpFile=open('%s/servers/%ADMIN_SERVER_NAME%/security/boot.properties' % domain_path, 'w+')
463
- asbpFile.write("username=%s\n" % adminUsernameEncrypted)
464
- asbpFile.write("password=%s\n" % adminPasswordEncrypted)
465
- asbpFile.close()
466
-
467
- import os
468
-
469
- # Create boot.properties file for each managed server
470
- for index in range(0, number_of_ms):
471
-
472
- # Define the folder path
473
- secdir='%s/servers/%MANAGED_SERVER_NAME_BASE%%s/security' % (domain_path, index+1)
474
-
475
- # Create the security folder (if it does not already exist)
476
- try:
477
- os.makedirs(secdir)
478
- except OSError:
479
- if not os.path.isdir(secdir):
480
- raise
481
-
482
- bpFile=open('%s/boot.properties' % secdir, 'w+')
483
- bpFile.write("username=%s\n" % adminUsernameEncrypted)
484
- bpFile.write("password=%s\n" % adminPasswordEncrypted)
485
- bpFile.close()
486
-
487
253
print 'Done'
488
254
489
255
# Exit WLST
0 commit comments