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:
Pascal Vizeli
2020-04-21 14:37:25 +02:00
committed by GitHub
parent 48f3045854
commit 45c62716cb
40 changed files with 244 additions and 444 deletions

View File

@@ -0,0 +1,7 @@
#!/bin/sh
# ==============================================================================
# HA utility
# ==============================================================================
# shellcheck disable=SC2048,SC2086
docker exec hassio_cli ha $*

View File

@@ -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"

View File

@@ -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

View File

@@ -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