Installazione di Docker Compose
Le installazioni di SKOOR basate su Docker sono solo a scopo di test e quindi non sono ufficialmente supportate.
Prerequisiti
Sistema operativo Linux
Docker / Docker-Compose
Dal supporto SKOOR (support@skoor.com):
una chiave utente per il registro Docker di SKOOR
Una chiave di licenza SKOOR
Versioni di diversi componenti di SKOOR
Preparare l'installazione
Accedere al registro Docker di SKOOR (il file key.json deve contenere una chiave utente valida per il registro Docker, fornita da SKOOR).
cat key.json | docker login -u _json_key --password-stdin https://europe-docker.pkg.dev
Creare una rete Docker
docker network create skoor-network
Impostare la versione di SKOOR su un valore fornito dal supporto SKOOR (ad esempio, "7.3.0").
export SKOOR_VERSION=<version>
Database
Se non è disponibile un server PostgreSQL, è possibile distribuire un contenitore PostgreSQL di SKOOR. In questa guida si presume che sia necessario un contenitore di database. Pertanto sarà configurato in un file docker-compose.yaml. Se esiste un server di database e non è necessario un contenitore, il servizio eranger-postgresql deve essere rimosso dal file docker-compose.yaml. Contattare l'assistenza SKOOR per informazioni sulla configurazione del server di database.
File system persistente
Per prima cosa, si deve scegliere il percorso del filesystem in cui memorizzare i file del database. La seguente guida assume come percorso /var/lib/pgsql-docker . Si consiglia di modificarlo in base alle proprie preferenze:
export PG_PATH=/var/lib/pgsql-docker
Sull'host docker, creare l'utente postgres con l'id 26 di utente e gruppo:
sudo useradd -d $PG_PATH -g 26 -u 26 -M postgres
Preparare la directory per i file del database, se necessario, e impostare i permessi:
sudo mkdir -p $PG_PATH && sudo chown 26:26 $PG_PATH && sudo chmod 700 $PG_PATH
Creare il database
Inizializzare il database e creare un database clienti
docker run --user=root -v ${PG_PATH}:/var/lib/pgsql -e CUSTOMER=ng \ europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-postgresql:$SKOOR_VERSION /opt/eranger/bin/db-config.sh
Il warning "Il percorso "/var/opt/run/eranger" non esiste! Saltare!" può essere ignorato
L'errore "ERROR: si è verificato un errore del database: (threadId:139786843920512) PGRES_FATAL_ERROR - FEHLER: la relazione "allarmi" non esiste" può essere ignorato.
Contenitori SKOOR
Filesystem persistenti
Aggiungere l'utente eranger al sistema host Docker per i permessi del filesystem persistente:
sudo useradd -u 909 -U -M eranger
Preparare un percorso per i filesystem persistenti (cambiare in un percorso significativo sul sistema di destinazione):
export PERSISTENT_FS=/home/skoor
SKOOR Engine
Lo SKOOR Engine ha bisogno di una struttura di directory sull'host Docker per memorizzare i file persistenti che sono condivisi tra i diversi contenitori. Creare il percorso ipotizzato nel file docker-compose più avanti in questa guida (si può scegliere liberamente un altro):
sudo mkdir -p $PERSISTENT_FS/engine && sudo chmod 755 $PERSISTENT_FS/engine
SKOOR Webservice:
Anche lo SKOOR Webservice ha bisogno di una struttura di directory per memorizzare file e configurazioni persistenti. Il seguente percorso viene assunto nel file docker-compose più avanti in questa guida:
sudo mkdir -p $PERSISTENT_FS/webservice/ && sudo chmod 755 $PERSISTENT_FS/webservice
Inizializzare la configurazione di SKOOR
Impostare la variabile INSTANCE_NAME con un nome semplice che rappresenti un'istanza di SKOOR, ad esempio un nome breve di un'azienda.
Utilizzare solo caratteri o numeri per la variabile INSTANCE_NAME, senza trattini o altri caratteri speciali.
export INSTANCE_NAME=<customer>
Eseguire lo script di configurazione:
docker run --network=skoor-network \ -e NAME=ng \ -e SKOORENGINE_DOMAIN=docker.localhost \ -e DB_IP=eranger-postgresql-$INSTANCE_NAME \ -e DB_POOL_ADDR=eranger-pgbouncer-$INSTANCE_NAME \ -e SINGLE_TENANT=true \ -e CUSTOMER_DB=true \ -v $PERSISTENT_FS/engine:/mnt/customer \ -v $PERSISTENT_FS/webservice:/mnt/webservice \ europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/sdaas-config:$SKOOR_VERSION /tmp/sdaas-config.sh nodb
Creare i file di Docker Compose
Creare una cartella Docker Compose:
mkdir -p ~/docker-compose/skoor && cd ~/docker-compose/skoor
Creare il file .env all'interno della cartella skoor:
echo -e "PERSISTENT_FS=$PERSISTENT_FS\n\ POSTGRESQL_PATH=$PG_PATH\n\ INSTANCE_NAME=$INSTANCE_NAME\n\ SKOOR_VERSION=$SKOOR_VERSION\n\ AUTH_VERSION=$SKOOR_VERSION\n\ ETL_VERSION=$SKOOR_VERSION\n\ DASHBOARD_VERSION=$SKOOR_VERSION\n\ DATABASE_VERSION=$SKOOR_VERSION\n\ DATABASE_IMAGE=eranger-postgresql" > .env
Per l'uso con il wrapper di dati esteri StableNet® , impostare DATABASE_IMAGE su eranger-postgresql-stablenet e DATABASE_VERSION di conseguenza.
Tutte le versioni di questo file sono configurate allo stesso modo con la minor release corrente. Tuttavia, le versioni dei diversi componenti di SKOOR possono cambiare. Chiedere al supporto SKOOR le versioni più recenti.
Creare il file license.txt contenente una licenza SKOOR valida. Esempio:
license_name = test license_devices = 99 license_sikulix = 5 license_feature_set = 3.1 license_key = 97bbd371d35143d7e6292a311e299d7b0a683d11adf8ad30ba09ebbdeb071866ed345fb67...
Aggiungere le informazioni sulla licenza al file .env di Docker Compose:
cat license.txt | sed -e 's/license_[a-z]\+/\U&/g' | tr -d ' ' | sed -e '/^LICENSE_FEATURE_set.*$/ d' >> .env
Creare un file docker-compose.yaml con il seguente contenuto:
services: eranger-server: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-server:${SKOOR_VERSION} container_name: eranger-server-${INSTANCE_NAME} volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" - "${PERSISTENT_FS}/engine/tmp:/srv/eranger/html/tmp" - "${PERSISTENT_FS}/engine/templates:/srv/eranger/html/templates" - "${PERSISTENT_FS}/engine/snmp_walk:/srv/eranger/html/snmp_walk" - "${PERSISTENT_FS}/engine/reports:/srv/eranger/html/reports" - "${PERSISTENT_FS}/engine/parsefile:/srv/eranger/html/parsefile" - "${PERSISTENT_FS}/engine/fetchfile:/srv/eranger/html/fetchfile" - "${PERSISTENT_FS}/engine/execute:/srv/eranger/html/execute" - "${PERSISTENT_FS}/engine/eem_mht_logs:/srv/eranger/html/eem_mht_logs" - "${PERSISTENT_FS}/engine/sikulix:/srv/eranger/html/sikulix" - "${PERSISTENT_FS}/engine/selenium:/srv/eranger/html/selenium" environment: - SKOOR_SERVER_db_address=eranger-pgbouncer-${INSTANCE_NAME} - SKOOR_SERVER_db_database=ng - SKOOR_SERVER_license_name=${LICENSE_NAME} - SKOOR_SERVER_license_devices=${LICENSE_DEVICES} - SKOOR_SERVER_license_jobs=${LICENSE_JOBS} - SKOOR_SERVER_license_sikulix=${LICENSE_SIKULIX} - SKOOR_SERVER_license_feature_set=3.1 - SKOOR_SERVER_license_key=${LICENSE_KEY} - SKOOR_SERVER_license_expire=${LICENSE_EXPIRE} expose: - "50001" depends_on: - eranger-postgresql eranger-report: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-report:${SKOOR_VERSION} container_name: eranger-report-${INSTANCE_NAME} volumes: - "${PERSISTENT_FS}/engine/tmp:/srv/eranger/html/tmp" - "${PERSISTENT_FS}/engine/templates:/srv/eranger/html/templates" - "${PERSISTENT_FS}/engine/transfer:/srv/eranger/html/transfer" - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" - "${PERSISTENT_FS}/engine/reports:/srv/eranger/html/reports" environment: - SKOOR_REPORT_bl_address=eranger-server-${INSTANCE_NAME} - SKOOR_REPORT_bl_port=50001 - SKOOR_REPORT_username=skoor-report - SKOOR_REPORT_password=skoor-report depends_on: - eranger-postgresql eranger-collector: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-collector:${SKOOR_VERSION} container_name: eranger-collector-${INSTANCE_NAME} volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" - "${PERSISTENT_FS}/engine/upload:/opt/eranger/collector/upload" environment: - SKOOR_COLLECTOR_server1_address=eranger-server-${INSTANCE_NAME} - SKOOR_COLLECTOR_server1_port=50001 - SKOOR_COLLECTOR_server1_id=1 - SKOOR_COLLECTOR_server1_user=collector-local - SKOOR_COLLECTOR_server1_passwd=collector-local depends_on: - eranger-postgresql eranger-ui: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-ui:${SKOOR_VERSION} container_name: eranger-ui-${INSTANCE_NAME} ports: - "443:443" volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" - "${PERSISTENT_FS}/engine/tmp:/srv/eranger/html/tmp" - "${PERSISTENT_FS}/engine/templates:/srv/eranger/html/templates" - "${PERSISTENT_FS}/engine/snmp_walk:/srv/eranger/html/snmp_walk" - "${PERSISTENT_FS}/engine/reports:/srv/eranger/html/reports" - "${PERSISTENT_FS}/engine/parsefile:/srv/eranger/html/parsefile" - "${PERSISTENT_FS}/engine/fetchfile:/srv/eranger/html/fetchfile" - "${PERSISTENT_FS}/engine/execute:/srv/eranger/html/execute" - "${PERSISTENT_FS}/engine/eem_mht_logs:/srv/eranger/html/eem_mht_logs" - "${PERSISTENT_FS}/engine/sikulix:/srv/eranger/html/sikulix" - "${PERSISTENT_FS}/engine/selenium:/srv/eranger/html/selenium" - "${PERSISTENT_FS}/engine/transfer:/srv/eranger/html/transfer" - "${PERSISTENT_FS}/engine/upload:/opt/eranger/collector/upload" environment: - SKOOR_UI_bl_address=eranger-server-${INSTANCE_NAME} - SKOOR_UI_bl_port=50001 - SKOOR_UI_version=${SKOOR_VERSION} - SKOOR_AUTHHOST=eranger-auth-${INSTANCE_NAME} - SKOOR_WSADDR=http://eranger-webservice-${INSTANCE_NAME}:8090 - SKOOR_SDAAS_WSHOST=eranger-etl-${INSTANCE_NAME} - SKOOR_VIEWER_ADDR=http://localhost depends_on: - eranger-postgresql eranger-pgbouncer: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-pgbouncer:${SKOOR_VERSION} container_name: eranger-pgbouncer-${INSTANCE_NAME} ports: - "5432" environment: - SKOOR_DB_SERVER=eranger-postgresql-${INSTANCE_NAME} - SKOOR_DB_NAME=ng - SDAAS_CUSTOMER_DB_LIST=data depends_on: - eranger-postgresql eranger-auth: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-auth:${AUTH_VERSION} container_name: eranger-auth-${INSTANCE_NAME} ports: - "8094" volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" environment: - SKOOR_AUTH_listen_address=0.0.0.0 - SKOOR_AUTH_engine_address=eranger-server-${INSTANCE_NAME} depends_on: - eranger-postgresql eranger-etl: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-etl:${ETL_VERSION} container_name: eranger-etl-${INSTANCE_NAME} ports: - "8093" volumes: - "${PERSISTENT_FS}/engine/eranger:/var/opt/run/eranger" environment: - SKOOR_ETL_webserviceUrl=http://eranger-webservice-${INSTANCE_NAME}:8090 - SKOOR_ETL_address=0.0.0.0 - SKOOR_ETL_collectorUser=skoor-etl-collector depends_on: - eranger-postgresql eranger-webservice: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/eranger-webservice-dashboards:${DASHBOARD_VERSION} container_name: eranger-webservice-${INSTANCE_NAME} ports: - "8090" volumes: - "${PERSISTENT_FS}/webservice/datasources:/opt/eranger/eranger-webservice/dataSources" - "${PERSISTENT_FS}/webservice/dataqueries:/opt/eranger/eranger-webservice/dataQueries" - "${PERSISTENT_FS}/webservice/files:/opt/eranger/eranger-webservice/files" - "${PERSISTENT_FS}/webservice/gis:/opt/eranger/eranger-webservice/gis" - "${PERSISTENT_FS}/webservice/reports:/opt/eranger/eranger-webservice/reports" - "${PERSISTENT_FS}/webservice/styles:/opt/eranger/eranger-webservice/styles" - "${PERSISTENT_FS}/webservice/translations:/opt/eranger/eranger-webservice/translations" - "${PERSISTENT_FS}/webservice/tmp:/opt/eranger/eranger-webservice/tmp" - "${PERSISTENT_FS}/webservice/webservice-cfg:/etc/opt/eranger" environment: - SKOOR_WEBSERVICE_eranger_address=eranger-server-${INSTANCE_NAME} - SKOOR_WEBSERVICE_db_host=eranger-pgbouncer-${INSTANCE_NAME} - SKOOR_WEBSERVICE_db_database=ng - SKOOR_DASHBOARD_etlService=true - SKOOR_WEBSERVICE_auth_service_url=http://eranger-auth-${INSTANCE_NAME}:8094 depends_on: - eranger-postgresql sdaas-update: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/sdaas-update:${SKOOR_VERSION} container_name: eranger-update-${INSTANCE_NAME} volumes: - "$PERSISTENT_FS/engine:/mnt/customer" - "$PERSISTENT_FS/webservice:/mnt/webservice" environment: - NAME=${INSTANCE_NAME} - DB_IP=eranger-postgresql-${INSTANCE_NAME} - SINGLE_TENANT=true - SKOOR_DB_NAME=ng - SKOOR_VERSION=${SKOOR_VERSION} depends_on: - eranger-postgresql eranger-postgresql: image: europe-docker.pkg.dev/sdaas-298209/eu.gcr.io/${DATABASE_IMAGE}:${DATABASE_VERSION} container_name: eranger-postgresql-${INSTANCE_NAME} volumes: - "$POSTGRESQL_PATH:/var/lib/pgsql" networks: default: name: skoor-network external: true
Eseguire i contenitori SKOOR
docker compose up -d
Controllare i log:
docker compose logs
Controllare lo stato del contenitore:
docker compose ps
Accedere a SKOOR
Aprire https://<indirizzo host> in un browser e accedere con il nome utente admin e la password admin.