Add Azure IoT Edge install script and README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
*.sh text eol=lf
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
# VM Install Script – Azure IoT Edge
|
||||||
|
|
||||||
|
`install.sh` installeert op een Debian- of Ubuntu-VM:
|
||||||
|
|
||||||
|
1. de Microsoft package repository
|
||||||
|
2. `moby-engine` (Docker), met `log-driver: local`
|
||||||
|
3. `aziot-edge`, gekoppeld aan de IoT Hub met jouw Device ID en Shared Access Key
|
||||||
|
|
||||||
|
## Benodigd
|
||||||
|
|
||||||
|
- Een VM met Debian (bijv. 12) of Ubuntu (bijv. 22.04 / 24.04)
|
||||||
|
- Een gebruiker met `sudo`-rechten en internettoegang
|
||||||
|
- De **Device ID** en **Shared Access Key** van het IoT Edge-device
|
||||||
|
(Azure Portal → IoT Hub → Devices → jouw device)
|
||||||
|
|
||||||
|
## Stap 1 – Script naar de VM kopiëren
|
||||||
|
|
||||||
|
Vanaf je Windows-pc (PowerShell):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
scp .\install.sh gebruiker@<VM-IP>:~/
|
||||||
|
```
|
||||||
|
|
||||||
|
Of maak het bestand direct op de VM aan met `nano install.sh` en plak de inhoud.
|
||||||
|
|
||||||
|
## Stap 2 – Uitvoerbaar maken
|
||||||
|
|
||||||
|
Log in op de VM (`ssh gebruiker@<VM-IP>`) en voer uit:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod +x install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Let op (Windows line endings):** als je de foutmelding
|
||||||
|
> `/usr/bin/env: 'bash\r': No such file or directory` krijgt, is het bestand
|
||||||
|
> opgeslagen met Windows-regeleinden. Los dit op met:
|
||||||
|
>
|
||||||
|
> ```bash
|
||||||
|
> sed -i 's/\r$//' install.sh
|
||||||
|
> ```
|
||||||
|
|
||||||
|
## Stap 3 – Script draaien
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ./install.sh <DEVICE_ID> <SHARED_ACCESS_KEY>
|
||||||
|
```
|
||||||
|
|
||||||
|
Voorbeeld:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ./install.sh mijn-edge-device-01 'abc123...='
|
||||||
|
```
|
||||||
|
|
||||||
|
Zet de key tussen **enkele aanhalingstekens**, omdat keys vaak tekens als `=`, `+` of `/` bevatten.
|
||||||
|
|
||||||
|
### Andere IoT Hub gebruiken
|
||||||
|
|
||||||
|
Standaard wordt `iot-shared-v6odheqozqccs-prod.azure-devices.net` gebruikt. Een andere hub geef je zo op:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo IOT_HUB_HOSTNAME=mijn-hub.azure-devices.net ./install.sh <DEVICE_ID> <SHARED_ACCESS_KEY>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Stap 4 – Controleren
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo iotedge system status # services moeten 'Running' zijn
|
||||||
|
sudo iotedge check # uitgebreide controle van configuratie en verbinding
|
||||||
|
sudo iotedge list # draaiende modules (edgeAgent, edgeHub, ...)
|
||||||
|
```
|
||||||
|
|
||||||
|
Het kan een paar minuten duren voordat `edgeAgent` en `edgeHub` verschijnen.
|
||||||
|
|
||||||
|
## Opnieuw draaien
|
||||||
|
|
||||||
|
Het script kan veilig opnieuw gedraaid worden, bijvoorbeeld met een andere Device ID.
|
||||||
|
De bestaande `/etc/aziot/config.toml` wordt dan overschreven.
|
||||||
|
|
||||||
|
## Problemen oplossen
|
||||||
|
|
||||||
|
| Probleem | Oplossing |
|
||||||
|
|---|---|
|
||||||
|
| `Dit script moet als root draaien` | Start het script met `sudo`. |
|
||||||
|
| `Kon packages-microsoft-prod.deb niet downloaden` | Je OS-versie wordt (nog) niet door Microsoft ondersteund, of er is geen internet. |
|
||||||
|
| `iotedge check` geeft verbindingsfouten | Controleer Device ID, key, hostname en of uitgaande poorten 443/5671/8883 open zijn. |
|
||||||
|
| Logs bekijken | `sudo iotedge system logs` |
|
||||||
+80
@@ -0,0 +1,80 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Installeert Docker (moby-engine) en Azure IoT Edge op een Debian/Ubuntu VM
|
||||||
|
# en koppelt het device aan de IoT Hub.
|
||||||
|
#
|
||||||
|
# Gebruik:
|
||||||
|
# sudo ./install.sh <DEVICE_ID> <SHARED_ACCESS_KEY>
|
||||||
|
#
|
||||||
|
# Optioneel (environment variabele):
|
||||||
|
# IOT_HUB_HOSTNAME IoT Hub hostname (standaard: iot-shared-v6odheqozqccs-prod.azure-devices.net)
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
IOT_HUB_HOSTNAME="${IOT_HUB_HOSTNAME:-iot-shared-v6odheqozqccs-prod.azure-devices.net}"
|
||||||
|
|
||||||
|
log() { echo -e "\n\033[1;34m==> $*\033[0m"; }
|
||||||
|
fail() { echo -e "\033[1;31mFOUT: $*\033[0m" >&2; exit 1; }
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Gebruik: sudo $0 <DEVICE_ID> <SHARED_ACCESS_KEY>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Controles -------------------------------------------------------------
|
||||||
|
|
||||||
|
[[ $# -eq 2 ]] || usage
|
||||||
|
DEVICE_ID="$1"
|
||||||
|
SHARED_ACCESS_KEY="$2"
|
||||||
|
|
||||||
|
[[ $EUID -eq 0 ]] || fail "Dit script moet als root draaien. Gebruik: sudo $0 ..."
|
||||||
|
|
||||||
|
[[ -r /etc/os-release ]] || fail "/etc/os-release niet gevonden; onbekend besturingssysteem."
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
. /etc/os-release
|
||||||
|
case "${ID}" in
|
||||||
|
debian|ubuntu) ;;
|
||||||
|
*) fail "Niet ondersteund OS: ${ID}. Alleen Debian en Ubuntu worden ondersteund." ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# --- 1. Microsoft package repository ---------------------------------------
|
||||||
|
|
||||||
|
log "Microsoft package repository toevoegen (${ID} ${VERSION_ID})"
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y curl ca-certificates
|
||||||
|
|
||||||
|
TMP_DEB="$(mktemp --suffix=.deb)"
|
||||||
|
trap 'rm -f "$TMP_DEB"' EXIT
|
||||||
|
curl -fsSL "https://packages.microsoft.com/config/${ID}/${VERSION_ID}/packages-microsoft-prod.deb" -o "$TMP_DEB" \
|
||||||
|
|| fail "Kon packages-microsoft-prod.deb niet downloaden voor ${ID} ${VERSION_ID}."
|
||||||
|
apt-get install -y "$TMP_DEB"
|
||||||
|
apt-get update
|
||||||
|
|
||||||
|
# --- 2. Container engine ----------------------------------------------------
|
||||||
|
|
||||||
|
log "moby-engine installeren"
|
||||||
|
apt-get install -y moby-engine
|
||||||
|
|
||||||
|
log "Docker logging configureren (log-driver: local)"
|
||||||
|
mkdir -p /etc/docker
|
||||||
|
echo '{"log-driver": "local"}' > /etc/docker/daemon.json
|
||||||
|
systemctl restart docker
|
||||||
|
|
||||||
|
# --- 3. Azure IoT Edge ------------------------------------------------------
|
||||||
|
|
||||||
|
log "aziot-edge installeren"
|
||||||
|
apt-get install -y aziot-edge
|
||||||
|
|
||||||
|
log "IoT Edge configureren voor device '${DEVICE_ID}'"
|
||||||
|
iotedge config mp --force --connection-string \
|
||||||
|
"HostName=${IOT_HUB_HOSTNAME};DeviceId=${DEVICE_ID};SharedAccessKey=${SHARED_ACCESS_KEY}"
|
||||||
|
iotedge config apply -c /etc/aziot/config.toml
|
||||||
|
|
||||||
|
# --- 4. Controle ------------------------------------------------------------
|
||||||
|
|
||||||
|
log "Installatie voltooid. Status:"
|
||||||
|
iotedge system status || true
|
||||||
|
echo
|
||||||
|
echo "Controleer de verbinding met: sudo iotedge check"
|
||||||
Reference in New Issue
Block a user