Zarządzanie konfiguracją serwera aplikacji przy pomocy Git

Zarządzanie konfiguracją serwera aplikacji przy pomocy Git

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.

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.

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ść.