1
1
#! /bin/bash
2
- # Copyright (c) 2021, 2023 , Oracle and/or its affiliates.
2
+ # Copyright (c) 2021, 2024 , Oracle and/or its affiliates.
3
3
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
4
4
#
5
5
# This is an example of common functions and procedures used by the provisioning and deletion scripts
@@ -184,6 +184,10 @@ install_operator()
184
184
cd $WORKDIR /samples
185
185
CMD=" helm install weblogic-kubernetes-operator charts/weblogic-operator --namespace $OPERNS --set image=$OPER_IMAGE :$OPER_VER --set serviceAccount=$OPER_ACT "
186
186
CMD=" $CMD --set \" enableClusterRoleBinding=true\" --set \" javaLoggingLevel=FINE\" --set \" domainNamespaceSelectionStrategy=LabelSelector\" --set \" domainNamespaceLabelSelector=weblogic-operator\=enabled\" "
187
+ if [ " $OPER_ENABLE_SECRET " = " true" ]
188
+ then
189
+ CMD=" $CMD --set \" imagePullSecrets[0].name=regcred\" "
190
+ fi
187
191
if [ " $USE_ELK " = " true" ]
188
192
then
189
193
ELK_PROTO=$( echo $ELK_HOST | cut -f1 -d:)
@@ -271,6 +275,21 @@ delete_crd()
271
275
fi
272
276
}
273
277
278
+ #
279
+ # Get Kubernetes Version
280
+ #
281
+ get_k8_ver ()
282
+ {
283
+ kubectl version --short > /dev/null 2>&1
284
+ if [ $? -eq 0 ]
285
+ then
286
+ KVER=$( kubectl version --short=true 2> /dev/null | grep Server | cut -f2 -d: | cut -f1 -d + | sed ' s/ v//' | cut -f 1-3 -d.)
287
+ else
288
+ KVER=$( kubectl version 2> /dev/null | grep Server | cut -f2 -d: | cut -f1 -d + | sed ' s/ v//' | cut -f 1-3 -d.)
289
+ fi
290
+
291
+ echo $KVER
292
+ }
274
293
#
275
294
# Get Kubernetes NodePort Port
276
295
#
@@ -359,7 +378,7 @@ copy_to_k8()
359
378
namespace=$3
360
379
domain_name=$4
361
380
362
- kubectl cp $filename $namespace /$domain_name -adminserver:$PV_MOUNT /$destination
381
+ kubectl -c weblogic-server cp $filename $namespace /$domain_name -adminserver:$PV_MOUNT /$destination
363
382
if [ $? -gt 0 ]
364
383
then
365
384
echo " Failed to copy $filename ."
@@ -434,6 +453,28 @@ create_domain_secret()
434
453
print_time STEP " Create Domain Secret" $ST $ET >> $LOGDIR /timings.log
435
454
}
436
455
456
+ create_domain_secret_wdt ()
457
+ {
458
+ namespace=$1
459
+ domain_name=$2
460
+ wlsuser=$3
461
+ wlspwd=$4
462
+
463
+ ST=$( date +%s)
464
+ print_msg " Creating a Kubernetes Domain Secret"
465
+ if [ " $domain_name " = " $OIG_DOMAIN_NAME " ]
466
+ then
467
+ cd $WORKDIR /samples/create-oim-domain/domain-home-on-pv/wdt-utils
468
+ else
469
+ cd $WORKDIR /samples/create-access-domain/domain-home-on-pv/wdt-utils
470
+ fi
471
+ ./create-secret.sh -l " username=$wlsuser " -l " password=$wlspwd " -n $namespace -d $domain_name -s $domain_name -weblogic-credentials > $LOGDIR /domain_secret.log 2>&1
472
+
473
+ print_status $? $LOGDIR /domain_secret.log
474
+ ET=$( date +%s)
475
+
476
+ print_time STEP " Create Domain Secret" $ST $ET >> $LOGDIR /timings.log
477
+ }
437
478
create_rcu_secret ()
438
479
{
439
480
namespace=$1
@@ -453,6 +494,32 @@ create_rcu_secret()
453
494
print_time STEP " Create RCU Secret" $ST $ET >> $LOGDIR /timings.log
454
495
}
455
496
497
+ create_rcu_secret_wdt ()
498
+ {
499
+ namespace=$1
500
+ domain_name=$2
501
+ rcuprefix=$3
502
+ rcupwd=$4
503
+ syspwd=$5
504
+ dbhost=$6
505
+ dbport=$7
506
+ dbservice=$8
507
+
508
+ ST=$( date +%s)
509
+ print_msg " Creating a Kubernetes RCU Secret"
510
+ if [ " $domain_name " = " $OIG_DOMAIN_NAME " ]
511
+ then
512
+ cd $WORKDIR /samples/create-oim-domain/domain-home-on-pv/wdt-utils
513
+ else
514
+ cd $WORKDIR /samples/create-access-domain/domain-home-on-pv/wdt-utils
515
+ fi
516
+ ./create-secret.sh -l " rcu_prefix=$rcuprefix " -l " rcu_schema_password=$rcupwd " -l " db_host=$dbhost " -l " db_port=$dbport " -l " db_service=$dbservice " -l " dba_user=sys" -l " dba_password=$syspwd " -n $namespace -d $domain_name -s $domain_name -rcu-credentials > $LOGDIR /rcu_secret.log 2>&1
517
+
518
+ print_status $? $LOGDIR /rcu_secret.log
519
+ ET=$( date +%s)
520
+
521
+ print_time STEP " Create RCU Secret" $ST $ET >> $LOGDIR /timings.log
522
+ }
456
523
# Create a working directory inside the Kubernetes container
457
524
#
458
525
create_workdir ()
@@ -462,11 +529,11 @@ create_workdir()
462
529
463
530
ST=$( date +%s)
464
531
print_msg " Creating Work directory inside container"
465
- kubectl exec -n $namespace -ti $domain_name -adminserver -- mkdir -p $K8_WORKDIR
532
+ kubectl exec -n $namespace -ti $domain_name -adminserver -c weblogic-server - - mkdir -p $K8_WORKDIR
466
533
print_status $?
467
534
468
535
printf " \t\t\tCreating Keystores directory inside container - "
469
- kubectl exec -n $namespace -ti $domain_name -adminserver -- mkdir -p $PV_MOUNT /keystores
536
+ kubectl exec -n $namespace -ti $domain_name -adminserver -c weblogic-server - - mkdir -p $PV_MOUNT /keystores
470
537
print_status $?
471
538
ET=$( date +%s)
472
539
@@ -481,7 +548,7 @@ run_command_k8()
481
548
domain_name=$2
482
549
command=$3
483
550
484
- kubectl exec -n $namespace -ti $domain_name -adminserver -- $command
551
+ kubectl exec -n $namespace -ti $domain_name -adminserver -c weblogic-server - - $command
485
552
}
486
553
487
554
# Execute a command inside the Kubernetes container
@@ -493,7 +560,7 @@ run_wlst_command()
493
560
command=$3
494
561
495
562
WLSRETCODE=0
496
- kubectl exec -n $namespace -ti $domain_name -adminserver -- /u01/oracle/oracle_common/common/bin/wlst.sh $command
563
+ kubectl exec -n $namespace -ti $domain_name -adminserver -c weblogic-server - - /u01/oracle/oracle_common/common/bin/wlst.sh $command
497
564
if [ $? -gt 0 ]
498
565
then
499
566
echo " Failed to Execute wlst command: $command "
@@ -526,6 +593,7 @@ download_samples()
526
593
print_time STEP " Download IDM Samples" $ST $ET >> $LOGDIR /timings.log
527
594
}
528
595
596
+
529
597
# Copy Samples to Working Directory
530
598
#
531
599
copy_samples ()
@@ -573,6 +641,19 @@ download_maa_samples()
573
641
print_time STEP " Download MAA Samples" $ST $ET >> $LOGDIR /timings.log
574
642
}
575
643
644
+ # Generate the files required to Build the Domain Creation Image
645
+ #
646
+ generate_wdt_model_files ()
647
+ {
648
+ print_msg " Generating WDT Model Files"
649
+
650
+ cd $WORKDIR /samples/create-* -domain/domain-home-on-pv/wdt-utils/generate_models_utils
651
+ ./generate_wdt_models.sh -i $WORKDIR /create-domain-wdt.yaml -o $WORKDIR > $LOGDIR /generate_wdt_models.log 2>&1
652
+ print_status $? $LOGDIR /generate_wdt_models.log
653
+ ET=` date +%s`
654
+ print_time STEP " Generate WDT Model Files" $ST $ET >> $LOGDIR /timings.log
655
+ }
656
+
576
657
# Create helper pod
577
658
#
578
659
create_helper_pod ()
@@ -586,7 +667,7 @@ create_helper_pod ()
586
667
if [ " $? " = " 0" ]
587
668
then
588
669
echo " Already Created"
589
- check_running $NS helper
670
+ check_running $NS helper 5
590
671
else
591
672
if [ " $USE_REGISTRY " = " true" ]
592
673
then
@@ -596,7 +677,7 @@ create_helper_pod ()
596
677
kubectl run helper --image $IMAGE -n $NS -- sleep infinity > $LOGDIR /helper.log 2>&1
597
678
print_status $? $LOGDIR /helper.log
598
679
fi
599
- check_running $NS helper
680
+ check_running $NS helper 20
600
681
fi
601
682
ET=$( date +%s)
602
683
print_time STEP " Create Helper Pod" $ST $ET >> $LOGDIR /timings.log
@@ -607,7 +688,7 @@ create_helper_pod ()
607
688
remove_helper_pod ()
608
689
{
609
690
NS=$1
610
- kubectl -n $NS delete pod,svc helper
691
+ kubectl -n $NS delete pod helper --force 2> /dev/null
611
692
echo " Helper Pod Deleted:"
612
693
}
613
694
@@ -1133,15 +1214,25 @@ check_running()
1133
1214
NAMESPACE=$1
1134
1215
SERVER_NAME=$2
1135
1216
DELAY=$3
1136
-
1137
- printf " \t\t\tChecking $SERVER_NAME "
1217
+ STEP=$4
1218
+ if ! [[ $DELAY =~ ^[0-9]+$ ]]
1219
+ then
1220
+ STEP=$DELAY
1221
+ unset DELAY
1222
+ fi
1223
+ if [ " $STEP " = " true" ]
1224
+ then
1225
+ print_msg " Checking $SERVER_NAME "
1226
+ else
1227
+ printf " \t\t\tChecking $SERVER_NAME "
1228
+ fi
1229
+
1138
1230
if [ " $SERVER_NAME " = " adminserver" ]
1139
1231
then
1140
1232
sleep ${DELAY:= 120}
1141
1233
else
1142
1234
sleep ${DELAY:= 120}
1143
1235
fi
1144
-
1145
1236
X=0
1146
1237
RETRIES=1
1147
1238
MAX_RETRIES=50
@@ -1190,17 +1281,6 @@ check_running()
1190
1281
exit 1
1191
1282
fi
1192
1283
1193
- if [ " $SERVER_NAME " = " oim-server1" ]
1194
- then
1195
- kubectl logs -n $OIGNS ${OIG_DOMAIN_NAME} -oim-server1 | grep -q " BootStrap configuration Failed"
1196
- if [ $? = 0 ]
1197
- then
1198
- echo " BootStrap configuration Failed - check kubectl logs -n $OIGNS ${OIG_DOMAIN_NAME} -oim-server1"
1199
- exit 1
1200
- fi
1201
- fi
1202
-
1203
-
1204
1284
if [ ! " $RUNNING " = " 0" ]
1205
1285
then
1206
1286
X=$MAX_RETRIES
@@ -1223,6 +1303,71 @@ check_running()
1223
1303
fi
1224
1304
}
1225
1305
1306
+ # Check introspector
1307
+ #
1308
+ check_introspector ()
1309
+ {
1310
+ NAMESPACE=$1
1311
+
1312
+ ST=$( date +%s)
1313
+ print_msg " Waiting for Introspector to complete"
1314
+
1315
+ POD_RUNNING=true
1316
+ while [ " $POD_RUNNING " = " true" ]
1317
+ do
1318
+ POD=$( kubectl -n $NAMESPACE get pods -o wide --no-headers=true --ignore-not-found | grep introspect | head -1 )
1319
+
1320
+ if [ " $POD " = " " ]
1321
+ then
1322
+ POD_RUNNING=false
1323
+ else
1324
+ PODSTATUS=$( echo $POD | awk ' { print $3 }' )
1325
+ if [ " $PODSTATUS " = " CrashLoopBackOff" ] || [ " $PODSTATUS " = " Pending" ] || [ " $PODSTATUS " = " Init:CrashLoopBackOff" ] || [ " $PODSTATUS " = " Init:Pending" ]
1326
+ then
1327
+ echo $POD > $LOGDIR /check_introspector.log 2>&1
1328
+ POD_NAME=$( echo $POD | cut -f1 -d ' ' )
1329
+ kubectl describe pod -n $NAMESPACE $POD_NAME >> $LOGDIR /check_introspector.log 2>&1
1330
+ kubectl logs -n $NAMESPACE $POD_NAME >> $LOGDIR /check_introspector.log 2>&1
1331
+ echo " Pod introspector has failed - Pod Status: $PODSTATUS - Check Logfile: $LOGDIR /check_introspector.log"
1332
+ exit 1
1333
+ fi
1334
+ fi
1335
+ echo -e " .\c"
1336
+ sleep 60
1337
+ done
1338
+
1339
+ if [ " $POD_RUNNING " = " false" ]
1340
+ then
1341
+ echo " Completed."
1342
+ fi
1343
+ ET=` date +%s`
1344
+ print_time STEP " Waiting for Introspector" $ST $ET >> $LOGDIR /timings.log
1345
+ }
1346
+
1347
+ # Check domain created successfully
1348
+ #
1349
+ check_domain_ok ()
1350
+ {
1351
+ NAMESPACE=$1
1352
+ DOMAIN_NAME=$2
1353
+
1354
+ ST=$( date +%s)
1355
+ print_msg " Check Domain created without error"
1356
+
1357
+ kubectl describe domain -n $NAMESPACE $DOMAIN_NAME > $LOGDIR /domain_status.log
1358
+ grep -q SEVERE $LOGDIR /domain_status.log
1359
+ if [ $? -eq 0 ]
1360
+ then
1361
+ echo " Failed - Check Logfile: $LOGDIR /domain_status.log"
1362
+ exit 1
1363
+ else
1364
+ echo " Success"
1365
+ fi
1366
+
1367
+ ET=` date +%s`
1368
+ print_time STEP " Check Domain Created without Error" $ST $ET >> $LOGDIR /timings.log
1369
+ }
1370
+
1226
1371
# Check whether a Kubernetes pod has shutdown
1227
1372
#
1228
1373
check_stopped ()
@@ -1238,7 +1383,7 @@ check_stopped()
1238
1383
while [ $X -lt $RETRIES ]
1239
1384
do
1240
1385
1241
- POD=$( kubectl --namespace $NAMESPACE get pod | grep $SERVER_NAME )
1386
+ POD=$( kubectl --ignore-not-found=true -- namespace $NAMESPACE get pod | grep $SERVER_NAME )
1242
1387
PODSTATUS=$( echo $POD | awk ' { print $3 }' )
1243
1388
RUNNING=$( echo $POD | awk ' { print $2 }' )
1244
1389
if [ " $POD " = " " ]
@@ -1379,6 +1524,7 @@ get_lbr_certificate()
1379
1524
1380
1525
print_msg " Obtaining Load Balancer Certificate $LBRHOST :$LBRPORT "
1381
1526
ST=$( date +%s)
1527
+
1382
1528
openssl s_client -connect ${LBRHOST} :${LBRPORT} -showcerts < /dev/null 2> /dev/null| openssl x509 -outform PEM > $WORKDIR /${LBRHOST} .pem 2> $LOGDIR /lbr_cert.log
1383
1529
print_status $? $LOGDIR /lbr_cert.log
1384
1530
@@ -2499,3 +2645,42 @@ copy_files_to_dr()
2499
2645
ET=$( date +%s)
2500
2646
print_time STEP " Copying OHS Configuration to $DR_HOST " $ST $ET >> $LOGDIR /timings.log
2501
2647
}
2648
+
2649
+ # Check health-check is not being blocked
2650
+ #
2651
+ check_healthcheck_ok ()
2652
+ {
2653
+ ST=$( date +%s)
2654
+ print_msg " Checking Health-check is not blocked"
2655
+
2656
+ printf " \n\t\t\t$OHS_HOST1 - "
2657
+ blocked_ip=$( $SSH ${OHS_USER} @$OHS_HOST1 grep health-check.html $OHS_DOMAIN /servers/ohs? /logs/access_log | grep 403 | awk ' { print $1 }' | tail -1 )
2658
+ if [ " $blocked_ip " = " " ]
2659
+ then
2660
+ echo " Success"
2661
+ else
2662
+ printf " Blocked by IP Address: $blocked_ip - Fixing - "
2663
+ $SSH ${OHS_USER} @$OHS_HOST1 -C sed -i \" / require host/a " \\ require ip $blocked_ip " \" $OHS_DOMAIN /config/fmwconfig/components/OHS/ohs? /webgate.conf
2664
+ print_status $?
2665
+ printf " \t\t\tRestarting OHS $OHS_HOST1 - "
2666
+ $SSH ${OHS_USER} @$OHS_HOST1 " $OHS_DOMAIN /bin/restartComponent.sh $OHS1_NAME " > $LOGDIR /restart_$OHS_HOST1 .log 2>&1
2667
+ print_status $? $LOGDIR /restart_$OHS_HOST1 .log
2668
+ fi
2669
+
2670
+ if [ ! " $OHS_HOST2 " = " " ]
2671
+ then
2672
+ printf " \n\t\t\t$OHS_HOST2 - "
2673
+ blocked_ip=$( $SSH ${OHS_USER} @$OHS_HOST2 grep health-check.html $OHS_DOMAIN /servers/ohs? /logs/access_log | grep 403 | awk ' { print $1 }' | tail -1 )
2674
+ if [ " $blocked_ip " = " " ]
2675
+ then
2676
+ echo " Success"
2677
+ else
2678
+ printf " Blocked by IP Address: $blocked_ip - Fixing - "
2679
+ $SSH ${OHS_USER} @$OHS_HOST2 -C sed -i \" / require host/a " \\ require ip $blocked_ip " \" $OHS_DOMAIN /config/fmwconfig/components/OHS/ohs? /webgate.conf
2680
+ print_status $?
2681
+ printf " \t\t\tRestarting OHS $OHS_HOST2 - "
2682
+ $SSH ${OHS_USER} @$OHS_HOST2 " $OHS_DOMAIN /bin/restartComponent.sh $OHS2_NAME " > $LOGDIR /restart_$OHS_HOST2 .log 2>&1
2683
+ print_status $? $LOGDIR /restart_$OHS_HOST2 .log
2684
+ fi
2685
+ fi
2686
+ }
0 commit comments