fix agent for macos #3
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "ogagent-macos"
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/337
paso 1: crear paquete de ogagent para macos
paso 2: instalar macos
Usando un navegador, ir a https://mrmacintosh.com/macos-ventura-13-full-installer-database-download-directly-from-apple/ y bajarse el "Ventura installer" (InstallAssistant.pkg). Colocar el InstallAssistant.pkg en el directorio OSX-KVM.
Aquí aparece un menú. Escoger "6. Ventura (13) RECOMMENDED".
Editar OpenCore-Boot.sh y asegurarse de que tiene estas líneas:
A mí no me funcionaba el ratón, lo solucioné descomentando estas:
Y luego donde "-netdev user", asegurarse de tener
hostfwd=tcp::60022-:22,hostfwd=tcp::60059-:5900,hostfwd=tcp::60080-:8000
.Por último, comentar
-monitor stdio
.En resumen, si hago
git diff
me sale:Lanzar el script y conectarse por VNC (este es el VNC de qemu):
./OpenCore-Boot.sh & sleep 1; xtigervncviewer localhost::5900
.sh /Volumes/InstallAssistant/run_offline.sh
.Si la instalación peta, hacer limpieza (
git reset --hard
) y volver a empezar¯\_(ツ)_/¯
(o hacer una limpieza menos agresiva, esto ya queda como ejercicio para el lector)Una vez macos está instalado, ir a Settings > General > Sharing > Screen sharing. Esta es la configuración de VNC (el de macos, no de qemu). Ponerle contraseña y que todo el mundo tenga todos los permisos. Activarlo.
Ir a Settings > General > Sharing > Remote login. Esta es la configuración de SSH, darle permisos y activarlo.
Salir del VNC de qemu, entrar al de macos:
xtigervncviewer localhost::60059
.Poner esto en el ~/.ssh/config para poder hacer ssh fácilmente al macos:
paso 3: instalar python y dependencias
De algún sitio bajarse Homebrew-4.2.20.pkg.
En el portátil, subir homebrew y ogagent al macos:
scp Homebrew-4.2.20.pkg OGAgentInstaller-1.3.2.pkg og-ventura:Downloads/
.En macos:
paso 4: instalar y configurar el agente
Instalar agente, configurar IP, arreglar un permiso (desgraciadamente, el fix en el repo está en otra rama y no en esta):
paso 5: emular ogserver
Igual que para windows y linux, en el portátil:
paso 6: levantar agente
La forma más fácil, y además así también sirve como prueba, es simplemente reiniciar macos.
Todavía no iniciar sesión. Esperar a que en el log del "ogserver" aparezca una petición a
opengnsys/rest/ogagent/started
.Iniciar sesión. En el log del "ogserver" debería aparecer una petición a
opengnsys/rest/ogagent/loggedin
. El icono de OG debería estar visible cerca del reloj.paso 7: consultar status
En el portátil:
paso 8: limpieza
rm -rf OSX-KVM
rm ~/bin/xar ~/bin/mkbom
WIP: fix agent for macosto fix agent for macosEn mi portátil
Respecto a la pregunta:
$./configure ## hace falta? lo hace el autogen?
Respuesta: No hace falta, sí, ya lo hace el autogen
Eso sí, he tenido que instalar algunas dependencias:
make, gcc, python, g++, autoconf, libxmi2-dev, libssl-deb, libcrypto++-dev, zliblg-dev
El paquete se construye, aparentemente bien, OGAgentInstaller-1.3.2.pkg
Posteriormente en el portátil, para ejecutar la línea de perl que lanza un "API de prueba ogServer para test"
He tenido que instalar varias dependencias de cpan:
Dado que el perl se ejecuta con la IP del portátil y el puerto 443:
sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://10.80.23.229:443")'
La consulta en el portátil, ¿debe ser con la IP donde se está ejecutando el Perl? Así al menos veo movimiento:
curl --insecure https://10.80.23.229:443/opengnsys/status
En MacOS (Ventura)
Al instalar "brew" he tenido que ejecutar esto para continuar con los pasos siguientes:
brew link --overwrite python@3.12
¿Falta el paso que indique cómo cambiar la configuración del ogAgent para que sepa cuál es el server?
El paquete se instala, aparentemente OK, no da errores.
No obstante, aunque el agente se está ejecutando, NO se ve actividad en el perl de "prueba", y tampoco el Icono al lado del reloj.
No sé si me falta algo, o me he saltado algún paso...
Adjunto el pkg que he generado siguiendo los pasos.
La consulta a /status (
curl --insecure https://10.80.23.229:443/opengnsys/status
) debe ser a la IP del mac.En mi setup tengo un
qemu -netdev user,id=net0,[...],hostfwd=tcp::60080-:8000
(se ve en el diff del paso 2). Esto significa que el qemu escucha en localhost:60080 y las conexiones entrantes las reenvía al macos:8000. Entonces yo el curl lo tiro contra localhost:60080 y así llego al agente. En lo que hayas montado tú puede ser similar o puede no serlo 😇La IP que se pone en el
perl -Mojo
es la de tu portátil, y es la misma que hay que poner en el ogagent.cfg. Y sí, olvidé indicar ese paso porque en mi repo de git ya tenía el cambio hecho y se me pasó del todo.Verifica que tienes conectividad en ambos sentidos (de afuera al macos:8000 y del macos a fuera:443).
El icono... pues... voy a meter tu .pkg en mi macos a ver qué pasa.
For reference:
También falta este paso:
Lo vimos en la demo, pero no está mencionado en el OP.
también faltaba un
src/update.py
🤦Resumen
src/update.py
, que hay que ejecutar antes del build-pkg.Si sigue sin salir el icono de OG, la forma de depurar es:
Así fue como supe que faltaba la parte del update.py.
Dale otra vuelta y me cuentas, sí? Perdona por los errores, esta PR no va tan fina como otras!
He realizado el proceso nuevamente de creación del agente con
A continuación, una vez ejecutado, escucha en el puerto 8000 y obtengo la siguiente salida:
Cuando hago login, ya cambia la respuesta
Se observa el icono en la barra superior.
Se observa un icono de python en la barra inferior
No obstante, en el server de prueba con perl Mojo, no recibo nada, a pesar de haber modificado el cfg del OGAgent
Donde está escuchando el perl
Es probable que funcione correctamente, pero me faltaría confirmarlo con un ogserver.
Un saludo,
Adjunto algunas capturas,
el icono de Python en el "dock" hace que se pueda cerrar el agente con facilidad. No debería estar ahí.
Si haces un curl desde el macos hacia el perl-mojo, ¿consigues algo?
Lo del cohete quedaría para otro ticket. Habría que ver si es viable que una aplicación de QT lanzada por el usuario (no por el sistema) no tuviera iconito ahí abajo.
Adjunto el log de /var/log
/Users/angel/Downloads/opengnsys.log
WARNING 2024-07-16 19:52:22,879 Command "ip" failed with exit code 1
no hay comando
ip
. El postinst debería haberlo puesto en /usr/local/bin:Mira en el /var/log/install.log a la hora a la que instalaste el paquete, a ver si salen errores de postinst.
En mis notas tengo esto por si decides reinstalar el paquete:
Adjunto log install.log
La versión instalada de "ip" parece la correcta, aunque no se ejecuta bien
Aquí la ejecución:
"That must be why we're not shipping windows 98 yet" https://www.youtube.com/watch?v=yeUyxjLhAxU
Parece que iproute2mac se atraganta con tus interfaces de red y por eso todavía no la han publicado. Lo que hace es llamar a
ifconfig
y parsear la salida. Parece que tienes algún interface que tiene "inet6" pero no tiene "inet6 ... prefixlen ...".Si haces
ifconfig |grep inet6
¿qué te sale? A mí (en linux) esto:arantunas-iMac-Pro:~ arantuna$ ifconfig |grep inet6
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet6 fe80::181a:dc04:6edc:e753%en0 prefixlen 64 secured scopeid 0x4
inet6 fdac:9735:bca:bd45:4af:66fa:e91b:ff7f prefixlen 64 autoconf secured
inet6 fe80::85ac:c9aa:d15:2912%utun0 prefixlen 64 scopeid 0x5
inet6 fe80::73fe:9044:c4c1:6985%utun1 prefixlen 64 scopeid 0x6
inet6 fe80::ce81:b1c:bd2c:69e%utun2 prefixlen 64 scopeid 0x7
La regex cuenta con que la IPv6 tenga al menos una ocurrencia de "::". Tienes una IPv6 perfectamente válida que no incluye "::" (
fdac:9735:bca:bd45:4af:66fa:e91b:ff7f
), por lo que, tal como sospechaba, es un bug en iproute2mac.Acabo de subir un commit cambiando una regex. Haz pull, vuelve a crear un paquete nuevo y a ver qué tal ahora.
La versión de la gente, indica que e sla 1.3.0 aunque el paquete sea la 1.3.3
sudo --stdin installer -pkg OGAgentInstaller-1.3.3.pkg -target /Applications
Arroja los valores de la interfaz loopback
Web application available at http://10.80.23.229:39539 20240721 152044+0000 10.80.23.228 opengnsys/rest/ogagent/started {"mac": "00:00:00:00:00:00", "ip": "127.0.0.1", "secret": "nqdfciqvqxdf2umcf6w6rgp7zogwnok3", "ostype": "MacOS", "osversion": "macOS 13.6.7", "agent_version": "1.3.0"} 20240721 154827+0000 10.80.23.228 opengnsys/rest/ogagent/loggedin {"ip": "127.0.0.1", "user": "arantuna", "language": "C", "session": "unknown", "ostype": "MacOS", "osversion": "macOS 13.6.7"}
También en el 443
`sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"),
_->tx->remote_address,
->param("foo"),_->req->body;
->render (text => "{}") })->start ("daemon", "-l", "https://10.80.23.229:443")'Web application available at https://10.80.23.229:443
20240721 155354+0000 10.80.23.228 opengnsys/rest/ogagent/started {"mac": "00:00:00:00:00:00", "ip": "127.0.0.1", "secret": "ci0w8gyq8u872age4sbpvvk6gf7tjtez", "ostype": "MacOS", "osversion": "macOS 13.6.7", "agent_version": "1.3.0"}
20240721 155551+0000 10.80.23.228 opengnsys/rest/ogagent/loggedin {"ip": "127.0.0.1", "user": "arantuna", "language": "C", "session": "unknown", "ostype": "MacOS", "osversion": "macOS 13.6.7"}
`
Del tema de las versiones ocupémonos en otro ticket, como ya comentamos.
Y sobre los interfaces, tenía algo aquí tecleado pero decidí moverlo a su propio ticket: https://ognproject.evlt.uma.es/redmine/issues/520 "seleccionar el interface de red correcto". Si te parece bien lo dejamos para ese y mergeamos esto.
Hola,
ok por mi parte, lo vemos en otro ticket.
Ok a mergear esto, lo veo bien.
Gracias.