From 814deb494598e26bc410e60e2a55a0b04f85c2bf Mon Sep 17 00:00:00 2001 From: Ronan Le Martret Date: Thu, 4 Jan 2018 17:49:21 +0100 Subject: Update Documentation for Virtual machine Signed-off-by: Ronan Le Martret --- docs/SUMMARY.md | 1 - docs/part-1/1_install-client.md | 6 ++-- docs/part-1/2_install-xds-server.md | 70 +++++++++++++++++++++++++++++++++++-- docs/part-1/3_install-sdks.md | 2 ++ docs/part-2/1_xds-server.md | 32 ++++++++--------- 5 files changed, 89 insertions(+), 22 deletions(-) diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index cfebece..1d8e43b 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -15,4 +15,3 @@ * [xds-cli](part-2/3_xds-cli.md) * [xds-gdb](part-2/4_xds-gdb.md) * [xds-exec](part-2/5_xds-exec.md) - \ No newline at end of file diff --git a/docs/part-1/1_install-client.md b/docs/part-1/1_install-client.md index a1c2a4e..7d0299f 100644 --- a/docs/part-1/1_install-client.md +++ b/docs/part-1/1_install-client.md @@ -4,7 +4,6 @@ on your machine (user / developer host) to be able to use XDS. You should establish the following chain: - Client (eg. `xds-cli` or XDS Dashboard) and `xds-agent` is running on your machine and `xds-server` is running on a remote server and/or in a container. Exchanges between these 3 tools are done though HTTP and Websocket protocols @@ -62,8 +61,9 @@ seb@laptop ~$ sudo zypper install agl-xds-gdb 1. Then unzip the tarball any where into your local disk (for example: `/opt/AGL/xds` or `C:\AGL\xds`). 1. Add binary to PATH: - - MacOs: create the .bash_profile `nano .bash_profile` and add `export PATH="/opt/AGL/xds/xds-agent:$PATH` - - Windows: change the system path via control panel or system settings or + + - MacOs: create the .bash_profile `nano .bash_profile` and add `export PATH="/opt/AGL/xds/xds-agent:$PATH` + - Windows: change the system path via control panel or system settings or `setx path "C:\AGK\xds\xds-agent;%path%"` - repeat the previous steps to install other tools depending of your needs: diff --git a/docs/part-1/2_install-xds-server.md b/docs/part-1/2_install-xds-server.md index 5460da8..c992f35 100644 --- a/docs/part-1/2_install-xds-server.md +++ b/docs/part-1/2_install-xds-server.md @@ -103,9 +103,75 @@ Please refer to [part 2 - xds-server](../part-2/1_xds-server.md) documentation for additional info. -## Installation based on VirtualBox appliance +## Installation based on Virtual Machine appliance -_coming soon ..._ +### Prerequisites + +> VirtualBox is installed on the host machine + +please refer to [VirtualBox documentation](https://www.virtualbox.org/wiki/Downloads) for more details. + +### Get the appliance + +Load the pre-build AGL SDK appliance image including `xds-server`: + +```bash +wget http://iot.bzh/download/public/XDS/appliance/xds-vm-debian9_latest.ova +``` + +### Clean old appliance + +You must have one and one xds appliance only. + +So, at first remove the oldest xds appliance. + +```bash +#Get the virtual machine name +VDS_VMNAME=$(VBoxManage list vms | grep xds-vm-debian | cut -d "\"" -f2) +echo ${VDS_VMNAME} + +#Remove old XDS appliance +[ -n ${VDS_VMNAME} ] && VBoxManage unregistervm ${VDS_VMNAME} --delete +``` + +### Create and start a new appliance + +Use provided script to create a new appliance or you can use the UI of VirtualBox: + +```bash +# Import image into VirtualBox +VBoxManage import ./xds-vm-debian9_latest.ova + +# Check import result +VDS_VMNAME=$(VBoxManage list vms | grep xds-vm-debian | cut -d "\"" -f2) +echo ${VDS_VMNAME} + +# Start XDS appliance +[ -n ${VDS_VMNAME} ] && VBoxManage startvm ${VDS_VMNAME} +``` + +### Appliance settings + +This container (ID=0) exposes following ports: + +- 8000 : `xds-server` to serve XDS basic web page +- 69 : TFTP +- 2222 : ssh + +## Check if xds-server is running + +`xds-server` is automatically started as a service on container startup. + +To check if xds-server is correctly install and running, you can access the basic web page that gives you some instructions: + +```bash +# if container/appliance is running on your local host +# (else replace localhost by the name or the ip of the machine running the container) +seb@laptop ~$ xdg-open http://localhost:8000 +``` + +`xds-server` is now up and running, you can now install AGL SDKs, please refer +to next chapter named [Installing AGL SDKs](3_install-sdks.md#installing-agl-sdks) ## Native installation diff --git a/docs/part-1/3_install-sdks.md b/docs/part-1/3_install-sdks.md index 3ea342e..e1cdd07 100644 --- a/docs/part-1/3_install-sdks.md +++ b/docs/part-1/3_install-sdks.md @@ -39,8 +39,10 @@ devel@docker ~$ sudo /opt/AGL/xds/server/xds-utils/install-agl-sdks.sh --arch co **Warning:** due to some limitation, you need for now to restart `xds-server` in order to make new installed SDK visible/available. + ```bash seb@laptop ~$ ssh -p 2222 devel@localhost devel@docker ~$ systemctl --user restart xds-server.service ``` + diff --git a/docs/part-2/1_xds-server.md b/docs/part-2/1_xds-server.md index c3eb324..6ecbdc9 100644 --- a/docs/part-2/1_xds-server.md +++ b/docs/part-2/1_xds-server.md @@ -44,7 +44,7 @@ been integrated into AGL SDK docker container. Load the pre-build AGL SDK docker image including `xds-server`: ```bash -seb@laptop ~$ wget -O - http://iot.bzh/download/public/2017/XDS/docker/docker_agl_worker-xds-latest.tar.xz | docker load +wget -O - http://iot.bzh/download/public/2017/XDS/docker/docker_agl_worker-xds-latest.tar.xz | docker load ``` ### List container @@ -53,7 +53,7 @@ You should get `docker.automotivelinux.org/agl/worker-xds:X.Y` image ```bash # List image that we just built -seb@laptop ~$ docker images | grep worker-xds +docker images | grep worker-xds docker.automotivelinux.org/agl/worker-xds 3.99.1 786d65b2792c 6 days ago 602MB ``` @@ -64,13 +64,13 @@ Use provided script to create a new docker image and start a new container: ```bash # Get script -seb@laptop ~$ wget https://raw.githubusercontent.com/iotbzh/xds-server/master/scripts/xds-docker-create-container.sh +wget https://raw.githubusercontent.com/iotbzh/xds-server/master/scripts/xds-docker-create-container.sh # Create new XDS worker container -seb@laptop ~$ bash ./xds-docker-create-container.sh +bash ./xds-docker-create-container.sh # Check that new container is running -seb@laptop ~$ docker ps | grep worker-xds +docker ps | grep worker-xds b985d81af40c docker.automotivelinux.org/agl/worker-xds:3.99.1 "/usr/bin/wait_for..." 6 days ago Up 4 hours 0.0.0.0:8000->8000/tcp, 0.0.0.0:69->69/udp, 0.0.0.0:10809->10809/tcp, 0.0.0.0:2222->22/tcp agl-xds-seb@laptop-0-seb ``` @@ -80,7 +80,7 @@ to use for example with Path-Mapping folder type. ```bash # Create new XDS worker container and share extra '$HOME/my-workspace' directory -seb@laptop ~$ bash ./xds-docker-create-container.sh --volume /my-workspace:$HOME/my-workspace +bash ./xds-docker-create-container.sh --volume /my-workspace:$HOME/my-workspace ``` This container (ID=0) exposes following ports: @@ -103,23 +103,23 @@ to replace id `1664` with your user/group id: ```bash # Set docker container name to use (usually agl-xds-xxx where xxx is USERNAME@MACHINENAME-IDX-NAME) -seb@laptop ~$ export CONTAINER_NAME=agl-xds-seb@laptop-0-seb +export CONTAINER_NAME=agl-xds-seb@laptop-0-seb # First kill all processes of devel user (including running xds-server) -seb@laptop ~$ docker exec ${CONTAINER_NAME} bash -c "/bin/loginctl kill-user devel" +docker exec ${CONTAINER_NAME} bash -c "/bin/loginctl kill-user devel" # Change user and group id inside docker to match your ids -seb@laptop ~$ docker exec ${CONTAINER_NAME} bash -c "usermod -u $(id -u) devel" -seb@laptop ~$ docker exec ${CONTAINER_NAME} bash -c "groupmod -g $(id -g) devel" +docker exec ${CONTAINER_NAME} bash -c "usermod -u $(id -u) devel" +docker exec ${CONTAINER_NAME} bash -c "groupmod -g $(id -g) devel" # Update some files ownership -seb@laptop ~$ docker exec ${CONTAINER_NAME} bash -c "chown -R devel:devel /home/devel /tmp/xds*" +docker exec ${CONTAINER_NAME} bash -c "chown -R devel:devel /home/devel /tmp/xds*" # Restart devel autologin service -seb@laptop ~$ docker exec ${CONTAINER_NAME} bash -c "systemctl start autologin" +docker exec ${CONTAINER_NAME} bash -c "systemctl start autologin" # Restart xds-server as a service (ssh port 2222 may depend on your container ID) -seb@laptop ~$ ssh -p 2222 devel@localhost -- "systemctl --user start xds-server" +ssh -p 2222 devel@localhost -- "systemctl --user start xds-server" ``` ## Check if xds-server is running (open XDS webapp) @@ -130,14 +130,14 @@ If the container is running on your localhost, you can access to a basic web application: ```bash -seb@laptop ~$ xdg-open http://localhost:8000 +xdg-open http://localhost:8000 ``` If needed you can status / stop / start it manually using following commands: ```bash # Log into docker container -seb@laptop ~$ ssh -p 2222 devel@localhost +ssh -p 2222 devel@localhost # Status XDS server: devel@docker ~$ systemctl --user status xds-server.service @@ -168,7 +168,7 @@ For example to control log level, just set LOG_LEVEL env variable knowing that supported *level* are: panic, fatal, error, warn, info, debug. ```bash -seb@laptop ~$ ssh -p 2222 devel@localhost +ssh -p 2222 devel@localhost devel@docker ~$ echo 'LOG_LEVEL=debug' | sudo tee --append /etc/default/xds-server > /dev/null devel@docker ~$ systemctl --user restart xds-server.service devel@docker ~$ tail -f /tmp/xds-server/logs/xds-server.log -- cgit 1.2.3-korg