OPSI Docker - zweiter Depotserver

Antworten
me-sp
Beiträge: 11
Registriert: 26 Jan 2023, 09:11

OPSI Docker - zweiter Depotserver

Beitrag von me-sp »

Hallo,

hat jemand Opsi als Docker Container laufen und verwendet einen zweiten Depotserver?

Wir möchten gerne zwei Depotserver verwenden, um Windows und Linux Clients zu trennen.

Die docker-compose.yml habe ich von https://github.com/opsi-org/opsi-docker ... ompose.yml mit zwei weiteren Containern (opsi depotserver und redis) erweitert:

Code: Alles auswählen


x-restart-policy: &restart-policy
  restart: unless-stopped

x-common-variables: &common-variables
  TZ: Europe/Berlin

x-common-mysql-variables: &common-mysql-variables
  MYSQL_DATABASE: opsi
  MYSQL_USER: opsi
  MYSQL_PASSWORD: XXXXXXXX

x-common-redis-variables: &common-redis-variables
  REDIS_PASSWORD: XXXXXXXX

x-common-grafana-variables: &common-grafana-variables
  GF_SECURITY_ADMIN_USER: admin
  GF_SECURITY_ADMIN_PASSWORD: XXXXXXXX

services:
  mysql:
    image: mariadb:10.7
    <<: *restart-policy
    command: --max_connections=1000 --max_allowed_packet=256M --sort_buffer_size=4M
    environment:
       <<: [*common-variables, *common-mysql-variables]
       MYSQL_ROOT_PASSWORD: XXXXXXXX
       MYSQL_INITDB_SKIP_TZINFO: 1
    volumes:
      - /opt/docker/opsi/config-server/mysql:/var/lib/mysql

  redis:
    image: redislabs/redistimeseries:latest
    <<: *restart-policy
    command: sh -c "redis-server --requirepass $$REDIS_PASSWORD --loadmodule /usr/lib/redis/modules/redistimeseries.so"
    environment:
      <<: [*common-variables, *common-redis-variables]
    volumes:
      - /opt/docker/opsi/config-server/redis:/data

  grafana:
    image: grafana/grafana:latest
    <<: *restart-policy
    environment:
      <<: [*common-variables, *common-grafana-variables]
      GF_INSTALL_PLUGINS: grafana-simple-json-datasource
      GF_SERVER_ROOT_URL: "%(protocol)s://%(domain)s:%(http_port)s/grafana"
    volumes:
      - /opt/docker/opsi/config-server/grafana:/var/lib/grafana
      
  opsi-server:
      image: uibmz/opsi-server:4.2
      #build: .
      <<: *restart-policy
      depends_on:
      - mysql
      - redis
      ports:
      - "4447:4447"
      - "69:69/udp"
      hostname: opsi-server
      domainname: domain.tld
      environment:
      <<: [*common-variables, *common-mysql-variables, *common-grafana-variables, *common-redis-variables]
      MYSQL_HOST: mysql
      REDIS_HOST: redis
      GRAFANA_HOST: grafana
      OPSI_ADMIN_PASSWORD: XXXXXXXX
      OPSI_ROOT_PASSWORD: XXXXXXXX
      # configserver / depotserver
      OPSI_HOST_ROLE: configserver
      # Run tftp server and opsipxeconfd? ("true"/"false")
      OPSI_TFTPBOOT: "true"
      # OPSI_SERVICE_ADDRESS and OPSI_HOST_KEY is needed for depotserver role only
      #OPSI_SERVICE_ADDRESS:
      #OPSI_HOST_KEY:
      # opsconfd config
      OPSICONFD_GRAFANA_EXTERNAL_URL: /grafana
      OPSICONFD_LOG_LEVEL: 6
      OPSICONFD_LOG_LEVEL_FILE: 4
      volumes:
      - /opt/docker/opsi/config-server/opsi:/data

  redis-linux-depot:
      image: redislabs/redistimeseries:latest
      command: sh -c "redis-server --requirepass $$REDIS_PASSWORD --loadmodule /usr/lib/redis/modules/redistimeseries.so"
      environment:
      REDIS_PASSWORD: XXXXXXXX
      volumes:
      - /opt/docker/opsi/depot-linux/redis:/data

  opsi-linux-depot:
      image: uibmz/opsi-server:4.2
      #build: .
      <<: *restart-policy
      depends_on:
      - opsi-server
      - redis-linux-depot
      ports:
      - "4448:4447"
      hostname: opsi-linux-depot
      domainname: domain.tld
      environment:
      <<: [*common-variables]
      REDIS_HOST: redis-linux-depot
      REDIS_PASSWORD: XXXXXXXXXX
      OPSI_ADMIN_PASSWORD: XXXXXXXXXX
      OPSI_ROOT_PASSWORD: XXXXXXXXXX
      # configserver / depotserver
      OPSI_HOST_ROLE: depotserver
      # Run tftp server and opsipxeconfd? ("true"/"false")
      OPSI_TFTPBOOT: "false"
      # OPSI_SERVICE_ADDRESS and OPSI_HOST_KEY is needed for depotserver role only
      OPSI_SERVICE_ADDRESS: "IP-opsi-server:4447"
      OPSI_HOST_KEY: "XXXXXXXXXXXXXXX"
      # opsconfd config
      OPSICONFD_LOG_LEVEL: 6
      OPSICONFD_LOG_LEVEL_FILE: 4
      volumes:
      - /opt/docker/opsi/depot-linux/opsi:/data


Wenn der opsi-linux-depot container startet kommen folgende Fehlermeldung in den Logs:

Code: Alles auswählen

opsi-opsi-server-1        | [4] [2023-03-08 14:40:36.166] [172.24.0.1] Backend authentication error: No username specified   (session.py:293)
opsi-opsi-linux-depot-1   | [4] [2023-03-08 14:40:36.372] [               ] Failed to setup backend: Backend authentication error: Authentication error 
(error on server)
opsi-opsi-linux-depot-1   | [4] [2023-03-08 14:40:36.698] [               ] Warning 'unclosed <ssl.SSLSocket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('172.24.0.7', 47572), raddr=('10.10.10.20', 4447)>' in file 'opsicommon/client/jsonrpc.py', line 246   (logging.py:848)
Was muss bei der OPSI_SERVICE_ADDRESS angegeben werden?
Bei OPSI_HOST_KEY ist der opsiHostKey des Configserver gemeint oder?

Ich habe schon unterschiedliche OPSI_SERVICE_ADDRESS Einträge probiert, leider kommt immer der oben genannte Fehlermeldung.

LG Markus
Benutzeravatar
j.schneider
uib-Team
Beiträge: 1789
Registriert: 29 Mai 2008, 15:14

Re: OPSI Docker - zweiter Depotserver

Beitrag von j.schneider »

Hallo,

als OPSI_SERVICE_ADDRESS muss die URL des opsi-Services verwendet werden, z.B. https://configserver.domain.tld:4447
Der OPSI_HOST_KEY muss der Host-Key des Depots sein.
Das bedeutet, dass das Depot beim Starten des Containers im Backend schon existieren muss.
me-sp
Beiträge: 11
Registriert: 26 Jan 2023, 09:11

Re: OPSI Docker - zweiter Depotserver

Beitrag von me-sp »

Danke j.schneider

Damit wir den OPSI_HOST_KEY erhalten, haben wir im zweiten Depotserver die Registrierung mit

Code: Alles auswählen

opsi-setup --register-depot --unattended '{"address": "config.server.address:4447/rpc", "username": "adminuserinopsi", "password": "pwoftheuser"}'
und anschließend den OPSI_HOST_KEY in die docker-compose.yml eingetragen.

In der entrypoint.sh des Docker Containers (https://github.com/opsi-org/opsi-docker ... int.sh#L65) haben wir gesehen, dass auch die Variable OPSI_HOST_ID verwendet wird, daher haben wir auch diese in die docker-compose.yml

Code: Alles auswählen

OPSI_HOST_ID: "id-linux-depot"
für das zweite Depot eingetragen.

Im opsi config editor haben wir anschließend für das zweite Depot diese zwei Einträge (Port von 4447 auf 4448) geändert:

Code: Alles auswählen

depotWebDavUrl: webdavs://opsi-linux-depot.tld:4448/depot
repositoryRemoteUrl: webdavs://opsi-linux-depot.tld:4448/repository
Opsi Pakete können aber nur direkt am zweiten Depot installiert werden. Wenn ein Paket über den opsi-config server installiert wird kommt folgende Fehlermeldung:

Code: Alles auswählen

root@opsi-server:/var/lib/opsi/workbench# opsi-package-manager -d opsi-linux-depot.tld -i opsi-linux-client-agent_4.2.0.31-1.opsi
Errors occurred: 
   Failure while processing Install of package(s) /data/lib/workbench/opsi-linux-client-agent_4.2.0.31-1.opsi on depot 'opsi-linux-depot.tld':
      Opsi rpc error: Backend I/O error: Failed to get md5sum: [Errno 2] No such file or directory: '/var/lib/opsi/repository/opsi-linux-client-agent_4.2.0.31-1.opsi' (error on server)

ERROR: Failed to process command 'install': 1 errors during the processing of tasks.
Was könnte hier das Problem sein? Das Opsi Paket wurde per opsi-package-manager vom opsi-server nach opsi-linux-depot:/var/lib/opsi/repository/opsi-linux-client-agent_4.2.0.31-1.opsi hochgeladen

LG Markus
Benutzeravatar
j.schneider
uib-Team
Beiträge: 1789
Registriert: 29 Mai 2008, 15:14

Re: OPSI Docker - zweiter Depotserver

Beitrag von j.schneider »

Wie sieht die Fehlermeldung im opsiconfd.log des Depots aus?
me-sp
Beiträge: 11
Registriert: 26 Jan 2023, 09:11

Re: OPSI Docker - zweiter Depotserver

Beitrag von me-sp »

Im zweiten Depot steht in den Logs leider keine Meldung, aber am Config-Server/ersten Depot steht in opsiconfd/172.29.0.1.log:

Code: Alles auswählen

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "opsiconfd/application/jsonrpc.py", line 561, in process_rpcs
  File "opsiconfd/application/jsonrpc.py", line 532, in process_rpc
  File "starlette/concurrency.py", line 39, in run_in_threadpool
  File "anyio/to_thread.py", line 31, in run_sync
  File "anyio/_backends/_asyncio.py", line 937, in run_sync_in_worker_thread
  File "anyio/_backends/_asyncio.py", line 867, in run
  File "opsiconfd/application/jsonrpc.py", line 464, in execute_rpc
  File "<string>", line 1, in depot_getMD5Sum
  File "OPSI/Backend/Base/Extended.py", line 122, in _executeMethod
  File "<string>", line 1, in depot_getMD5Sum
  File "OPSI/Backend/Base/Extended.py", line 122, in _executeMethod
  File "<string>", line 1, in depot_getMD5Sum
  File "OPSI/Backend/Manager/AccessControl.py", line 443, in _executeMethodProtected
  File "<string>", line 1, in depot_getMD5Sum
  File "OPSI/Backend/Base/Extended.py", line 122, in _executeMethod
  File "<string>", line 1, in depot_getMD5Sum
  File "OPSI/Backend/Base/Extended.py", line 122, in _executeMethod
  File "OPSI/Backend/Depotserver.py", line 89, in depot_getMD5Sum
opsicommon.exceptions.BackendIOError: Backend I/O error: Failed to get md5sum: [Errno 2] No such file or directory: '/var/lib/opsi/repository/hwaudit_4.2.0.1-1.opsi'
opsi-package-manager -d opsi-linux-depot.tld -i hwaudit_4.2.0.1-1.opsi lädt das Opsi Paket auf das zweite Depot, sucht es dann aber anscheinend am Config-Server/ersten Depot unter /var/lib/opsi/repository

opsi-server.tld und opsi-linux-depot.tld zeigt auf die gleiche IP (192.....).

Die beiden Depot Konfigurationen:
Config-Server
Config-Server
depot1.png (52.91 KiB) 980 mal betrachtet
Linux-Depot
Linux-Depot
depot2.png (53.96 KiB) 980 mal betrachtet
LG Markus
Benutzeravatar
j.schneider
uib-Team
Beiträge: 1789
Registriert: 29 Mai 2008, 15:14

Re: OPSI Docker - zweiter Depotserver

Beitrag von j.schneider »

Hallo!
Habe gerade in den Code geschaut.
Der opsi-package-manager kann aktuell nicht mit unterschiedlichen Ports umgehen.
Er verbindet sich immer auf Port 4447 des Depots.
Aktuell geht es also nur mit zwei unterschiedlichen IP-Adressen.
Wir schauen uns das für opsi 4.3 an.
me-sp
Beiträge: 11
Registriert: 26 Jan 2023, 09:11

Re: OPSI Docker - zweiter Depotserver

Beitrag von me-sp »

Hallo,

ok verstehe, danke für die Info.

Gibt es ein ungefähres Datum für opsi 4.3?
Benutzeravatar
j.schneider
uib-Team
Beiträge: 1789
Registriert: 29 Mai 2008, 15:14

Re: OPSI Docker - zweiter Depotserver

Beitrag von j.schneider »

Wir gehen in den nächsten 3-4 Wochen in die Beta-Phase.
Wenn keine größeren Problem mehr auftauchen gehe ich von einem Stable-Release im Juni aus.
Das Problem ist in 4.3 auf jeden Fall behoben.
Benutzeravatar
j.schneider
uib-Team
Beiträge: 1789
Registriert: 29 Mai 2008, 15:14

Re: OPSI Docker - zweiter Depotserver

Beitrag von j.schneider »

Habe einen Backport auf opsi 4.2 gemacht.
Die Änderung ist in opsi-utils 4.2.0.197.
Es wird dann demnächst ein neues Docker-Image geben.
me-sp
Beiträge: 11
Registriert: 26 Jan 2023, 09:11

Re: OPSI Docker - zweiter Depotserver

Beitrag von me-sp »

vielen Dank für Ihre großartige Unterstützung. Wir melden uns wenn wir den neuen Docker Container getestet haben.
Antworten