Realice una actualización de la versión 2.2.0 a la versión 4.8.16 y no me hace login
garana821 opened this issue · comments
Actualice y el la primera pantalla me sale sin login
y en el area de admin no hace login.
en los logs, el contenedor de isard-engine tiene error al actualizar.
isard-engine | 2021/10/21 13:16:32 540 - INFO - MainThread: UPGRADING users VERSION 13
isard-engine | TABLES TO BE CREATED:
isard-engine | 18
isard-engine | 7
isard-engine | Traceback (most recent call last):
isard-engine | File "start.py", line 29, in
isard-engine | u=Upgrade()
isard-engine | File "/isard/initdb/upgrade.py", line 56, in init
isard-engine | self.upgrade_if_needed()
isard-engine | File "/isard/initdb/upgrade.py", line 70, in upgrade_if_needed
isard-engine | eval('self.' + table + '(' + str(version) + ')')
isard-engine | File "", line 1, in
isard-engine | File "/isard/initdb/upgrade.py", line 834, in users
isard-engine | not r.table(table)
isard-engine | File "/usr/lib/python3.8/site-packages/rethinkdb/ast.py", line 146, in run
isard-engine | return c._start(self, **global_optargs)
isard-engine | File "/usr/lib/python3.8/site-packages/rethinkdb/net.py", line 749, in _start
isard-engine | return self._instance.run_query(q, global_optargs.get("noreply", False))
isard-engine | File "/usr/lib/python3.8/site-packages/rethinkdb/net.py", line 578, in run_query
isard-engine | raise res.make_error(query)
isard-engine | rethinkdb.errors.ReqlNonExistenceError: Cannot perform pluck on a non-object non-sequence null
in:
isard-engine | r.table('users').get('local-default-admin-admin').pluck('photo')
isard-engine | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
isard-engine |
isard-engine | Error Upgrading...
isard-engine | 2021/10/21 13:16:46 352 - INFO - MainThread: Database isard found.
isard-engine | 2021/10/21 13:16:46 352 - INFO - MainThread: TABLES TO BE CREATED:
isard-engine | 2021/10/21 13:16:46 352 - INFO - MainThread: TABLES TO BE DELETED:
isard-engine | 2021/10/21 13:16:46 352 - INFO - MainThread: Database engine already present...
isard-engine | 2021/10/21 13:16:46 358 - INFO - MainThread: Your actual database version is: 7
isard-webapp | 2021/10/21 13:15:15 669 - INFO - MainThread: HypervisorsThread Started
isard-webapp | 2021/10/21 13:15:15 675 - INFO - MainThread: ConfigThread Started
isard-webapp | 2021/10/21 13:15:15 683 - INFO - MainThread: ResourcesThread Started
En la primera imagen quizás no debe estar saliendo el login porque no hay ninguna categoría seleccionada para que salga en el login principal.
En la segunda imagen se esta intentando acceder a la categoría isard-admin des de /login/isard-admin
Para hacer login de usuarios de la categoria default puedes usar /login/default
De todos modos parece que no se ha aplicado esta migración de la base de datos:
https://gitlab.com/isard/isardvdi/-/blob/main/engine/engine/initdb/upgrade.py#L840
Por favor puedes intentar entrar via /login/default
y /isard-admin/login
Se me ocurren varias cosas que pueden estar dando el problema con el hypervisor:
a) Comprueba editando el hypervisor que el puerto es el 2022
b) Comprueba que en el host no está arrancado el libvirt (systemctl status libvirtd)
c) Comprueba que el apparmor no esté bloqueando acceso (systemctl disable apparmor)
Después de cada paso hacer un docker-compose down y un docker-compose up -d para comprobar si se ha solucionado.
Si tienes una versión 4 también puedes eliminar el hypervisor de la interfaz y hacer un docker-compose down isard-hypervisor && docker-compose up -d isard-hypervisor. Los hypervisores en esta versión salen y entran solo a través de api y deberían entrar con los parámetros correctos por defecto.
Si no se soluciona, puedes tambien borrar las claves ssh existentes:
- docker-compose down
- rm -rf /opt/isard/sshkeys
- docker-compose up -d
Aunque tiene pinta de un problema de permisos/conflicto de libvirt. Nos serian útiles los logs durante el inicio de isard-hypervisor (docker logs isard-hypervisor)
Yes, I think now it is because there is no internal docker connection because of the default isard-network ip used already used in another docker network in your system.
It is easy to modify it in isardvdi.cfg the variable DOCKER_NET (should be /24):
https://gitlab.com/isard/isardvdi/-/blob/main/isardvdi.cfg.example#L192
By default it is:
# ------ Docker networking ---------------------------------------------------
## Assign a docker /24 network. The host part will be set by system
## You should avoid setting a network that exists in your infrastructure
## or in isard configuration. Set only the /24 part!
#DOCKER_NET=172.18.255
So modify it to another network and uncomment. After that execute build.sh
and docker-compose up -d
.
NOTE: Maybe before bringing it up again it is needed to remove the existing isard-network:
docker network rm isard-network
El hypervisor no arranca porque no consigue configurar la VPN.
Por favor, puedes probar si el hypervisor puede conectar con la api?
docker-compose exec isard-hypervisor ping -c1 isard-api
El kernel de la máquina host es <5.4 seguramente (puedes mirar con uname -a) y no lleva el módulo de kernel por defecto. Hay que instalarlo desde backports: https://wireguard.how/server/debian/
# lsmod | grep wireguard
wireguard 81920 0
curve25519_x86_64 36864 1 wireguard
libchacha20poly1305 16384 1 wireguard
libblake2s 16384 1 wireguard
libcurve25519_generic 49152 2 curve25519_x86_64,wireguard
ip6_udp_tunnel 16384 2 geneve,wireguard
udp_tunnel 20480 2 geneve,wireguard
Por favor, puedes mirar si el hypervisor puede acceder a la api?
docker-compose exec isard-hypervisor wget http://isard-api:5000
Y mirar que procesos hay en isard-api
?
docker-compose exec isard-api ps -a
@jvinolas Efectivamente el kernel es menor a 5.4 y el wireguard no esta instalado debido a que yo realice la instalación descargando el docker-compose, un PULL y un UP -d
Linux vdi 4.9.0-16-amd64 #1 SMP Debian 4.9.272-2 (2021-07-19) x86_64 GNU/Linux
@sim6 cuando consulto el api del hypervisor me genera un 404,
esta es la salida del api:
root@isard# docker-compose exec isard-api ps -a
PID USER TIME COMMAND
1 root 0:00 {run.sh} /bin/sh /run.sh
6 root 0:16 python3 startv3.py
20 root 0:00 ps -a
root@isard#
Pues el fallo de conexión a la api hace pinta de ser un problema con la red, que por lo que veo es la 172.20.255.X
Puedes facilitarnos las IPs de las redes docker que tienes en el sistema?
# for e in $(docker network ls --format '{{.Name}}') ; do docker network inspect $e --format '{{ printf "%-40s" .Name}} {{.IPAM.Config}}'; done
bridge [{172.17.0.0/16 172.17.0.1 map[]}]
host []
isard-network [{172.18.255.0/24 map[]}]
none []
server-ldap_default [{172.19.0.0/16 172.19.0.1 map[]}]
obviamente, en la recomendación anterior me sugeriste que modificará el archivo isardvdi.cfg la opcion
# ------ Docker networking ---------------------------------------------------
## Assign a docker /24 network. The host part will be set by system
## You should avoid setting a network that exists in your infrastructure
## or in isard configuration. Set only the /24 part!
#DOCKER_NET=172.18.255
Esta es la salida
root@sard# for e in $(docker network ls --format '{{.Name}}') ; do docker network inspect $e --format '{{ printf "%-40s" .Name}} {{.IPAM.Config}}'; done
bridge [{172.17.0.0/16 map[]}]
host []
isard-network [{172.20.255.0/24 map[]}]
none []
Solo era para asegurar que tampoco se estaba solapando la 172.20.255, que ya veo que no. No tienes conectividad entre los contenedores... si puedes hacemos unas comprobaciones básicas:
- Comparten la red isard-network los contenedores que comentaba @sim6 ?
# docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}}{{$key}} {{end}}' isard-api
isard-network
# docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}}{{$key}} {{end}}' isard-hypervisor
isard-network
- Están todos los contenedores en la red isard-network?
# docker network inspect -f '{{range .Containers}}{{.Name}} {{end}}' isard-network
isard-webapp isard-squid isard-guac isard-db isard-hypervisor isard-grafana isard-authentication isard-portal isard-api isard-websockify isard-toolbox isard-vpn isard-stats isard-static isard-influxdb isard-engine
- Pueden hacer ping de un contenedor al otro usando nombres?
# docker exec isard-hypervisor ping isard-api -c2
PING isard-api (172.20.255.10): 56 data bytes
64 bytes from 172.20.255.10: seq=0 ttl=64 time=0.187 ms
64 bytes from 172.20.255.10: seq=1 ttl=64 time=0.219 ms
- Y usando la IP de isard-api?
# docker exec isard-hypervisor ping 172.20.255.10 -c2
PING 172.20.255.10 (172.20.255.10): 56 data bytes
64 bytes from 172.20.255.10: seq=0 ttl=64 time=0.143 ms
- Tiene activado el ICC el docker (Inter Container Connection)? (si sale false está desactivado, cualquier otra cosa, incluso nada, indica que está activado)
# docker inspect -f '{{index .Options "com.docker.network.bridge.enable_icc"}}' isard-network
Si comparten la red
root@isard# docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}}{{$key}} {{end}}' isard-api
isard-network
root@sard# docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}}{{$key}} {{end}}' isard-hypervisor
isard-network
Si están todos los contenedores en la isard-network
root@isard# docker network inspect -f '{{range .Containers}}{{.Name}} {{end}}' isard-network
isard-static isard-toolbox isard-influxdb isard-db isard-authentication isard-guac isard-vpn isard-websockify isard-squid isard-hypervisor isard-webapp isard-engine isard-portal isard-api isard-stats isard-grafana
Ping
root@isard# docker exec isard-hypervisor ping isard-api -c2
PING isard-api (172.20.255.10): 56 data bytes
64 bytes from 172.20.255.10: seq=0 ttl=64 time=0.074 ms
64 bytes from 172.20.255.10: seq=1 ttl=64 time=0.090 ms
--- isard-api ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.074/0.082/0.090 ms
root@isard# docker exec isard-hypervisor ping 172.20.255.10 -c2
PING 172.20.255.10 (172.20.255.10): 56 data bytes
64 bytes from 172.20.255.10: seq=0 ttl=64 time=0.087 ms
64 bytes from 172.20.255.10: seq=1 ttl=64 time=0.081 ms
--- 172.20.255.10 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.081/0.084/0.087 ms
Y si esta activado ICC
`root@isard# docker inspect -f '{{index .Options "com.docker.network.bridge.enable_icc"}}' isard-network
`
Sale vacio
Entonces si que accede a la API. En el mensaje anterior @sim6 olvidó poner el path. Este comando deberia funcionar:
docker-compose exec isard-hypervisor wget -O - http://isard-api:5000/api/v3
Y por lo tanto deduzco que el problema es de la falta del módulo wireguard en el kernel del host. Deberías actualizar siguiendo las instrucciones en https://wireguard.how/server/debian/ desde backports.
Con la instalación de wireguard funcionó, cuando voy a la opcion de VPN me entrega un archivo isard-vpn.conf. ese lo debo agregar en el /etc/wireguard/
???
El archivo que se pueden descargar los usuarios es para que puedan acceder a sus escritorios que tengan la red Wireguard. Este archivo se usa con la herramienta wg-quick isard-vpn.conf
.
Podemos cerrar esta issue? Las proximas preferimos que las abras en http://gitlab.com/isard/isardvdi/-/issues
Perfecto ya podemos cerrarlo,
Gracias.
:) No dudes en abrir nuevas issues en gitlab.