Přeskočit obsah

Keycloak

info

V případě, že jste nainstalovali PMC podle příručky Základní instalace PMC, je již datová pumpa v Keycloaku nainstalovaná a není třeba provádět instalaci manuálně.

Vytvoření tabulek v Keycloaku

V databázi Keycloaku je třeba spustit následující sql script

CREATE SEQUENCE pump_table_id_seq;
CREATE TABLE public.pump_table (
    pump_table_id int8 DEFAULT nextval('pump_table_id_seq'::regclass) NOT NULL,
    table_name varchar(512) NOT NULL,
    last_update date NOT NULL,
    column_name varchar(512) NOT NULL,
    CONSTRAINT pump_table_pkey PRIMARY KEY (pump_table_id)
);

CREATE SEQUENCE pump_table_data_id_seq;
CREATE TABLE public.pump_table_data (
    pump_table_data_id int8 DEFAULT nextval('pump_table_data_id_seq'::regclass) NOT NULL,
    value_column int4 NULL,
    value_pk varchar(128) NULL,
    pump_table_id int8 NULL,
    "row_number" int4 NULL,
    value_column_confirmed int4 NULL,
    CONSTRAINT pump_table_data_pkey PRIMARY KEY (pump_table_data_id)
);

Instalace ETL

ETL je možné nainstalovat dvěma způsoby. V dockeru a nebo jako službu.

Konfigurace keycloaku

  • Na aplikaci KeyCloak je potřeba zapnout ukládání informací o přihlášení/odhlášení uživatele.
    • Je třeba nastavit Event Config, ukládat události typu Login, Login_Error, Logout
    • Na dané události nastavit exspiraci na 7 dnů.

Konfigurace Keycloaku

Služba

  1. V adresáři /etc/systemd/system vytvořit soubor etl-pmc.service

    /etc/systemd/system/etl-pmc.service
    [Unit]
    Description=PMC data pump
    After=network.target
    
    [Service]
    Type=simple
    Restart=on-failure
    RestartSec=5s
    
    # (1)!
    User=pmc
    Group=pmc
    
    # (2)!
    WorkingDirectory=/opt/pmc/etl
    
    # (3)!
    ExecStart=java -jar pmc-etl.jar --spring.profiles.active=gctest
    
    # (4)!
    StandardOutput=append:/var/log/etl/etl-pmc.log
    StandardError=inherit
    
    ExecStop=/bin/kill "$MAINPID"
    
    [Install]
    WantedBy=multi-user.target
    
    1. Zadat uživatele a skupinu, pod kterou bude proces spuštěn. Pozor, musí mít práva ke čtení souboru, který se spouští. Pokud chceme pro provoz ETL vytvořit nového uživatele, který bude sloužit pouze k tomuto účeu (doporučeno), můžeme to udělat příkazem useradd např. useradd -m -d /var/lib/pmc pmc
    2. Pracovní adresář služby
    3. Příkaz, který se spouští. Místo pmc-etl.jar je třeba zadat název jaru a místo gctest název profilu
    4. Soubor, do kteŕeho se budou zapisovat logy. Nastavení inherit znamená, že se do stejného souboru zapisuje jak stdout, tak stderr viz systemd.exec.

    note

    Po editaci tohoto souboru je třeba načíst novou konfiguraci příkazem sudo systemctl daemon-reload

  2. Do adresáře /opt/pmc/etl nakopírovat etl jar.

  3. Nastavit automatické spuštění služby příkazem sudo systemctl enable etl-pmc

info

Ovládání služby probíhá standardním spůsobem

sudo systemctl start etl-pmc # (1)!
sudo systemctl stop etl-pmc # (2)!
sudo systemctl restart etl-pmc # (3)!
sudo systemctl status etl-pmc # (4)!
  1. Start služby
  2. Zastavení služby
  3. Restart služby
  4. Vypsání informací o službě

Docker

  1. Vytvořit soubor /opt/pmc/etl/docker-compose.yml

    /opt/pmc/etl/docker-compose.yml
    version: '3.1'
    services:
    etl-pmc:
        image: docker.greencenter.site/etlpostgres:1.0
        restart: always
        extra_hosts:
        - "pmc.local:host-gateway" # (1)!
        volumes:
        - './etl-pmc/application-docker-pmc.properties:/opt/etl/application-docker-pmc.properties'
        - './crt:/usr/local/share/ca-certificates/extra:ro'
        environment:
        TZ: Europe/Prague
        ETL_FLAGS: "--spring.profiles.active=docker-pmc -Duser.country=CZ -Duser.language=cs"
        logging:
        driver: 'journald'
        options:
            tag: 'etl-pmc'
    
    1. Pod názvem pmc.local bude dostupný podkladový systém. To je důležité pro konfigurační soubor etl.
  2. Do adresáře /opt/pmc/etl/crt nahrát certifikát activemq

  3. Vytvořit soubor /opt/pmc/etl/etl-pmc/application-docker-pmc.properties. Viz Konfigurace datové pumpy.
  4. Spustit kontejner
    cd /opt/pmc/etl
    docker-compose up -d