CLI

Command Line Interface w Application Platform – kompendium cz. I.

Dziś inaugurujemy serię wpisów o ulubionym narzędziu DevOpsów pracujących z serwerami aplikacji z rodziny EuroAP. Mowa oczywiście o CLI – Command Line Interface. Mamy nadzieję, że cała seria utworzy kompendium na jego temat dla serwera aplikacji EuroAP w wersji 7.1. Zanim jednak o nim, to malutki offtop, który doprecyzuje, co będzie przedmiotem naszych badań. EuroAP, […]

Dziś inaugurujemy serię wpisów o ulubionym narzędziu DevOpsów pracujących z serwerami aplikacji z rodziny EuroAP. Mowa oczywiście o CLI – Command Line Interface. Mamy nadzieję, że cała seria utworzy kompendium na jego temat dla serwera aplikacji EuroAP w wersji 7.1.

Zanim jednak o nim, to malutki offtop, który doprecyzuje, co będzie przedmiotem naszych badań. EuroAP, bo o nim mowa, jest serwerem aplikacji zbudowanym na bazie kodu źródłowego Red Hat® JBoss® Enterprise Application Platform, który to z kolei jest rozwijany w oparciu o Wildfly. Obrazowo można przedstawić tę rodzinę jako parę bliźniąt: serwer aplikacji EuroAP i Red Hat® JBoss® EAP oraz ich starszego brata Widlfy. W konsekwencji wszystkie przedstawione komendy będą działać tak samo dla EuroAP, jak i dla Red Hat® JBoss® EAP, a znakomita ich większość także dla Wildfly.

Wróćmy do gwiazdy serii – CLI (Command Line Interface). Jest to potężne narzędzie, które umożliwia konfigurację dowolnego elementu EuroAP w sposób programowalny. Może działać w trybie interaktywnym lub też wsadowo przetwarzać skrypty. Dzięki niemu możemy zautomatyzować pracę z naszymi serwerami aplikacji. Super! W takim razie jak to uruchomić? Dokładnie tak samo, jak w każdym innym serwerze aplikacji z rodziny. Wystarczy bowiem odpalić odpowiedni skrypt „jboss-cli”. W naszym ulubionym systemie operacyjnym – EuroLinux – będzie to jboss-cli.sh.

/demo/EuroAP-7.1/bin > ./jboss-cli.sh
You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
[disconnected /] connect 127.0.0.1:9990
[[email protected]:9990 /]

CLI – pobawmy się wdrażaniem aplikacji

Skoro niesamowite narzędzie tkwi w naszych rękach, to co dalej? Wykonajmy operację, do której został stworzony serwer aplikacji i co na pewno prędzej czy później będziemy musieli zrobić – wdróżmy aplikację:

[[email protected]:9990 /] deploy /demo/some_apps/helloworld.war

Skoro nie dostaliśmy informacji o błędzie, to znaczy, że wdrożenie się powiodło. Możemy to zweryfikować, przeglądając logi serwera (jak widać na potrzeby tego demo EuroAP działa w trybie standalone).

WFLYDR0001: Content added at location /demo/EuroAP-7.1/standalone/data/content/9a/db88578e58b4beebed2b1c410ed8d51bd41dba/content
WFLYSRV0027: Starting deployment of "helloworld.war" (runtime-name: "helloworld.war")
WFLYUT0021: Registered web context: '/helloworld' for server 'default-server'
WFLYSRV0010: Deployed "helloworld.war" (runtime-name : "helloworld.war")

Albo przeglądając wszystkie wdrożone na serwerze aplikacje:

[[email protected]:9990 /] deployment-info
NAME           RUNTIME-NAME   PERSISTENT ENABLED STATUS 
helloworld.war helloworld.war true       true    OK

Skoro to takie proste, to się tym nieco pobawmy ;) Wdróżmy aplikację, nadając jej własną, wystrzałową nazwę.

deploy /demo/some_apps/helloworld.war --name=moja_wystrzalowa_apka

Albo zmieńmy runtime-name wdrożonej już aplikacji:

[[email protected]:9990 /] deploy /demo/some_apps/helloworld.war --runtime-name=awesome_app
'helloworld.war' already exists in the deployment repository (use --force to replace the existing content in the repository).

Oj, coś poszło nie tak – szczęśliwie CLI od razu podpowiada, co się dzieje i jak to naprawić. Zatem posłuchajmy go:

deploy /demo/some_apps/helloworld.war --runtime-name=awesome_app --force

Zobaczmy efekt naszej zabawy:

[[email protected]:9990 /] deployment-info
NAME                  RUNTIME-NAME          PERSISTENT ENABLED STATUS 
helloworld.war        awesome_app           true       true    OK     
moja_wystrzalowa_apka moja_wystrzalowa_apka true       true    OK

To mamy dwie aplikacje, które robią to samo, więc może wyrzućmy jedną. Albo wszystkie od razu, bo kto bogatemu w CLI zabroni ;)

undeploy *

Komenda usuwania wszystkich aplikacji z serwera aplikacji chyba nie może być bardziej intuicyjna. Tylko jakoś tak pusto się zrobiło. Nawet nagłówków nie pokazuje…

[[email protected]:9990 /] deployment-info
[[email protected]:9990 /]

Wrzućmy aplikację jeszcze raz. Możemy reużyć wpisane wcześniej polecenia – poruszając się między nimi strzałkami góra/dół albo używając skrótu Ctrl+R i wpisując część polecenia. Jak już je mamy to, zamiast usuwać tak zupełnie, wyłączmy „wystrzałową apkę” – zatrzymamy jej dane, zawartość we wnętrzu EuroAP. Nie będzie ona dostępna dla użytkowników.

[[email protected]:9990 /] undeploy moja_wystrzalowa_apka --keep-content
[[email protected]:9990 /] deployment-info
NAME                  RUNTIME-NAME          PERSISTENT ENABLED STATUS  
helloworld.war        awesome_app           true       true    OK      
moja_wystrzalowa_apka moja_wystrzalowa_apka true       false   STOPPED

I włączmy:

[[email protected]:9990 /] deploy --name=moja_wystrzalowa_apka
[[email protected]:9990 /] deployment-info
NAME                  RUNTIME-NAME          PERSISTENT ENABLED STATUS 
helloworld.war        awesome_app           true       true    OK     
moja_wystrzalowa_apka moja_wystrzalowa_apka true       true    OK

Na dziś to tyle. Mam nadzieję, że przekonaliście się, jakim przyjemnym narzędziem jest CLI i będziecie wyczekiwać kolejnych artykułów;)

Command Line Interface w Application Platform – kompendium cz. I. – ten materiał
Command Line Interface w Application Platform – kompendium cz. II.
Command Line Interface w Application Platform – kompendium cz. III.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.