New way to install/run supervisor + plugins (#620)
* Use new layout for CLI/Supervisor Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch> * Fix install script * Fix config * Add docs * Fix shellcheck * Fix issue * rename package * Fix build * Fix apparmor
This commit is contained in:
7
buildroot-external/rootfs-overlay/usr/bin/ha
Executable file
7
buildroot-external/rootfs-overlay/usr/bin/ha
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
# ==============================================================================
|
||||
# HA utility
|
||||
# ==============================================================================
|
||||
|
||||
# shellcheck disable=SC2048,SC2086
|
||||
docker exec hassio_cli ha $*
|
||||
@@ -1,16 +1,7 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# Load configs
|
||||
CONFIG_FILE=/mnt/data/hassos.json
|
||||
|
||||
# Read configs
|
||||
PROFILES_DIR="$(jq --raw-output '.apparmor // empty' ${CONFIG_FILE})"
|
||||
if [ -z "${PROFILES_DIR}" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
PROFILES_DIR="/mnt/data/${PROFILES_DIR}"
|
||||
PROFILES_DIR="/mnt/data/supervisor/apparmor"
|
||||
CACHE_DIR="${PROFILES_DIR}/cache"
|
||||
REMOVE_DIR="${PROFILES_DIR}/remove"
|
||||
|
||||
|
||||
@@ -1,24 +1,11 @@
|
||||
#!/bin/sh
|
||||
# ==============================================================================
|
||||
# Run logging cli
|
||||
# ==============================================================================
|
||||
|
||||
# Load configs
|
||||
CONFIG_FILE=/mnt/data/hassos.json
|
||||
|
||||
CLI="$(jq --raw-output '.cli' ${CONFIG_FILE})"
|
||||
DOCKER_ARGS="$(jq --raw-output '.cli_args // empty' ${CONFIG_FILE})"
|
||||
APPARMOR="$(jq --raw-output '.cli_apparmor // "docker-default"' ${CONFIG_FILE})"
|
||||
|
||||
CLI_DATA=/mnt/data/cli
|
||||
mkdir -p ${CLI_DATA}
|
||||
|
||||
# Run CLI
|
||||
# shellcheck disable=SC2086
|
||||
docker container run \
|
||||
--rm -ti --init \
|
||||
--security-opt apparmor="${APPARMOR}" \
|
||||
-v ${CLI_DATA}:/data \
|
||||
-v /etc/machine-id:/etc/machine-id:ro \
|
||||
$DOCKER_ARGS \
|
||||
"${CLI}"
|
||||
docker container exec \
|
||||
-ti hassio_cli \
|
||||
/usr/bin/cli.sh \
|
||||
|
||||
# Jump to root login shell
|
||||
if [ $? -eq 10 ]; then
|
||||
|
||||
@@ -1,39 +1,35 @@
|
||||
#!/bin/sh
|
||||
# shellcheck disable=SC1091
|
||||
# ==============================================================================
|
||||
# Supervisor on HassOS
|
||||
# ==============================================================================
|
||||
set -e
|
||||
|
||||
# Load configs
|
||||
CONFIG_FILE=/mnt/data/hassos.json
|
||||
|
||||
SUPERVISOR="$(jq --raw-output '.supervisor' ${CONFIG_FILE})"
|
||||
DOCKER_ARGS="$(jq --raw-output '.supervisor_args // empty' ${CONFIG_FILE})"
|
||||
APPARMOR="$(jq --raw-output '.supervisor_apparmor // "docker-default"' ${CONFIG_FILE})"
|
||||
. /etc/os-release
|
||||
|
||||
# Init supervisor
|
||||
HASSOS_DATA=/mnt/data/supervisor
|
||||
HASSOS_IMAGE_ID=$(docker inspect --format='{{.Id}}' "${SUPERVISOR}")
|
||||
HASSOS_CONTAINER_ID=$(docker inspect --format='{{.Image}}' hassos_supervisor || echo "")
|
||||
|
||||
# Fix wrong AppArmor profiles
|
||||
if ! grep "${APPARMOR}" /sys/kernel/security/apparmor/profiles > /dev/null; then
|
||||
APPARMOR=docker-default
|
||||
fi
|
||||
SUPERVISOR_IMAGE="homeassistant/${SUPERVISOR_ARCH}-hassio-supervisor"
|
||||
SUPERVISOR_DATA=/mnt/data/supervisor
|
||||
SUPERVISOR_IMAGE_ID=$(docker inspect --format='{{.Id}}' "${SUPERVISOR_IMAGE}")
|
||||
SUPERVISOR_CONTAINER_ID=$(docker inspect --format='{{.Image}}' hassio_supervisor || echo "")
|
||||
|
||||
runSupervisor() {
|
||||
docker container rm --force hassos_supervisor || true
|
||||
docker container rm --force hassio_supervisor || true
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
docker container run --name hassos_supervisor \
|
||||
--privileged --security-opt apparmor="${APPARMOR}" \
|
||||
docker container run --name hassio_supervisor \
|
||||
--privileged --security-opt apparmor="hassio-supervisor" \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v /var/run/dbus:/var/run/dbus \
|
||||
-v /etc/machine-id:/etc/machine-id:ro \
|
||||
-v ${HASSOS_DATA}:/data \
|
||||
-e SUPERVISOR_SHARE=${HASSOS_DATA} \
|
||||
-e SUPERVISOR_NAME=hassos_supervisor \
|
||||
$DOCKER_ARGS \
|
||||
"${SUPERVISOR}"
|
||||
-v ${SUPERVISOR_DATA}:/data \
|
||||
-e SUPERVISOR_SHARE=${SUPERVISOR_DATA} \
|
||||
-e SUPERVISOR_NAME=hassio_supervisor \
|
||||
-e SUPERVISOR_MACHINE=${SUPERVISOR_MACHINE} \
|
||||
"${SUPERVISOR_IMAGE}"
|
||||
}
|
||||
|
||||
# Run supervisor
|
||||
mkdir -p ${HASSOS_DATA}
|
||||
([ "${HASSOS_IMAGE_ID}" = "${HASSOS_CONTAINER_ID}" ] && docker container start --attach hassos_supervisor) || runSupervisor
|
||||
mkdir -p ${SUPERVISOR_DATA}
|
||||
([ "${SUPERVISOR_IMAGE_ID}" = "${SUPERVISOR_CONTAINER_ID}" ] && docker container start --attach hassio_supervisor) || runSupervisor
|
||||
|
||||
Reference in New Issue
Block a user