Weblogic – skrypt shell korzystający z WLST do uruchamiania i zatrzymywania serwerów via NodeManager 1


Google translate:

Ave 🙂

ja wiem, że leniwość administratorów, developerów czy też testerów, którzy mają styczność z Weblogic jest wielka – choćby po sobie – i zazwyczaj wszyscy korzystają z konsoli WWW aby dokonywać jakichkolwiek zmian. Rozumiem, ładnie wygląda, nie trzeba tego wszystkiego pisać tylko parę kliknięć i tadam już działa – ba, co poniektórzy nie wiedzą o istnieniu WLST czyli Weblogic Scripting Tool gdzie to wszystko co się klika można zrobić z palca. Najczęściej dowiadują się o istnieniu WLST jak zaczyna szwankować konsola – a czasami tak się zdarza. No i co wtedy? No cóż szybka nauka i można jak biały administrator buszować w czarnych okienkach, stukając kilometrowe polecenia, a wszyscy uważają Ciebie za guru, czują szacunek lub strach 😉

No dobra, teraz już mniej żartów. Od czasu do czasu różni delikwenci muszą zatrzymać i wystartować serwer będący „członkiem” jakiejś domeny. Choćby dlatego, że wymaga tego jakaś zmiana w konfiguracji czy też instalacja nowej aplikacji. Załóżmy, że mamy domenę o nazwie base_domain do której należy 10 ManagedServer’ów. Oczywiście występuje twór w postaci AdminServer’a, który tym wszystkim zarządza poprzez NodeManager. No i właśnie komendy na ten ostatni util zaprzęgniemy do zabawy w postaci oskryptowienia tak WLST, żeby nie trzeba było zaglądać do konsoli WWW aby zatrzymać i uruchomić serwer.

Pokusimy się o zrobienie gui do tego w postaci skryptu shell żeby było ładniej no i żeby można było komuś dać do użytkowania – nawet takiemu, który ma niewielkie pojęcie o tym co robi ale wie, że akurat w tym momencie ma zatrzymać maszynę, a w innym ją uruchomić. Oczywiście skrypt będzie w bardzo prostej postaci ale zawsze można go rozbudować do czegoś bardziej ambitnego.

Na pierwszy ogień ustawmy sobie na swoim środowisku dostęp do skryptu wlst.sh, który od razu załaduje wszystkie zmienne, których będzie potrzebował, oczywiście te zmienne można sobie ustawić samemu ale po co robić coś co już jest. Gdy ktoś używa powłoki Bash to w katalogu domowym powinien znajdować się plik o nazwie .bash_profile, jeżeli ktoś lubuje się choćby w Korn Shell to powinien posiadać plik o nazwie .profile. Tam dodajemy do zmiennej PATH ścieżkę do katalogu gdzie znajduje się wlst.sh. Przykład:

 PATH=$PATH:$HOME/Oracle/Middleware/wlserver_10.3/common/bin

Aby zadziałało można zrobić różne cuda, najłatwiej się przelogować, zmienna zostanie ustawiona, a my będziemy szczęśliwymi posiadaczami bezproblemowego dostępu do WSLT. Teraz wystarczy, że uruchomimy wlst.sh będzie widać ustawianie zmiennych i inne zaklęcia, a następnie da na prompta w postaci:

Initializing WebLogic Scripting Tool (WLST) …

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

wls:/offline>

Teraz możemy rzucić okiem co tutaj możemy wyczyniać. Aby wylistować wszystkie polecenia wydajmy komendę help(‚all’). Lista jest długa ale do potrzeb naszego skryptu będziemy potrzebować następujących poleceń:

  • nmConnect() – do połączenia się z NodeManager’em
  • nmKill() – do zabicia serwera
  • nmStart() – do uruchomienia serwera
  • exit() – do wyjścia

No to już całkiem dużo wiemy, w razie potrzeby możemy skorzystać z pomocy wywołując polecenie help(‚nazwa_komendy’) np. help(‚nmConnect’). Jesteśmy uzbrojeni w potrzebną wiedzę to możemy zacząć się bawić w napisanie skrypty shell.

Skrypt podzieliłem na poszczególne funkcje:

  • lista – funkcja listująca istniejące serwery
  • wybor_ser – funkcja – wyboru serwera i ustawienia odpowiedniej wartości zmiennej serwer
  • co_wybral – funkcja gdzie odbywają się najważniejsze operacje, po pierwsze sprawdza wybór i jeżeli wybór nie został dokonany to ponawia zapytanie, jeżeli zaś został dokonany to woła funkcje opisane poniżej
  • co_zrobic_lista – funkcja listująca opcje wyboru operacji jaka będzie wykonana na serwerze
  • zrob_nagl – funkcja utworzenia nagłówka pliku roboczego w którym wykorzystamy funkcję nmConnect do połączenia z NodeManager’em
  • wybor_co_zrobic – funkcja wyboru operacji wykonywanej na serwerze i zapisu jej do pliku roboczego
  • zrob_stop – funkcja zapisania do pliku roboczego która powoduje wyjście z WLST

Plik roboczy to de facto skrypt, który będziemy wykonywali w WLST za pomocą polecenia wlst.sh < nazwa_skryptu (w naszym przypadku skrypt będzie tworzył się z sekwencją w nazwie aby operacje mogły być wykonywane w tym samym czasie przez więcej niż jedną osobę).

Zatem pełna treść skryptu prezentuje się następująco:

#!/bin/bash
lista()
{
    echo "1.  10001_wl10"
    echo "2.  11001_wl10"
    echo "3.  12001_wl10"
    echo "4.  13001_wl10"
    echo "5.  14001_wl10"
    echo "6.  4001_wl10"
    echo "7.  5001_wl10"
    echo "8.  6001_wl10"
    echo "9.  7001_wl10"
    echo "10. 9001_wl10"
    echo "0.  Zakończ"
}
wybor_ser()
{
echo "Wybierz numer serwera"
read wybor_serwer
case $wybor_serwer in
    1)
        serwer="10001_wl10"
        ;;
    2)
        serwer="11001_wl10"
        ;;
    3)
        serwer="12001_wl10"
        ;;
    4)
        serwer="13001_wl10"
        ;;
    5)
        serwer="14001_wl10"
        ;;
    6)
        serwer="4001_wl10"
        ;;
    7)
        serwer="5001_wl10"
        ;;
    8)
        serwer="6001_wl10"
        ;;
    9)
        serwer="7001_wl10"
        ;;
    10)
        serwer="9001_wl10"
        ;;
    0)
        exit 1
        ;;
esac
}
zrob_nagl()
{
echo "
nmConnect('weblogic','weblogic1','localhost','5556','base_domain','/home/wl10/Oracle/Middleware/user_projects/domains/base_domain','plain')
" >run$seq.py
}
zrob_stop()
{
echo "
exit();
" >>run$seq.py
}
co_zrobic_lista()
{
    echo "1. Start"
    echo "2. Stop"
    echo "0. Zakończ"
}
wybor_co_zrobic()
{
echo "Wybierz co wykonac "
read wybor_co_zrobic
case $wybor_co_zrobic in
    1)
        echo "nmStart('"$serwer"')"&gt;&gt;run$seq.py
        ;;
    2)
        echo "nmKill('"$serwer"')"&gt;&gt;run$seq.py
        ;;
    0)
        exit 1
        ;;
esac
 
}
co_wybral()
{
    if [ -z $serwer ]
    then
        echo "Nie wybrano serwera"
        lista
        wybor_ser
        co_wybral
    else
        echo "Wybrano " $serwer
        co_zrobic_lista
        seq=`date +%s`
        zrob_nagl
        wybor_co_zrobic
        zrob_stop
    fi
}
lista
wybor_ser
co_wybral
 
wlst.sh < run$seq.py

Należy nadać wladmin.sh uprawnienia do wykonania no i możemy używać. Należy pamiętać aby w skrypcie wstawić odpowiedniego użytkownika i hasło. U mnie to użytkownik weblogic z hasłem weblogic1. Miłego użytkowania


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Komentarz do “Weblogic – skrypt shell korzystający z WLST do uruchamiania i zatrzymywania serwerów via NodeManager