120 lines
2.3 KiB
Markdown
120 lines
2.3 KiB
Markdown
|
||
# Software Defined Laboratory (SDL)
|
||
|
||
> NOTE: This is a work in progress. SDL has only been tested on Debian based
|
||
> Linux systems. But has been designed to be cross platform. So running on
|
||
> other platforms should not be a heavy lift.
|
||
|
||
Other than basic OS tools, SDL downloads all dependencies idempotently and installs
|
||
everything into a single SDL home directory (~/.sdl).
|
||
|
||
---
|
||
|
||
## SDL Manager (sdl-mgr)
|
||
|
||
#### Installation
|
||
|
||
```
|
||
git clone <SDL_REPO_URL>
|
||
```
|
||
|
||
```
|
||
cd sdl
|
||
```
|
||
|
||
```
|
||
./install-sdl.sh
|
||
```
|
||
|
||
#### Upgrading
|
||
|
||
```
|
||
cd sdl
|
||
```
|
||
|
||
```
|
||
git pull origin main
|
||
```
|
||
|
||
```
|
||
./install-sdl.sh
|
||
```
|
||
|
||
---
|
||
|
||
## SDL Worker (sdl-wkr)
|
||
|
||
#### Prerequisites
|
||
|
||
(Debian, Ubuntu, Linux Mint, Zorin OS, Raspbian)
|
||
|
||
```
|
||
sudo apt -y install gawk coreutils curl jq grep sed sha256sum tar unzip netcat-openbsd
|
||
```
|
||
|
||
#### Installation
|
||
|
||
(Linux, OSX, Windows(WSL2))
|
||
|
||
Listen to UDP Broadcast on port 10101
|
||
- To get the **sld-wkr** curl or wget install command
|
||
|
||
```
|
||
nc -u -l -k 10101
|
||
```
|
||
|
||
OR
|
||
|
||
```
|
||
nc -u -l -k 10101 |jq
|
||
{
|
||
"ts": "2026-01-31T05:20:31.815Z",
|
||
"sdl_id": "906a027c-52f0-4cbb-b3e0-5eb84856d50a",
|
||
"role": "sdl-mgr",
|
||
"host": "haverlab-sld-mgr",
|
||
"type": "udp-beacon",
|
||
"msg": {
|
||
"info": {
|
||
"desc": "Software Defined Laboratory: Manager (sdl-mgr)",
|
||
"version": "0.2.10",
|
||
"copyright": "2026 John Haverlack"
|
||
},
|
||
"cluster": {
|
||
"id": "haverlab",
|
||
"name": "Haverlab",
|
||
"desc": "John Haverlack's Home Lab"
|
||
},
|
||
"mqtt": {
|
||
"host": "10.0.0.178",
|
||
"port": 1883
|
||
},
|
||
"web": {
|
||
"proto": "http",
|
||
"host": "10.0.0.178",
|
||
"port": 8081,
|
||
"api_config": "/api/config",
|
||
"config_url": "http://10.0.0.178:8081/api/config"
|
||
},
|
||
"sdl_wkr_install_cmd": {
|
||
"curl": "curl -s http://10.0.0.178:8081/dist/install-sdl-wkr.sh | bash -s 10.0.0.178",
|
||
"wget": "wget -O - http://10.0.0.178:8081/dist/install-sdl-wkr.sh | bash -s 10.0.0.178"
|
||
}
|
||
}
|
||
}
|
||
|
||
```
|
||
|
||
```
|
||
curl -s http://<SDL_MGR_IP>:<WEB_PORT>/dist/install-sdl-wkr.sh | bash -s <SDL_MGR_IP>
|
||
```
|
||
|
||
#### Upgrading
|
||
|
||
SDL Workers continuously monitor the SDL Manager’s advertised version via MQTT cluster status messages and will automatically re-install and restart when a newer version is detected.
|
||
|
||
Alternatively you can upgrade manually by rerunning the install-sdl-wkr.sh script.
|
||
|
||
```
|
||
curl -s http://<SDL_MGR_IP>:<WEB_PORT>/dist/install-sdl-wkr.sh | bash -s <SDL_MGR_IP>
|
||
```
|