ogagent unification 2 #9
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "unification2"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
Historia de usuario: https://ognproject.evlt.uma.es/redmine/issues/699
Requisitos
Preparar entorno virtualbox
En el repo opengnsys, ir a la rama
unification2
.En
doc/VERSION.json
ponerogagent
a1.3.7
.En el instalador
installer/opengnsys_installer_devel_esxi.sh
:DEFAULT_OGLIVE="ogLive-noble-6.8.0-31-generic-amd64-r20240716.iso"
mysql-server
pormariadb-server
checkNetworkConnection
y el bloqueif
a continuaciónColocar el paquete del agente y el oglive en un sitio donde el instalador va a recogerlos (el paquete debian primero hay que meterlo en un tgz):
Desplegar servidor opengnsys
Es importante colocarse en el directorio del repo del agente. Esto es porque el contenido será visible dentro de la VM bajo
/vagrant
y nos va a hacer falta.El "vagrant up" tarda unos 3 minutos.
Nos conectamos, instalamos flask y lanzamos ogcore-mock en el puerto 444:
Arreglamos algunos bugs:
En
/opt/opengnsys/client/lib/engine/bin/System.lib
línea 62 hay una llamada alogger
. Dado que este archivo va a ser visible en los clientes y éstos no tienen/dev/log
, la llamada alogger
falla. Para solucionar posibles problemas, cambiamoslogger -s -t
porecho
:Los archivos
/opt/opengnsys/client/interfaceAdm/CrearImagen
y/opt/opengnsys/client/interfaceAdm/CambiarAcceso
tienen una comprobación de caller que estorba con el desarrollo nuevo. BuscarogGetCaller
y comentar la línea, así como elif
que hay a continuación.Desplegar modelo
Lo provisionamos y dejamos una sola tarjeta de red:
Después de la provisión, la VM queda apagada (hay un
poweroff
en el script de provisión).Nos vamos al UI de virtualbox y le ponemos un disco de 8 Gb a la VM. Seguro que se puede hacer con comandos de la cmdline pero no quise perder tiempo con eso.
El hecho de tener una sola tarjeta de red y que ésta sea "intnet" causa un conflicto con vagrant, por lo que este cambio nos impide hacer "vagrant up". Toca usar "VBoxManage startvm modelo".
Debería arrancar por DHCP sin problema y llegar al oglive.
Nos conectamos al modelo. Debido al tema de las tarjetas de red, no podemos hacer "vagrant ssh", por lo que primero entramos en el servidor de OG y luego vamos al modelo:
Para que no se nos apague dentro de 20 minutos, ejecutamos
/opt/opengnsys/bin/poweroffconf no
.Configurar modelo
Particionamos el segundo disco:
fdisk /dev/sdb
. Creamos cuatro particiones primarias. Las tres primeras de aproximadamente 1.7 - 1.8 Gb, la última tomando el resto. Que quede aproximadamente así:Esto debería valer:
Creamos filesystem en sdb1 y creamos un
/etc/os-release
dentro:Creamos filesystem en sdb4 con etiqueta y creamos ya un
/opt/opengnsys/images
dentro del caché:Configurar y lanzar agente
Por alguna razón en mis pruebas el ogagent aparece como no instalado. Para instalarlo, tenemos que hacer que el .deb esté visible en el agente y luego pegarle un dpkg -i:
En la configuración del agente (
/usr/share/OGAgent/cfg/ogagent.cfg
) nos aseguramos de que las líneasremote=
apunta a 192.168.2.10 por HTTP (no HTTPS). Comprobamos también la IP en las líneasurlMenu=
.Miramos el log y lanzamos el agente en primer plano:
Pruebas y validaciones
Arranque del agente
Al ejecutar el agente, en el log tiene que aparecer que se encontraron tres módulos:
Al activar el módulo "opengnsys" tiene que salir una excepción controlada:
Abajo de todo debe poner que se activaron dos módulos:
status
Desde el ogserver llamamos a status una vez por cada módulo. La primera debe dar error:
CrearImagen
Desde el ogserver llamamos a CrearImagen y obtenemos una respuesta inmediata:
La consola de la VM tiene que mostrar varios mensajes, como los que muestra la versión 1.1.1d.
En el
tail -f
del agente debe aparecer abajo de todo que se devolvió un 200:En el ogserver podemos ir llamando a status repetidamente:
Y la salida de un
ls /opt/opengnsys/images
tiene que mostrar 5 archivos referentes a la imagen:RestaurarImagen
Desde el ogserver hacemos un POST a RestaurarImagen y obtenemos respuesta:
La consola de la VM tiene que mostrar varios mensajes, como los que muestra la versión 1.1.1d.
Repetimos el polling a status y aparecen el trabajo anterior, ya finalizado, y el nuevo:
Limpieza
a67669b99f
to1864995066
WIP: ogagent unification 2to ogagent unification 2En la parte de prueba, todo lo que se refiere a arreglo de bugs, por qué no se arreglan estas cosas directamente en el código en lugar de modificar los ficheros al vuelo?
Al arrancar el modelo tenemos el siguiente error:
Realmente lo que está pasando es que el paquete debian está disponible en un sitio al que no llega.
Los bugs los arreglamos temporalmente en el PR, y no les damos mejor solución en el repo, porque Antonio Guerrero está pasándolo todo a python y no tiene sentido arreglarlos en bash. Simplemente tocamos lo mínimo para que el PR se pueda validar y tiramos palante.
Este
Internal error, could not locate member control.tar
ocurre cuando el contenido del .deb es, por ejemplo, HTML. De hecho más arriba se ve un 404. Yo también tuve cosas raras con eso. Al final toca hacérselo llegar al cliente de otra manera y pegarle un dpkg -i.Esa otra manera puede ser, por ejemplo, aprovechando que /opt/opengnsys/images es un sitio visible por ambas máquinas:
Por el tema de los discos para no hacerlos manuales, se puede simplemente incluir estas dos lineas en el Vagrantfile
El funcionamiento al crear imagen por parte del ogagent debería no tener estado, es decir al realizar la llamanda:
El proceso se queda esperando a que ogagent termine el trabajo. Realmente el ogagent debe devolver algo así como trabajo iniciado, y por detrás controlar el estado del proceso que crea la imagen, una vez que termina ese proceso, el cliente volverá a preguntar el estado y le devolerá el estado del proceso, que podría ser "en curso", "error", "acabado", etc.
Hecho. He actualizado el OP apuntando a una nueva versión del agente (1.3.7) y tocando la parte de las pruebas.
Ya tengo lo último que hablamos por zoom.
Lanzamos un CrearImagen seguido de otro. El primero va bien y el segundo se niega:
Esto queda así forever. Solo al llamar a status se actualizan las cosas internamente y podemos volver a ejecutar cosas. Esto Manu lo tiene que tener claro.
El error ahora es un diccionario con res=2 según el código original.
Gracias por el review! Mergeo.