Struktura oraz podział używanych serwisów
System podzielony jest między dwa środowiska znajdujące się na osobnych serwerach
Main
PASK-SERVICES - autorskie serwisy UNITEAM
PASK-TOOLS - serwisy potrzebne do obsługi systemu
Utils
PASK-UTILS - baza danych oraz serwisy agregujące dane potrzebne do działania systemu
Minimalne wymagania systemowe oraz przygotowanie środowisk
Aby system działał poprawnie należy przygotować środowiska wg poniższych informacji
Serwer main
Nazwa | Wartość |
---|---|
CPU | 4 vcore |
RAM | 16 GB |
HDD | 50 GB |
OS | Ubuntu server 20.04 LTS (lub nowszy) |
IP | IPv4 |
Serwer utils
Nazwa | Wartość |
---|---|
CPU | 4 vcore |
RAM | 8 GB |
HDD | 50 GB |
OS | Ubuntu server 20.04 LTS (lub nowszy) |
IP | IPv4 |
Stworzyć serwery wg powyższych tabeli
Na obu serwerach stworzyć użytkownika z uprawnieniami root, lub posiadać dostęp do użytkownika systemowego root
Udrożnić połączenie między serwerami tak aby można było swobodnie przesyłać dane między serwerami
Utworzyć rekord DNS (lokalny np. pask.domena.local lub globalny np. pask.domena.pl) i skierować go na adres ip serwera “main”
Upewnić się że serwery mogą pobrać dane z sieci WAN
Stworzyć certyfikat SSL (w postaci certificate.crt oraz privkey.key) tożsame z nadaną nazwą domenową
Jeśli istnieje potrzeba integracji z AD stworzyć użytkownika w domenie z uprawnieniami read-only
Zainstalować wymagane zależności na obu serwerach (kod poniżej) oraz utworzyć wymagane foldery
Wymagane zależności
docker engine
docker compose
apt-transport-https
ca-certificates
curl
software-properties-common
python3-pip
virtualenv
python3-setuptools
cloud-guest-utils
jq
kod do instalujący wymagane zależności i tworzący foldery z odpowiednimi uprawnieniami (zalecane uruchomienie z uprawnieniami root)Code Block apt-get update && apt-get upgrade -y apt-get install -y docker.io apt-transport-https ca-certificates curl software-properties-common python3-pip virtualenv python3-setuptools cloud-guest-utils jq systemctl start docker systemctl enable docker docker --version curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose -version cd /opt mkdir pask pask/data chmod 777 pask/data mkdir composer cd composer
Układ folderów
Code Block /opt/ ├── composer ├── lost+found └── pask └── data
Pozostając w folderze /opt/composer na obu serwerach pobieramy kod aplikacji z repozytorium (dostęp do repozytorium lub jego zawartość przesłane zostaną inną formą komunikacji)
W przypadku gdy chcemy pobrać najnowszą wersję wpisujemy
git clone git@bitbucket.org:uniteampl/iamu-composer.gitW przypadku potrzeby pobrania specyficznej wersji wpisujemy
git clone -b <nazwa_brancha> git@bitbucket.org:uniteampl/iamu-composer.git
np. git clone -b release/1.4.0 git@bitbucket.org:uniteampl/iamu-composer.git
Po sklonowaniu gdy wejdziemy w pobrany folder iamu-composer zobaczymy zawartość w postaci :
Konfiguracja
Konfiguracja polega na edycji dwóch plików, jeden ze zmiennymi systemowymi drugi z konfiguracją serwera proxy.
UWAGA! Poniższe kroki należy wykonać na obu serwerach w dokładnym odwzorowaniu, tak aby po skończonej konfiguracji na obu serwerach znajdowały się dokładnie takie same konfiguracje .env oraz nginx.conf
1. Edycja pliku ze zmiennymi systemowymi “.env”
Plik “.env” znajdziemy w głównym folderze repozytorium. Zawiera on wiele istotnych zmiennych potrzebnych do poprawnego skonfigurowania i uruchomienia systemu. Z racji na ilość danych zmienne zostały zawarte w tabeli poniżej wraz z opisami i danymi. Plik należy dopasować do swoich potrzeb i środowiska.
Plik zawiera konfigurowalne elementy zawarte poniżej, pozostałe elementy należy zostawić niezmienione:
Zmienna | Domyślna wartość | Opis | Konfiguracja |
---|---|---|---|
URL | localhost | Adres na którym jest wystawiony pask podmienić na nazwę domenową | obowiązkowe |
PROFILE | docker | Domyślny profil dla aplikacji z jakim ma być uruchomiona. prod- uruchomimy czyste środowisko bez danych testowych | obowiązkowe |
CRT_DIR | ./proxy/nginx-selfsigned.crt | Lokalizacja certyfikatu ssl, domyślny (generuje ostrzeżenie przy ładowaniu strony logowania) zalecana podmiana | opcjonalne |
KEY_DIR | ./proxy/nginx-selfsigned.key | Lokalizacja klucza certyfikatu ssl, domyślny (generuje ostrzeżenie przy ładowaniu strony logowania) zalecana podmiana | opcjonalne |
POSTGRES_HOST | db-service | Host bazy danych podmienić na adres ip serwra utils | obowiązkowe |
POSTGRES_PASSWORD | iamu_password | Hasło użytkownika bazy danych podmienić na silne hasło | obowiązkowe |
MAIL_SMTP_HOST | smtp | Adres serwera smtp do wysyłki maili przez system podmienić na adres serwera mailowego do wysyłki maili przez system | obowiązkowe |
MAIL_SMTP_PORT | 1025 | Port serwera smtp do wysyłki maili przez system podmienić na port serwera mailowego do wysyłki maili przez system | obowiązkowe |
MAIL_SMTP_USER | - | Login użytkownika serwera pocztowego podmienić na login własnego użytkownika | obowiązkowe |
MAIL_SMTP_PASS | pass** | Hasło użytkownika serwera pocztowego podmienić na hasło własnego użytkownika | obowiązkowe |
MAIL_SMTP_AUTH | 'true' | Zmienna definiująca czy wymagana jest autoryzacja loginem i hasłem zależne od konfiguracji serwera pocztowego | opcjonalne |
MAIL_SMTP_STARTTLS | 'true' | Zmienna definiująca czy wymagane jest szyfrowanie STARTTLS zależne od konfiguracji serwera pocztowego | opcjonalne |
MAIL_FROM | Zmienna definiująca pole “nadawca” zawarte w wysyłanych wiadomościach e-mail | opcjonalne | |
LDAP_ORGANISATION | "pask" | Nazwa organizacji w LDAP zalecana podmiana na własną nazwę organizacji | opcjonalne |
LDAP_DOMAIN | "pask.id" | Nazwa domeny w LDAP zalecana podmiana na własną domenę | opcjonalne |
LDAP_ADMIN_PASSWORD | "some-ldap-password" | Hasło administratora LDAP zalecana podmiana na silne hasło | opcjonalne |
LDAP_IP | ldap | Host serwisu Ldap podmienić na adres ip serwera utils | opcjonalne |
GRAYLOG_HOST | 127.0.0.1 | Host serwisu Graylog podmienić na adres ip serwera utils | obowiązkowe |
INTERNAL_GRAYLOG_HOST | graylog | Host serwisu Graylog podmienić na adres ip serwera util | obowiązkowe |
GRAYLOG_PASSWORD_SECRET | somepasswordpepper | Hasło dostępowe serwisu Graylog zalecana podmiana na silne hasło | opcjonalne |
2. Edycja pliku z konfiguracją serwera proxy
W folderze /opt/composer/iamu-composer/proxy w pliku nginix.conf zawarta jest konfiguracja proxy.
Należy podmienić na adres IP serwera “utils” wszystkie adresy odwołujące się do utils w definicji proxy_pass w poniższych klamrach location
location /graylog
location /db
location /kafka
location /ldap/
location /ssp/
Uruchomienie
Aby uruchomić PASK potrzebujemy najpierw wejść na maszynę z “utils”, wchodzimy do folderu gdzie umieściliśmy folder z sklonowanym systemem PASK i wykonujemy komendę :
docker-compose -f utils-compose.yml -f prod-utils.yml --env-file .env up -d
by zweryfikować poprawność działania serwisów możemy wykonać komendę:
docker-compose -f utils-compose.yml -f prod-utils.yml ps
UWAGA! Poprawne działanie oznacza że kontenery posiadają status healthy a nie starting
Następnie wchodzimy na maszynę “main”, wchodzimy do folderu gdzie umieściliśmy folder z sklonowanym systemem PASK i wykonujemy komendę :
docker-compose -f main-compose.yml -f prod-main.yml --env-file .env up -d
by zweryfikować poprawność działania serwisów możemy wykonać komendę:
docker-compose -f main-compose.yml -f prod-main.yml ps
UWAGA! Poprawne działanie oznacza że kontenery posiadają status healthy a nie starting
Ostatnim krokiem jest wykonanie dwóch metod z ciałem:
Należy podmienić pask.domena.pl na nazwę domenową z przygotowania środowiska
Metodę skierować na adres poniżejadres
Code Block http://pask.domena.pl:8301/init-auth-server
metoda
Code Block { "redirectUrl" : "https://pask.domena.pl/login" }
Następnie należy poczekać na poprawną odpowiedź zwrotną
Należy podmienić pask.domena.pl na nazwę domenową z przygotowania środowiska, wartości email oraz login pozostawić bez zmian natomiast password zastąpić silnym hasłem
Metodę skierować na adres poniżejadres
Code Block http://pask.domena.pl:8301/init-on-premise
metoda
Code Block { "email": "admin@uniteam.pl", "login": "Admin", "password": "hasło", }
Następnie należy poczekać na poprawną odpowiedź zwrotną
Logowanie
Po poprawnej instalacji wchodzimy na wybrany przez nas przy konfiguracji adres dla PASK i zostajemy przekierowani automatycznie do panelu logowania.
Gratulacje instalacja została zakończona sukcesem
Porady:
Sugerujemy aby katalog który podpinamy do bazy danych był osobna macierza albo by posiadał wysoka dostępność.