FREE - Framework for Remote Experiments in Education

From wwwelab
Revision as of 23:28, 11 August 2021 by Ist187344 (talk | contribs)
Jump to navigation Jump to search
  1. TODO Ainda estou a escrever(Rossa)

Pre-requisites

Build environment

  • Git (2.30.2+)
  • Python (3.7.0+)

Install

Raspberry PI Server (RPI_Server)

Setup python3 environment variable pointing to run the version installed (in this exemple is for python3.7) by:

   $ sudo nano ~/.bashrc

edit it adding to the end:

   $ alias python3="python3.7"

First checkout the project from github:

   $ git clone https://github.com/linkareti/rec-project.git

(FIXME) Then we need to switch to jdk11-migration branch:

   $ git checkout jdk11-migration

To create a pendulum experiment, the script create_pendulum_experiment.sh helps to create a base experiment for a brand new pendulum

Build

Configure the following properties based on your environment:

build_pendulum.properties:

  • pendulum.experiment.list: Name of the experiment(s) to build, comma (,) delimited.
  • pendulum.multicast.controller.host: Hostname where Multicast controller is going to be installed (default: elab-multicast)
  • pendulum.multicast.controller.port: Listen CORBA port used to recieve connections from Hardware Server, rec.web and rec.client (default: 9001)
  • pendulum.rec.multicastcontroller.jmxremote.port: Listen JMX port used to recieve connections from rec.web (default: 25001)
  • install.dir: Base directory where Multicast Controller is going to be installed (default: /home/elab)
  • deployment.subdir: Sub directory where Multicast Controller is going to be installed (default: /rec-deployment)

deployment/compose/src/main/docker/docker-compose-pendulum.yml:

experiments/{experiment}/etc/build.properties

  • experiment.driver.device: Serial port device (e.g. /dev/ttyS0)

Package everything:

   $ mvn clean package -Dmaven.test.skip=true -Djarsigner.alias="REC" -Dbuild.environment=pendulum -Dpack.docker.images -Dpublic.repo=docker.io

Copy resulting packages to destination servers:

  • Multicast Server
   $ scp deployment/images/target/reverse-proxy.tar multicast-server-name:/tmp/
   $ scp deployment/images/target/multicast.tar multicast-server-name:/tmp/
   $ scp deployment/images/target/webswing-admin.tar multicast-server-name:/tmp/
   $ scp deployment/images/target/webswing.tar multicast-server-name:/tmp/
   $ scp deployment/compose/target/docker-compose-runner.yml multicast-server-name:/tmp/docker-compose.yml
  • Hardware Server
   $ scp dist/java/*HardwareServer*.zip hardware-server-name:/tmp/

Install

ReC Client and Multicast Controller

  • Create user elab
   $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
  • Add user to docker group
   $ sudo usermod -a -G docker elab
  • Load Docker images (only if building outside target deployment server)
   $ sudo -u elab docker load --input /tmp/webswing.tar # ReC client image
   $ sudo -u elab docker load --input /tmp/multicast.tar # Multicast Controller image
   $ sudo -u elab docker load --input /tmp/webswing-admin.tar # ReC client admin console image
   $ sudo -u elab docker load --input /tmp/reverse-proxy.tar # Reverse Proxy image
  • Copy docker-compose.yml file to elab user home
   $ sudo -u elab cp /tmp/docker-compose.yml /home/elab/
  • Start all services
   $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d

Hardware Server

  • Replace wpexperiment with your experiment name
   $ export experiment=wpexperiment
  • Create user elab
   $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
  • Create experiment directory
   $ sudo -u elab mkdir /home/elab/rec-deployment/${experiment}
  • Unpack experiment package to experiment directory
   $ sudo -u elab unzip /tmp/${experiment}HardwareServer*.zip -d  /home/elab/rec-deployment/${experiment}
  • Start experiment
   $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start

Test

  • Direct access to experiment:

Access configured URL at WEBSWING_PUBLIC_URL property (e.g. https://elab.my.url.com) + experiment name (e.g. wpalentejo)

https://elab.my.url.com/wpalentejo

  • Webswing and administration console

Access configured URL at WEBSWING_PUBLIC_URL property (e.g. https://elab.my.url.com)

https://elab.my.url.com/

User: admin Pass: pwd

Operations

Hardware Server

  • Startup
   $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start
  • Shutdown
   $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh stop
  • Logs
   $ /home/elab/rec-deployment/${experiment}/*.log

ReC Client and Multicast Controller

  • Startup
   $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d
  • Shutdown
   $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml down
  • Logs:
   $ docker logs rec.client # ReC client logs (webswing)
   $ docker logs rec.multicast # ReC Multicast Controller logs
   $ docker logs rec.proxy # ReC Proxy logs
   $ docker logs rec.client-admin # ReC client Administration Console logs (webswing)

Steps to connect to IST environment:

  1. TODO Steps