#!/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 # # 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 " 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"