Od wersji 7.3 serwery aplikacji – EuroAP i jego brat JBoss® EAP – udostępniają możliwość przechowywania w systemie kontroli wersji Git danych konfiguracyjnych. Dzięki temu zyskujemy możliwość zarządzania konfiguracją wielu serwerów w trybie standalone.
W tym przypadku nie mamy, tak jak w trybie zarządzanej domeny, możliwości zarządzania wieloma serwerami, grupowania ich czy podglądania w runtime'ie, ale możemy sobie zapewnić spójną konfigurację. Funkcjonalność ta działa wyłącznie w trybie standalone przy domyślnym ustawieniu folderów.
Motywacja
Git to najpopularniejszy system kontroli wersji. Pozwala śledzić dokonane zmiany, a także przywrócić system do konkretnego stanu z przeszłości. Umożliwia wydajną pracę rozproszonego zespołu dzięki łatwemu systemowi tworzenia odgałęzień oraz scalaniu wielu zmian w jedną.
Trzymając konfigurację serwera aplikacji w repozytorium Git, zyskujemy:
- wersjonowanie zmian – mamy informację o tym, kto i kiedy zmienił konfigurację
- możliwość powrotu do danych ustawień
- wszystkie dane konfiguracyjne są śledzone i jeśli używamy zdalnego repozytorium, to mamy ich kopię zapasową
- spójną konfigurację między serwerami i węzłami.
Gdy skonfigurujemy Git w naszym serwerze aplikacji, każda zmiana danych konfiguracyjnych dokonana przez CLI lub graficzną konsolę administratora będzie odzwierciedlana w repozytorium. Zmiany dokonane bezpośrednio na plikach (czyli realizowane wbrew zalecanym standardom) nie są automatycznie udostępniane. Można je dodać manualnie lub za pomocą polecenia w CLI. Przez dane konfiguracyjne rozumiemy: pliki konfiguracyjne .xml, pliki z właściwościami (ang. properties files) oraz pliki wdrożeń znajdujące się w folderze kryjącym się za zmienną jboss.server.base.dir
.
Konfiguracja
Aby ustawić wersjonowanie konfiguracji serwera aplikacji EuroAP w trybie standalone w Git, należy podać odpowiednie przełączniki do skryptu startującego standalone.sh
. Dostępne przełączniki to: --git-repo --git-auth --git-branch
.
Jeśli podane wartości nie umożliwią podłączenia się do repozytorium, to serwer aplikacji zakończy pracę z błędem WFLYSRV0268: Failed to pull the repository
.
git-repo
Przełącznik --git-repo
przyjmuje dwie wartości: local albo URL do zdalnego repozytorium.
Repozytorium lokalne
Repozytorium lokalne to takie, które mamy na swoim komputerze. Powstaje po wywołaniu polecenia git init
. Gdy w przełączniku --git-repo
podamy lokalne repozytorium (czyli po prostu wartość local), to: jeśli w folderze jboss.server.base.dir
istnieje już repozytorium gitowe, to zostanie ono użyte. Jeśli nie istnieje – to zostanie zainicjalizowane.
Poniżej przykład użycia tego przełącznika i zawartość folderu EUROAP_HOME/standalone
na czystej, jeszcze nieużywanej instalacji EuroAP.
[EUROAP_HOME/standalone]$ ls -a ./ ../ configuration/ deployments/ lib/ tmp/ [EUROAP_HOME/bin]$ ./standalone.sh --git-repo=local [EUROAP_HOME/standalone]$ ls -a . .. configuration data deployments .git .gitignore lib log tmp
Jak widzimy, w folderze jboss.server.base.dir
, u nas będącym folderem EUROAP_HOME/standalone
, zostało zainicjalizowane repozytorium gita.
Repozytorium zdalne
Repozytorium zdalne w projektach gitowych domyślnie nazywa się origin i podłączamy je za pomocą polecenia git remote add origin URL_DO_GIT_REPO
.
Gdy w przełączniku --git-repo
podamy URL do zdalnego repo, to serwer aplikacji sprawdzi, czy w folderze jboss.server.base.dir
jest już repozytorium gita. Jeśli nie, to usunie istniejące pliki i skopiuje te z repozytorium. W przypadku gdy repozytorium Gita już istnieje i różni się od tego, z którego chcemy ściągnąć zmiany, serwer zakończy swoją pracę z błędem WFLYSRV0268: Failed to pull the repository
, bo nie będzie umiał poprawnie ściągnąć konfiguracji.
git-branch
Przełącznik --git-branch
służy do definiowania gałęzi lub tagu, z którego chcemy pobierać konfigurację. Musi on istnieć w repozytorium zdefiniowanym w przełączniku --git-repo
. Domyślnie używana jest gałąź master.
Tagów używamy tak, jak zwykle ma to miejsce w gicie – jest to pewny, zdefiniowany punkt. Checkout na tagu sprawia, że przechodzimy w tryb oderwanej głowy (ang. detached head) i kolejne komity nie będą śledzone na żadnej gałęzi. Zatem tagów używamy jako konfigurację tylko do odczytu, np. żeby rozprowadzić daną konfigurację na wielu węzłach. Gdy chcemy konfigurację tworzyć, a więc móc ją zapisywać, używamy gałęzi.
git-auth
Przełącznik --git-auth
przyjmuje URL do pliku z konfiguracją Elytron, który zawiera kredencjały do zdalnego repozytorium Gita. Jeśli dane zdalne repozytorium wymaga uwierzytelnienia, to należy podać ten przełącznik. Nie jest używany przy repozytorium lokalnym.
Przykład
Poniżej pokazujemy przykładową konfigurację dla zdalnego repozytorium na githubie używającego protokołu https i uwierzytelnienia opartego na haśle. Plik z danymi do uwierzytelnienia znajdujący się w lokalizacji /demo/euroap-git-config.xml
:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <authentication-client xmlns="urn:elytron:client:1.2"> <authentication-rules> <rule use-configuration="test-login"> </rule> </authentication-rules> <authentication-configurations> <configuration name="test-login"> <sasl-mechanism-selector selector="BASIC" /> <set-user-name name="testUser" /> <credentials> <clear-password password="api_key_with_push_right" /> </credentials> <set-mechanism-realm name="testRealm" /> </configuration> </authentication-configurations> </authentication-client> </configuration>
Poniżej polecenie uruchamiające serwer z podłączonym zdalnym repo na gałęzi demo_branch
. Dane do uwierzytelnienia znajdują się w pliku /demo/euroap-git-config.xml
.
./standalone.sh --git-repo=https://github.com/EuroLinux/euroap-config-test.git --git-branch=demo_branch --git-auth=file:///demo/euroap-git-config.xml
Publikowanie zmian
Używając zdalnego repozytorium, możemy publikować zmiany w konfiguracji za pomocą CLI. Służy do tego polecenie :publish-configuration(location="=https://github.com/EuroLinux/euroap-config-test.git ")
. Proszę zwrócić uwagę na dość dziwną składnię argumentu "=URL". Bez znaku równości na początku będziemy dostawać mało intuicyjny, acz logiczny błąd o nieudanym uwierzytelnieniu.
Podsumowanie
Jak widać, aby podłączyć do systemu kontroli wersji dane konfiguracyjne serwera aplikacji EuroAP lub pokrewnego, wystarczy podać odpowiednie przełączniki przy starcie systemu. Jest to funkcjonalność dodana w EuroAP 7.3, aby umożliwić utrzymanie spójnej konfiguracji wielu węzłów w trybie standalone.