[#1700] Remove sandbox (#2105)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-11-27 08:14:52 +02:00
committed by GitHub
parent d435c0a424
commit ebcb6a0b29
14 changed files with 14 additions and 283 deletions

View File

@@ -30,7 +30,7 @@ jobs:
- name: Create hawkBit container images
run: |
mvn clean install -DskipTests && \
cd hawkbit-runtime/docker/docker_build && \
cd docker/docker_build && \
chmod +x build_all_dev.sh && \
./build_all_dev.sh && \
cd ../../..

View File

@@ -107,7 +107,7 @@ There are clients outside of the Eclipse IoT eco system as well, e.g.:
# Getting Started
We are providing a [Spring Boot](https://projects.spring.io/spring-boot/) based
reference [Update Server](hawkbit-runtime/hawkbit-update-server) including embedded H2 DB for test and evaluation
reference [Update Server](hawkbit-monolith/hawkbit-update-server) including embedded H2 DB for test and evaluation
purposes.
Run with docker:
@@ -128,19 +128,19 @@ at [guide](https://www.eclipse.org/hawkbit/guides/runhawkbit/) -> _Configure Rab
# hawkBit (Spring boot) starters
Next to the [Update Server](hawkbit-runtime/hawkbit-update-server) we are also providing a set
Next to the [Update Server](hawkbit-monolith/hawkbit-update-server) we are also providing a set
of [Spring Boot Starters](hawkbit-starters) to quick start your
own [Spring Boot](https://projects.spring.io/spring-boot/) based application.
# Clone, build and run hawkBit
## Build and start hawkBit [Update Server](hawkbit-runtime/hawkbit-update-server)
## Build and start hawkBit [Update Server](hawkbit-monolith/hawkbit-update-server)
```bash
git clone https://github.com/eclipse-hawkbit/hawkbit.git
cd hawkbit
mvn clean install
java -jar ./hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-#version#.jar
java -jar ./hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-0-SNAPSHOT.jar
```
## Start hawkBit [Device Simulator](https://github.com/eclipse-hawkbit/hawkbit-examples/tree/master/hawkbit-device-simulator) (optional)

View File

@@ -8,7 +8,7 @@ with at least hawkbit-mgmt-server.
### Run
```bash
java -jar hawkbit-runtime/hawkbit-ddi-server/target/hawkbit-ddi-server-*-SNAPSHOT.jar
java -jar hawkbit-ddi/hawkbit-ddi-server/target/hawkbit-ddi-server-0-SNAPSHOT.jar
```
_(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_

View File

@@ -6,7 +6,7 @@ with at least hawkbit-mgmt-server.
### Run
```bash
java -jar hawkbit-runtime/hawkbit-dmf-server/target/hawkbit-dmf-server-*-SNAPSHOT.jar
java -jar hawkbit-dmf/hawkbit-dmf-server/target/hawkbit-dmf-server-0-SNAPSHOT.jar
```
_(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_

View File

@@ -8,7 +8,7 @@ started with at least one (or both) of the device interface servers - hawkbit-dd
### Run
```bash
java -jar hawkbit-runtime/hawkbit-mgmt-server/target/hawkbit-mgmt-server-*-SNAPSHOT.jar
java -jar hawkbit-mgmt/hawkbit-mgmt-server/target/hawkbit-mgmt-server-0-SNAPSHOT.jar
```
_(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_

View File

@@ -7,7 +7,7 @@ The hawkBit Update Server (Monolith) is a standalone spring-boot application wit
### Run
```bash
java -jar hawkbit-runtime/hawkbit-update-server/target/hawkbit-update-server-*-SNAPSHOT.jar
java -jar hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-*-SNAPSHOT.jar
```
_(Note: you have to add the JDBC driver also to your class path if you intend to use another database than H2.)_

View File

@@ -1,55 +0,0 @@
hawkBit Sandbox
===
## Try out the update server in our hawkBit sandbox
- try out Management API https://hawkbit.eclipseprojects.io/rest/v1/targets (don't forget basic auth header; username:
demo, passwd: demo)
- try out DDI API https://hawkbit.eclipseprojects.io/DEFAULT/controller/v1/MYTESTDEVICE
## Sandbox Setup
**1. File Structure**
Copy the files to the respective location on the VM.
```
/
+.sandbox
|
+-stacks
| +-sandbox
| | +-docker-compose-stack.yml
| +-proxy
| +-docker-compose-stack.yml
+- scripts
+-intialize-cronjobs.sh
+-sandbox-cleanup.sh
```
**2. Initialize Cronjobs**
Reset the Sandbox once a week with a cron-job and log its output.
```
$ sudo /.sandbox/scripts/initialize-cronjobs.sh
```
**3. Nginx Reverse Proxy**
Start the stack for the Nginx reverse proxy with Let's Encrypt support. Thanks to JrCs for providing the Docker
container
and instructions with
his [Docker-Letsencrypt-Nginx-Companion](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion).
```
$ docker stack deploy -c /.sandbox/stacks/sandbox/docker-compose-stack.yml proxy
```
**4. hawkBit**
Start the hawkBit stack.
```
$ docker stack deploy -c /.sandbox/stacks/sandbox/docker-compose-stack.yml hawkbit
```

View File

@@ -1,29 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
SCRIPT_DIR="/.sandbox/scripts"
LOGFILE_DIR="/.sandbox/logs"
# m h dom mon dow user command
SANDBOX_CLEANUP_JOB="0 0 * * 7 root ${SCRIPT_DIR}/sandbox-cleanup.sh >> ${LOGFILE_DIR}/\$(date +\%F)-hawkbit 2>&1"
LOGFILE_CLEANUP_JOB="0 0 1 * * root find ${LOGFILE_DIR}* -mtime +182 -exec rm {} \; >/dev/null 2>&1"
CRONTAB_FILE="/etc/crontab"
# Create directory for log files
mkdir -p ${LOGFILE_DIR}
echo "# Reset hawkBit stack once a week to delete all data" >> "${CRONTAB_FILE}"
echo "${SANDBOX_CLEANUP_JOB}" >> "${CRONTAB_FILE}"
echo "# Remove log files documenting reset, that are older than 6 months" >> "${CRONTAB_FILE}"
echo "${LOGFILE_CLEANUP_JOB}" >> "${CRONTAB_FILE}"

View File

@@ -1,52 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
STACK_NAME=hawkbit
echo "/------------------------------------------------------------------------------"
echo "| Data Clean Up START: $(date -u) "
echo "+------------------------------------------------------------------------------"
echo "|"
echo "+-- Remove Docker Stack:"
docker stack rm $STACK_NAME
sleep 15
echo "|"
echo "+-- Remove Docker Container:"
docker container prune --force
sleep 5
echo "|"
echo "+-- Remove Docker Volumes:"
docker volume prune --force
echo "|"
echo "+-- Verify Docker Container:"
docker container ls --all
echo "|"
echo "+-- Verify Docker Volumes:"
docker volume ls
echo "|"
echo "+-- Restart Docker Stack:"
docker stack deploy -c /.sandbox/stacks/sandbox/docker-compose-stack.yml $STACK_NAME
echo "|"
# Value is based on trial and error
echo "+-- Wait for hawkBit to start (160s):"
sleep 160
echo "|"
# Device Simulator has to be restarted, since hawkBit takes too long to start
echo "+-- Restart Device Simulator:"
docker service update --force hawkbit_simulator
echo "|"
# Images used by a container are not deleted. Therefore, we run this after the stacks
# are started. Only unused images will be deleted.
echo "+-- Clean up Docker:"
docker system prune --force
echo "+------------------------------------------------------------------------------"
echo "| END: $(date -u) "
echo "\------------------------------------------------------------------------------"
echo ""

View File

@@ -1,61 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3.7'
volumes:
vhost:
challange:
certificates:
networks:
proxy:
driver: overlay
services:
# ---------------------
# nginx reverse proxy
# ---------------------
nginx:
image: "jwilder/nginx-proxy"
ports:
- 80:80
- 443:443
networks:
- proxy
volumes:
- certificates:/etc/nginx/certs:ro
- vhost:/etc/nginx/vhost.d
- challange:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
deploy:
replicas: 1
restart_policy:
condition: on-failure
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
# ---------------------
# lets encrypt nginx-proxy companion
# ---------------------
letsencrypt:
image: "jrcs/letsencrypt-nginx-proxy-companion"
networks:
- proxy
volumes:
- certificates:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
- vhost:/etc/nginx/vhost.d
- challange:/usr/share/nginx/html
deploy:
replicas: 1
restart_policy:
condition: on-failure

View File

@@ -1,72 +0,0 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others
#
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
version: '3.7'
volumes:
vhost:
challange:
networks:
proxy_proxy:
external: true
sandbox:
driver: overlay
services:
# ---------------------
# hawkBit service
# ---------------------
hawkbit:
image: "hawkbit/hawkbit-update-server:latest"
networks:
- proxy_proxy
- sandbox
deploy:
restart_policy:
condition: on-failure
environment:
- 'SPRING_PROFILES_ACTIVE=cloudsandbox'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
- 'VIRTUAL_HOST=hawkbit.eclipseprojects.io'
- 'LETSENCRYPT_HOST=hawkbit.eclipseprojects.io'
# ---------------------
# hawkBit simulator
# ---------------------
simulator:
image: "hawkbit/hawkbit-device-simulator:latest"
networks:
- sandbox
deploy:
restart_policy:
condition: on-failure
environment:
- 'SPRING_RABBITMQ_VIRTUALHOST=/'
- 'SPRING_RABBITMQ_HOST=rabbitmq'
- 'SPRING_RABBITMQ_PORT=5672'
- 'SPRING_RABBITMQ_USERNAME=guest'
- 'SPRING_RABBITMQ_PASSWORD=guest'
# ---------------------
# RabbitMQ service
# ---------------------
rabbitmq:
image: "rabbitmq:3-management"
networks:
- sandbox
deploy:
restart_policy:
condition: on-failure
environment:
RABBITMQ_DEFAULT_VHOST: "/"

View File

@@ -93,7 +93,7 @@ $ cd hawkbit
$ mvn clean install -DskipTests
```
### 2: Start hawkBit [update server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-runtime/hawkbit-update-server) (Monolith)
### 2: Start hawkBit [update server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-monolith/hawkbit-update-server) (Monolith)
```sh
$ java -jar ./hawkbit-monolith/hawkbit-update-server/target/hawkbit-update-server-0-SNAPSHOT.jar

View File

@@ -6,7 +6,7 @@ weight: 33
hawkBit is able to run in a cluster with some constraints. This guide provides insights in the basic concepts and how to
setup your own cluster. You can find additional information in
the [hawkBit runtimes's README](https://github.com/eclipse-hawkbit/hawkbit/blob/master/hawkbit-runtime/hawkbit-update-server/README.md).
the [hawkBit runtimes's README](https://github.com/eclipse-hawkbit/hawkbit/blob/master/hawkbit-monolith/hawkbit-update-server/README.md).
<!--more-->
## Big picture

View File

@@ -18,7 +18,7 @@ and no artifact storage.
This guide describes a target architecture that is more like one that you will expect in a production system.
- hawkBit [Update Server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-runtime/hawkbit-update-server).
- hawkBit [Update Server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-monolith/hawkbit-update-server).
- [MariaDB](https://mariadb.org) for the repository.
- [RabbitMQ](https://www.rabbitmq.com) for DMF communication.
- For testing and demonstration purposes we will also use:
@@ -35,7 +35,7 @@ This guide describes a target architecture that is more like one that you will e
As mentioned you can create your own application with hawkBit inside or adapt the existing example app. The second
option will be shown here.
### Set MariaDB dependency to compile in the [update server POM](https://github.com/eclipse-hawkbit/hawkbit/blob/master/hawkbit-runtime/hawkbit-update-server/pom.xml)
### Set MariaDB dependency to compile in the [update server POM](https://github.com/eclipse-hawkbit/hawkbit/blob/master/hawkbit-monolith/hawkbit-update-server/pom.xml)
```xml
<dependency>
@@ -96,7 +96,7 @@ hawkbit-example-mgmt-simulator-##VERSION##.jar --hawkbit.url=YOUR_HOST:PORT
### Compile & Run your _"production ready"_ app
see [update server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-runtime/hawkbit-update-server)
see [update server](https://github.com/eclipse-hawkbit/hawkbit/tree/master/hawkbit-monolith/hawkbit-update-server)
### Compile & Run example scenario [creation script](https://github.com/eclipse-hawkbit/hawkbit-examples/tree/master/hawkbit-example-mgmt-simulator) (optional)