diff --git a/zabbix-agent2/Dockerfile b/zabbix-agent2/Dockerfile new file mode 100644 index 0000000..4418da8 --- /dev/null +++ b/zabbix-agent2/Dockerfile @@ -0,0 +1,27 @@ +ARG BUILD_ARCH +ARG BUILD_VERSION +ARG BUILD_BASE_IMAGE=zabbix/zabbix-agent2:alpine-trunk + +FROM ${BUILD_BASE_IMAGE} as builder + +FROM alpine + +LABEL maintainer "sinav" + +ENV LANG C.UTF-8 + +# Install requirements for add-on +RUN apk add --no-cache jq zabbix-agent2 && \ + addgroup -g 1003 docker && \ + addgroup zabbix docker && \ + mkdir -p /etc/zabbix/zabbix_agent2.d/plugins.d + +# Copy zabbix-agent2 plugins +COPY --from=builder ["/usr/sbin/zabbix-agent2-plugin", "/usr/sbin/zabbix-agent2-plugin"] +RUN echo -e "\nPlugins.PostgreSQL.System.Path=/usr/sbin/zabbix-agent2-plugin/zabbix-agent2-plugin-mongodb\nPlugins.PostgreSQL.System.Path=/usr/sbin/zabbix-agent2-plugin/zabbix-agent2-plugin-postgresql\n" >> /etc/zabbix/zabbix_agent2.conf + +# Copy data for add-on +COPY run.sh / +RUN chmod a+x /run.sh + +CMD [ "/run.sh" ] \ No newline at end of file diff --git a/zabbix-agent2/config.yaml b/zabbix-agent2/config.yaml new file mode 100644 index 0000000..2331fe0 --- /dev/null +++ b/zabbix-agent2/config.yaml @@ -0,0 +1,32 @@ +--- +name: zabbix-agent2 +version: '7.0' +slug: zabbix-agent2 +description: Zabbix agent 2 +url: https://gitea.sinav-lab.com/sinav/haos-addons +arch: + - armhf + - armv7 + - aarch64 + - amd64 + - i386 +startup: system +boot: auto +full_access: true +host_ipc: true +host_pid: true +host_network: true +docker_api: true +advanced: true +ports: + 10050/tcp: 10050 +options: + server: zabbix-server.local + serveractive: zabbix-server.local + hostname: homeassistant +schema: + server: str + serveractive: str + hostname: str + tlspskidentity: str? + tlspsksecret: str? diff --git a/zabbix-agent2/icon.png b/zabbix-agent2/icon.png new file mode 100644 index 0000000..fc91822 Binary files /dev/null and b/zabbix-agent2/icon.png differ diff --git a/zabbix-agent2/logo.png b/zabbix-agent2/logo.png new file mode 100644 index 0000000..ec7ea96 Binary files /dev/null and b/zabbix-agent2/logo.png differ diff --git a/zabbix-agent2/run.sh b/zabbix-agent2/run.sh new file mode 100644 index 0000000..c4617e5 --- /dev/null +++ b/zabbix-agent2/run.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env ash +# shellcheck shell=dash + +# Extract config data +CONFIG_PATH=/data/options.json +ZABBIX_SERVER=$(jq --raw-output ".server" "${CONFIG_PATH}") +ZABBIX_SERVER_ACTIVE=$(jq --raw-output ".serveractive" "${CONFIG_PATH}") +ZABBIX_HOSTNAME=$(jq --raw-output ".hostname" "${CONFIG_PATH}") +ZABBIX_TLSPSK_IDENTITY=$(jq --raw-output ".tlspskidentity" "${CONFIG_PATH}") +ZABBIX_TLSPSK_SECRET=$(jq --raw-output ".tlspsksecret" "${CONFIG_PATH}") + +# Update zabbix-agent config +ZABBIX_CONFIG_FILE=/etc/zabbix/zabbix_agent2.conf +sed -i 's@^\(Server\)=.*@\1='"${ZABBIX_SERVER}"'@' "${ZABBIX_CONFIG_FILE}" +sed -i 's@^\(ServerActive\)=.*@\1='"${ZABBIX_SERVER_ACTIVE}"'@' "${ZABBIX_CONFIG_FILE}" +sed -i 's@^#\?\s\?\(Hostname\)=.*@\1='"${ZABBIX_HOSTNAME}"'@' "${ZABBIX_CONFIG_FILE}" + +# Add TLS PSK config if variables are used +if [ "${ZABBIX_TLSPSK_IDENTITY}" != "null" ] && [ "${ZABBIX_TLSPSK_SECRET}" != "null" ]; then + ZABBIX_TLSPSK_SECRET_FILE=/etc/zabbix/tls_secret + echo "${ZABBIX_TLSPSK_SECRET}" > "${ZABBIX_TLSPSK_SECRET_FILE}" + sed -i 's@^#\?\s\?\(TLSConnect\)=.*@\1='"psk"'@' "${ZABBIX_CONFIG_FILE}" + sed -i 's@^#\?\s\?\(TLSAccept\)=.*@\1='"psk"'@' "${ZABBIX_CONFIG_FILE}" + sed -i 's@^#\?\s\?\(TLSPSKIdentity\)=.*@\1='"${ZABBIX_TLSPSK_IDENTITY}"'@' "${ZABBIX_CONFIG_FILE}" + sed -i 's@^#\?\s\?\(TLSPSKFile\)=.*@\1='"${ZABBIX_TLSPSK_SECRET_FILE}"'@' "${ZABBIX_CONFIG_FILE}" +fi +unset ZABBIX_TLSPSK_IDENTITY +unset ZABBIX_TLSPSK_SECRET + +# Run zabbix-agent2 in foreground +exec su zabbix -s /bin/ash -c "zabbix_agent2 -f" \ No newline at end of file