diff --git a/vector/Dockerfile b/vector/Dockerfile new file mode 100644 index 0000000..d29bac5 --- /dev/null +++ b/vector/Dockerfile @@ -0,0 +1,27 @@ +ARG BUILD_FROM=ghcr.io/hassio-addons/debian-base:7.8.2 +# hadolint ignore=DL3006 +FROM ${BUILD_FROM} + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ARG VECTOR_VERSION=0.46.1 + +WORKDIR /vector + +RUN apt-get update \ + && apt-get install -y --no-install-recommends systemd \ + && apt-get clean \ + && mkdir -p /var/lib/vector \ + && curl -sSL -o vector.tar.gz \ + https://github.com/vectordotdev/vector/releases/download/v${VECTOR_VERSION}/vector-${VECTOR_VERSION}-x86_64-unknown-linux-musl.tar.gz \ + && tar -xvf vector.tar.gz --strip-components=2 \ + && cp /vector/bin/* /usr/local/bin/ + +LABEL \ + org.opencontainers.image.title="Vector Add-on" \ + org.opencontainers.image.description="Vector log processor for Home Assistant" \ + org.opencontainers.image.url="https://vector.dev" \ + org.opencontainers.image.source="https://github.com/vectordotdev/vector" \ + org.opencontainers.image.documentation="https://vector.dev/docs" + +COPY rootfs / diff --git a/vector/build.yaml b/vector/build.yaml new file mode 100644 index 0000000..c4143af --- /dev/null +++ b/vector/build.yaml @@ -0,0 +1,5 @@ +--- +build_from: + amd64: ghcr.io/hassio-addons/debian-base/amd64:7.8.2 +codenotary: + base_image: codenotary@frenck.dev diff --git a/vector/config.yaml b/vector/config.yaml new file mode 100644 index 0000000..88cb4c8 --- /dev/null +++ b/vector/config.yaml @@ -0,0 +1,17 @@ +name: "Vector" +version: "0.46.1" +slug: "vector" +description: "Vector log processor" +url: "https://vector.dev" +arch: + - amd64 +boot: auto +init: false +journald: true +startup: services +advanced: true +docker_api: true +map: + - addon_config:rw +options: {} +schema: {} diff --git a/vector/icon.png b/vector/icon.png new file mode 100644 index 0000000..61a1145 Binary files /dev/null and b/vector/icon.png differ diff --git a/vector/logo.png b/vector/logo.png new file mode 100644 index 0000000..e7612e9 Binary files /dev/null and b/vector/logo.png differ diff --git a/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/dependencies.d/base b/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/dependencies.d/base new file mode 100644 index 0000000..e69de29 diff --git a/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/run b/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/run new file mode 100644 index 0000000..afc5d92 --- /dev/null +++ b/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/run @@ -0,0 +1,23 @@ +#!/command/with-contenv bashio +# shellcheck shell=bash +# shellcheck disable=SC2207 +# ============================================================================== +# Home Assistant Add-on: Vector +# Copy default config +# ============================================================================== + +CONFIG_PATH="/config/vector.yaml" +DEFAULT_CONFIG="/vector.yaml" + +if ! bashio::fs.file_exists "$CONFIG_PATH"; then + bashio::log.info "Copying default configuration from $DEFAULT_CONFIG" + + if cp "$DEFAULT_CONFIG" "$CONFIG_PATH"; then + bashio::log.info "Default configuration copied successfully" + else + bashio::log.error "Failed to copy default configuration!" + exit 1 + fi +else + bashio::log.info "Using existing configuration at $CONFIG_PATH" +fi diff --git a/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/type b/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/type new file mode 100644 index 0000000..3d92b15 --- /dev/null +++ b/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/up b/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/up new file mode 100644 index 0000000..536d82a --- /dev/null +++ b/vector/rootfs/etc/s6-overlay/s6-rc.d/init-vector/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-vector/run \ No newline at end of file diff --git a/vector/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/vector b/vector/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/vector new file mode 100644 index 0000000..e69de29 diff --git a/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/dependencies.d/base b/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/dependencies.d/base new file mode 100644 index 0000000..e69de29 diff --git a/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/finish b/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/finish new file mode 100644 index 0000000..9efd9a2 --- /dev/null +++ b/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/finish @@ -0,0 +1,45 @@ +#!/command/with-contenv bashio +# shellcheck shell=bash +# ============================================================================== +# Home Assistant Add-on: Vector +# ============================================================================== +declare exit_code +readonly exit_code_container=$( /run/s6-linux-init-container-results/exitcode + fi + + # If the signal is SIGTERM, we should halt the container and take down + # the whole process tree. + [[ "${exit_code_signal}" -eq 15 ]] && exec /run/s6/basedir/bin/halt + +# The service exited with a non-zero exit code, which means it crashed. +elif [[ "${exit_code_service}" -ne 0 ]]; then + + # The service might be a result of another service crashing. Only + # overwrite the container exit code if it is not already set. + if [[ "${exit_code_container}" -eq 0 ]]; then + echo "${exit_code_service}" > /run/s6-linux-init-container-results/exitcode + fi + + # We should halt the container and take down the whole process tree. + exec /run/s6/basedir/bin/halt + +# The service exited with a zero exit code, which means it exited, let +# S6 supervision restart it. +else + bashio::log.info "Service ${service} restarting..." +fi diff --git a/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/run b/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/run new file mode 100644 index 0000000..d31de16 --- /dev/null +++ b/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/run @@ -0,0 +1,10 @@ +#!/command/with-contenv bashio +# shellcheck shell=bash +# ============================================================================== +# Home Assistant Add-on: Vector +# Start Vector +# ============================================================================== + +bashio::log.info "Starting Vector..." + +exec /usr/local/bin/vector --config /config/vector.yaml diff --git a/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/type b/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/type new file mode 100644 index 0000000..1780f9f --- /dev/null +++ b/vector/rootfs/etc/s6-overlay/s6-rc.d/vector/type @@ -0,0 +1 @@ +longrun \ No newline at end of file diff --git a/vector/rootfs/vector.yaml b/vector/rootfs/vector.yaml new file mode 100644 index 0000000..6cbe3ac --- /dev/null +++ b/vector/rootfs/vector.yaml @@ -0,0 +1,12 @@ +data_dir: /var/lib/vector + +sources: + demo: + type: internal_metrics + +sinks: + stdout: + type: console + inputs: [demo] + encoding: + codec: json