diff --git a/opennms-container/minion/Dockerfile b/opennms-container/minion/Dockerfile index cf3cc4796e94..d48680b3da1f 100644 --- a/opennms-container/minion/Dockerfile +++ b/opennms-container/minion/Dockerfile @@ -59,7 +59,7 @@ RUN chmod +x /tmp/plugins.sh && cd /tmp && ./plugins.sh && rm ./plugins.sh ## FROM ${BASE_IMAGE} -ARG REQUIRED_RPMS="hostname uuid" +ARG REQUIRED_RPMS="hostname uuid gettext" # Collect generic steps in a layer for caching @@ -95,12 +95,10 @@ COPY container-fs/prom-jmx-default-config.yaml /opt/prom-jmx-exporter/config.yam # If you copy from /opt/minion to /opt/minion the permissions are not preserved # We would have 755 for minion:root instead of 775 and prevents writing lock files in /opt/minion COPY --chown=10001:0 --from=minion-base /opt /opt -COPY --chown=10001:0 --from=minion-plugins /opt/usr-plugins /opt/minion/deploy -# Install confd.io configuration files and scripts and ensure they are executable -COPY ./container-fs/confd/ /opt/minion/confd/ -RUN chmod +x /opt/minion/confd/scripts/* -COPY ./minion-config-schema.yml /opt/minion/confd/ +# Overlay container-specific etc files (config files and featuresBoot templates) +COPY --chown=10001:0 container-fs/etc/ /opt/minion/etc/ +COPY --chown=10001:0 --from=minion-plugins /opt/usr-plugins /opt/minion/deploy # Create the directory for server certificates RUN install -d -m 750 /opt/minion/server-certs diff --git a/opennms-container/minion/container-fs/confd/conf.d/confd-telemetry-feature.xml.toml b/opennms-container/minion/container-fs/confd/conf.d/confd-telemetry-feature.xml.toml deleted file mode 100644 index 64a65cbdfba5..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/confd-telemetry-feature.xml.toml +++ /dev/null @@ -1,6 +0,0 @@ -[template] -src = "confd-telemetry-feature.xml.tmpl" -dest = "/opt/minion/deploy/confd-telemetry-feature.xml" -keys = [ - "/telemetry/flows" -] diff --git a/opennms-container/minion/container-fs/confd/conf.d/custom.system.properties.toml b/opennms-container/minion/container-fs/confd/conf.d/custom.system.properties.toml deleted file mode 100644 index d5d5ba0f7746..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/custom.system.properties.toml +++ /dev/null @@ -1,6 +0,0 @@ -[template] -src = "custom.system.properties.tmpl" -dest = "/opt/minion/etc/custom.system.properties" -keys = [ - "/system/properties" -] diff --git a/opennms-container/minion/container-fs/confd/conf.d/disable-jms.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/disable-jms.boot.toml deleted file mode 100644 index f49e92fd5d5f..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/disable-jms.boot.toml +++ /dev/null @@ -1,8 +0,0 @@ -[template] -src = "disable-jms.boot.tmpl" -dest = "/opt/minion/etc/featuresBoot.d/disable-jms.boot" -keys = [ - "/ipc/rpc/kafka", - "/ipc/sink/kafka" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/disable-jms.boot" diff --git a/opennms-container/minion/container-fs/confd/conf.d/dominion-scv.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/dominion-scv.boot.toml deleted file mode 100644 index 6c837b5e19ac..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/dominion-scv.boot.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "dominion-scv.boot.tmpl" -dest = "/opt/minion/etc/featuresBoot.d/dominion-scv.boot" -keys = [ - "/scv" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/dominion-scv.boot" diff --git a/opennms-container/minion/container-fs/confd/conf.d/grpc.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/grpc.boot.toml deleted file mode 100644 index aab9d134caef..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/grpc.boot.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "grpc.boot.tmpl" -dest = "/opt/minion/etc/featuresBoot.d/grpc.boot" -keys = [ - "/ipc/grpc" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/grpc.boot" diff --git a/opennms-container/minion/container-fs/confd/conf.d/instance-id.properties.toml b/opennms-container/minion/container-fs/confd/conf.d/instance-id.properties.toml deleted file mode 100644 index a2d7c8d38815..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/instance-id.properties.toml +++ /dev/null @@ -1,6 +0,0 @@ -[template] -src = "instance-id.properties.tmpl" -dest = "/opt/minion/etc/opennms.properties.d/instance-id.properties" -keys = [ - "/org.opennms.instance.id" -] diff --git a/opennms-container/minion/container-fs/confd/conf.d/jaeger.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/jaeger.boot.toml deleted file mode 100644 index ac4c827d9e35..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/jaeger.boot.toml +++ /dev/null @@ -1,8 +0,0 @@ -[template] -src = "jaeger.boot.tmpl" -dest = "/opt/minion/etc/featuresBoot.d/jaeger.boot" -keys = [ - "/system/properties/JAEGER_AGENT_HOST", - "/system/properties/JAEGER_ENDPOINT" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/jaeger.boot" diff --git a/opennms-container/minion/container-fs/confd/conf.d/kafka-ipc.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/kafka-ipc.boot.toml deleted file mode 100644 index d001621c8db7..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/kafka-ipc.boot.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "kafka-ipc.boot.tmpl" -dest = "/opt/minion/etc/featuresBoot.d/kafka-ipc.boot" -keys = [ - "/ipc/kafka" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/kafka-ipc.boot" \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/conf.d/kafka-rpc.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/kafka-rpc.boot.toml deleted file mode 100644 index a0f0fe06f704..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/kafka-rpc.boot.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "kafka-rpc.boot.tmpl" -dest = "/opt/minion/etc/featuresBoot.d/kafka-rpc.boot" -keys = [ - "/ipc/rpc/kafka" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/kafka-rpc.boot" diff --git a/opennms-container/minion/container-fs/confd/conf.d/kafka-sink.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/kafka-sink.boot.toml deleted file mode 100644 index 7ce294ef616f..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/kafka-sink.boot.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "kafka-sink.boot.tmpl" -dest = "/opt/minion/etc/featuresBoot.d/kafka-sink.boot" -keys = [ - "/ipc/sink/kafka" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/kafka-sink.boot" diff --git a/opennms-container/minion/container-fs/confd/conf.d/kafka-twin.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/kafka-twin.boot.toml deleted file mode 100644 index f89b2fdc05b3..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/kafka-twin.boot.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "kafka-twin.boot.tmpl" -dest = "/opt/minion/etc/featuresBoot.d/kafka-twin.boot" -keys = [ - "/ipc/twin/kafka" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/kafka-twin.boot" \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.management.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.management.cfg.toml deleted file mode 100644 index c3c2e62caed4..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.management.cfg.toml +++ /dev/null @@ -1,6 +0,0 @@ -[template] -src = "org.apache.karaf.management.cfg.tmpl" -dest = "/opt/minion/etc/org.apache.karaf.management.cfg" -keys = [ - "/karaf/management/rmi" -] \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.shell.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.shell.cfg.toml deleted file mode 100644 index 793f4176a3da..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.shell.cfg.toml +++ /dev/null @@ -1,6 +0,0 @@ -[template] -src = "org.apache.karaf.shell.cfg.tmpl" -dest = "/opt/minion/etc/org.apache.karaf.shell.cfg" -keys = [ - "/karaf/shell/ssh" -] \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.grpc.client.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.grpc.client.cfg.toml deleted file mode 100644 index ed943d436267..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.grpc.client.cfg.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.core.ipc.grpc.client.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.core.ipc.grpc.client.cfg" -keys = [ - "/ipc/grpc" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.grpc.client.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.kafka.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.kafka.cfg.toml deleted file mode 100644 index d2ea663bd1e7..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.kafka.cfg.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.core.ipc.kafka.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.core.ipc.kafka.cfg" -keys = [ - "/ipc/kafka" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.kafka.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.rpc.kafka.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.rpc.kafka.cfg.toml deleted file mode 100644 index a1da31892a88..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.rpc.kafka.cfg.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.core.ipc.rpc.kafka.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.core.ipc.rpc.kafka.cfg" -keys = [ - "/ipc/rpc/kafka" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.rpc.kafka.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.kafka.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.kafka.cfg.toml deleted file mode 100644 index 83d18dc472dc..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.kafka.cfg.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.core.ipc.sink.kafka.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.core.ipc.sink.kafka.cfg" -keys = [ - "/ipc/sink/kafka" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.sink.kafka.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.offheap.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.offheap.cfg.toml deleted file mode 100644 index 761981366624..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.offheap.cfg.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.core.ipc.sink.offheap.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.core.ipc.sink.offheap.cfg" -keys = [ - "/ipc/sink/offheap" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.sink.offheap.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.twin.kafka.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.twin.kafka.cfg.toml deleted file mode 100644 index ab9413c62eea..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.twin.kafka.cfg.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.core.ipc.twin.kafka.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.core.ipc.twin.kafka.cfg" -keys = [ - "/ipc/twin/kafka" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.twin.kafka.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.features.minion.dominion.grpc.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.features.minion.dominion.grpc.cfg.toml deleted file mode 100644 index fc56588d243c..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.features.minion.dominion.grpc.cfg.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.features.minion.dominion.grpc.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.features.minion.dominion.grpc.cfg" -keys = [ - "/dominion/grpc" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.features.minion.dominion.grpc.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.controller.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.controller.cfg.toml deleted file mode 100644 index 82bddd265c35..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.controller.cfg.toml +++ /dev/null @@ -1,9 +0,0 @@ -[template] -src = "org.opennms.minion.controller.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.minion.controller.cfg" -keys = [ - "/location", - "/id", - "/broker-url" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.minion.controller.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.process-env.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.process-env.toml deleted file mode 100644 index b145fab29bb3..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.process-env.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.minion.process-env.tmpl" -dest = "/opt/minion/etc/minion-process.env" -keys = [ - "/process-env" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/minion-process.env" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.server-certificates.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.server-certificates.toml deleted file mode 100644 index addceb3530d3..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.server-certificates.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.minion.server-certificates.tmpl" -dest = "/opt/minion/etc/minion-server-certs.env" -keys = [ - "/server-certs" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/minion-server-certs.env" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.syslog.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.syslog.cfg.toml deleted file mode 100644 index b21f2358be00..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.syslog.cfg.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.netmgt.syslog.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.netmgt.syslog.cfg" -keys = [ - "/netmgt/syslog" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.netmgt.syslog.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.trapd.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.trapd.cfg.toml deleted file mode 100644 index 75404132977b..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.trapd.cfg.toml +++ /dev/null @@ -1,7 +0,0 @@ -[template] -src = "org.opennms.netmgt.trapd.cfg.tmpl" -dest = "/opt/minion/etc/org.opennms.netmgt.trapd.cfg" -keys = [ - "/netmgt/traps" -] -reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.netmgt.trapd.cfg" diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.ops4j.pax.web.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.ops4j.pax.web.cfg.toml deleted file mode 100644 index b71b783ebc27..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/org.ops4j.pax.web.cfg.toml +++ /dev/null @@ -1,6 +0,0 @@ -[template] -src = "org.ops4j.pax.web.cfg.tmpl" -dest = "/opt/minion/etc/org.ops4j.pax.web.cfg" -keys = [ - "/jetty/web" -] \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/conf.d/prom-jmx-exporter.toml b/opennms-container/minion/container-fs/confd/conf.d/prom-jmx-exporter.toml deleted file mode 100644 index 3cde4f6b8efa..000000000000 --- a/opennms-container/minion/container-fs/confd/conf.d/prom-jmx-exporter.toml +++ /dev/null @@ -1,6 +0,0 @@ -[template] -src = "prom-jmx-exporter.yaml.tmpl" -dest = "/opt/prom-jmx-exporter/config.yaml" -keys = [ - "/java/agent/prom-jmx-exporter" -] diff --git a/opennms-container/minion/container-fs/confd/confd.toml b/opennms-container/minion/container-fs/confd/confd.toml deleted file mode 100644 index 89e0b3eba326..000000000000 --- a/opennms-container/minion/container-fs/confd/confd.toml +++ /dev/null @@ -1,4 +0,0 @@ -confdir = "/opt/minion/confd" -backend = "file" -file = [ "/opt/minion/minion-config.yaml" ] -log-level = "debug" diff --git a/opennms-container/minion/container-fs/confd/directories b/opennms-container/minion/container-fs/confd/directories deleted file mode 100644 index 04909d627773..000000000000 --- a/opennms-container/minion/container-fs/confd/directories +++ /dev/null @@ -1 +0,0 @@ -etc/opennms.properties.d diff --git a/opennms-container/minion/container-fs/confd/scripts/confd_lib.sh b/opennms-container/minion/container-fs/confd/scripts/confd_lib.sh deleted file mode 100755 index 73a3d5f6fa7d..000000000000 --- a/opennms-container/minion/container-fs/confd/scripts/confd_lib.sh +++ /dev/null @@ -1,19 +0,0 @@ -MINION_ETC_DIR="/opt/minion/etc" -STATIC_DIR="/opt/minion/confd/static" - -# Checks if the given file is empty and if so deletes it. -removeIfEmpty() { - local file="$1" - - if [ -z "$file" ]; then - echo "No rendered template was specified" - exit 1 - fi - - if [ -s "$file" ]; then - return 1 - fi - - rm "$file" - return 0 -} diff --git a/opennms-container/minion/container-fs/confd/scripts/remove-if-empty b/opennms-container/minion/container-fs/confd/scripts/remove-if-empty deleted file mode 100755 index 9adf03cf8c08..000000000000 --- a/opennms-container/minion/container-fs/confd/scripts/remove-if-empty +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -. "/opt/minion/confd/scripts/confd_lib.sh" - -if removeIfEmpty "$1"; then - echo "Removed file '$1' since it was empty after rendering" -fi diff --git a/opennms-container/minion/container-fs/confd/templates/confd-telemetry-feature.xml.tmpl b/opennms-container/minion/container-fs/confd/templates/confd-telemetry-feature.xml.tmpl deleted file mode 100644 index e24857cb96fd..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/confd-telemetry-feature.xml.tmpl +++ /dev/null @@ -1,67 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} - - - - -{{$flowsPath := "/telemetry/flows" -}} -{{$singlePortPath := (print $flowsPath "/single-port-listener") -}} -{{if eq (getv (print $singlePortPath "/enabled") "false") "true" -}} - - name={{getv (print $singlePortPath "/name") "Single-Port-Flow-Listener"}} - class-name=org.opennms.netmgt.telemetry.listeners.UdpListener -{{if not (exists (print $singlePortPath "/parameters/port")) -}} - parameters.port=50000 -{{end -}} -{{range gets (print $singlePortPath "/parameters/*") -}} - parameters.{{base .Key}}={{.Value}} -{{end -}} - parsers.1.name=Netflow-5 - parsers.1.class-name=org.opennms.netmgt.telemetry.protocols.netflow.parser.Netflow5UdpParser - parsers.1.parameters.maxClockSkew=300 -{{range gets (print $singlePortPath "/parser-parameters/*") -}} - parsers.1.parameters.{{base .Key}}={{.Value}} -{{end -}} - parsers.2.name=Netflow-9 - parsers.2.class-name=org.opennms.netmgt.telemetry.protocols.netflow.parser.Netflow9UdpParser - parsers.2.parameters.maxClockSkew=300 -{{range gets (print $singlePortPath "/parser-parameters/*") -}} - parsers.2.parameters.{{base .Key}}={{.Value}} -{{end -}} - parsers.3.name=IPFIX - parsers.3.class-name=org.opennms.netmgt.telemetry.protocols.netflow.parser.IpfixUdpParser - parsers.3.parameters.maxClockSkew=300 -{{range gets (print $singlePortPath "/parser-parameters/*") -}} - parsers.3.parameters.{{base .Key}}={{.Value}} -{{end -}} - parsers.4.name=SFlow - parsers.4.class-name=org.opennms.netmgt.telemetry.protocols.sflow.parser.SFlowUdpParser -{{range gets (print $singlePortPath "/parser-parameters/*") -}} - parsers.4.parameters.{{base .Key}}={{.Value}} -{{end -}} - -{{end -}} -{{range lsdir (print $flowsPath "/listeners") -}} -{{$listenerPath := (print $flowsPath "/listeners/" .) -}} -{{$listenerName := base $listenerPath -}} - - name={{$listenerName}} - class-name={{getv (print $listenerPath "/class-name")}} -{{range gets (print $listenerPath "/parameters/*") -}} - parameters.{{base .Key}}={{.Value}} -{{end -}} -{{range $parserIndex, $element := lsdir (print $listenerPath "/parsers") -}} -{{$parserPath := (print $listenerPath "/parsers/" .) -}} -{{$parserName := base $parserPath -}} - parsers.{{$parserIndex}}.name={{$parserName}} - parsers.{{$parserIndex}}.class-name={{getv (print $parserPath "/class-name")}} -{{range gets (print $parserPath "/parameters/*") -}} - parsers.{{$parserIndex}}.parameters.{{base .Key}}={{.Value}} -{{end -}} -{{end -}} - -{{end -}} - - - \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/custom.system.properties.tmpl b/opennms-container/minion/container-fs/confd/templates/custom.system.properties.tmpl deleted file mode 100644 index 7d2c2a12f526..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/custom.system.properties.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range gets "/system/properties/*" -}} -{{base .Key}} = {{.Value}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/disable-jms.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/disable-jms.boot.tmpl deleted file mode 100644 index 072d22db2f51..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/disable-jms.boot.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{if (and (exists "/ipc/rpc/kafka/bootstrap.servers") (exists "/ipc/sink/kafka/bootstrap.servers")) -}} -!minion-jms -!opennms-core-ipc-jms -{{end -}} diff --git a/opennms-container/minion/container-fs/confd/templates/dominion-scv.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/dominion-scv.boot.tmpl deleted file mode 100644 index f52ca1db809d..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/dominion-scv.boot.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{$provider := (getv "/scv/provider" "") -}} -{{if eq $provider "dominion" -}} -!scv-jceks-impl -dominion-secure-credentials-vault -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/grpc.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/grpc.boot.tmpl deleted file mode 100644 index f59ccf6eb672..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/grpc.boot.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{if exists "/ipc/grpc/host" -}} -!opennms-core-ipc-jms -!minion-jms -opennms-core-ipc-grpc-client -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/instance-id.properties.tmpl b/opennms-container/minion/container-fs/confd/templates/instance-id.properties.tmpl deleted file mode 100644 index dcf70077bc09..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/instance-id.properties.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{$instanceIdKey := "/org.opennms.instance.id" -}} -{{if exists $instanceIdKey -}} -org.opennms.instance.id={{getv $instanceIdKey}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/jaeger.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/jaeger.boot.tmpl deleted file mode 100644 index a3b0f4c7e6b0..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/jaeger.boot.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{if or (exists "/system/properties/JAEGER_AGENT_HOST") (exists "/system/properties/JAEGER_ENDPOINT") -}} -opennms-core-tracing-jaeger -{{end -}} diff --git a/opennms-container/minion/container-fs/confd/templates/kafka-ipc.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/kafka-ipc.boot.tmpl deleted file mode 100644 index 2523f2f25eee..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/kafka-ipc.boot.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{if exists "/ipc/kafka/bootstrap.servers" -}} -!minion-jms -!opennms-core-ipc-jms -opennms-core-ipc-kafka -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/kafka-rpc.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/kafka-rpc.boot.tmpl deleted file mode 100644 index 3c808b5c8b3e..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/kafka-rpc.boot.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{if exists "/ipc/rpc/kafka/bootstrap.servers" -}} -!opennms-core-ipc-rpc-jms -opennms-core-ipc-rpc-kafka -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/kafka-sink.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/kafka-sink.boot.tmpl deleted file mode 100644 index f01a5558fa83..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/kafka-sink.boot.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{if exists "/ipc/sink/kafka/bootstrap.servers" -}} -!opennms-core-ipc-sink-camel -opennms-core-ipc-sink-kafka -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/kafka-twin.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/kafka-twin.boot.tmpl deleted file mode 100644 index 1df7e2bfe3be..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/kafka-twin.boot.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{if exists "/ipc/twin/kafka/bootstrap.servers" -}} -!opennms-core-ipc-twin-jms -opennms-core-ipc-twin-kafka -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.shell.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.shell.cfg.tmpl deleted file mode 100644 index ed18e9a7dd2d..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.shell.cfg.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -# -# DON'T EDIT THIS FILE :: GENERATED WITH CONFD -# -{{$karafSshPath := "/karaf/shell/ssh" -}} -sshPort={{getv (print $karafSshPath "/port") "8201"}} -sshHost={{getv (print $karafSshPath "/host") "127.0.0.1"}} -hostKeyFormat=PEM -sshRealm=karaf -hostKey=${karaf.etc}/host.key \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.grpc.client.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.grpc.client.cfg.tmpl deleted file mode 100644 index 45d52ff10060..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.grpc.client.cfg.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range gets "/ipc/grpc/*" -}} -{{base .Key}} = {{.Value}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.kafka.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.kafka.cfg.tmpl deleted file mode 100644 index 6cf3d9966032..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.kafka.cfg.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range gets "/ipc/kafka/*" -}} -{{base .Key}} = {{.Value}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.rpc.kafka.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.rpc.kafka.cfg.tmpl deleted file mode 100644 index 7ee576525e76..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.rpc.kafka.cfg.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range gets "/ipc/rpc/kafka/*" -}} -{{base .Key}} = {{.Value}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.kafka.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.kafka.cfg.tmpl deleted file mode 100644 index d1cc1de1443e..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.kafka.cfg.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range gets "/ipc/sink/kafka/*" -}} -{{base .Key}} = {{.Value}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.offheap.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.offheap.cfg.tmpl deleted file mode 100644 index c7417c872958..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.offheap.cfg.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range gets "/ipc/sink/offheap/*" -}} -{{base .Key}} = {{.Value}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.twin.kafka.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.twin.kafka.cfg.tmpl deleted file mode 100644 index 6478aaed6be5..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.twin.kafka.cfg.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range gets "/ipc/twin/kafka/*" -}} -{{base .Key}} = {{.Value}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.features.minion.dominion.grpc.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.features.minion.dominion.grpc.cfg.tmpl deleted file mode 100644 index f59411603d55..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.features.minion.dominion.grpc.cfg.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{$grpcPath := "/dominion/grpc/" -}} -{{if exists (print $grpcPath "host") -}} -host = {{getv (print $grpcPath "host")}} -{{end -}} -{{if exists (print $grpcPath "port") -}} -port = {{getv (print $grpcPath "port")}} -{{end -}} -{{if exists (print $grpcPath "client-secret") -}} -clientSecret = {{getv (print $grpcPath "client-secret")}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.controller.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.controller.cfg.tmpl deleted file mode 100644 index c5d006e6c66d..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.controller.cfg.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{if exists "/location" -}} -location = {{getv "/location"}} -{{end -}} -{{if exists "/id" -}} -id = {{getv "/id"}} -{{end -}} -{{if exists "/broker-url" -}} -broker-url = {{getv "/broker-url"}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.process-env.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.process-env.tmpl deleted file mode 100644 index 8d090807c85d..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.process-env.tmpl +++ /dev/null @@ -1,14 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range $idx, $elm := ls "/process-env/java-opts" -}} -{{if not $idx -}} -# -# DON'T EDIT THIS FILE :: GENERATED WITH CONFD -# -CUSTOM_JAVA_OPTS= - {{- range $index, $element := getvs "/process-env/java-opts/*" -}} - {{- if $index}} {{end -}} - {{- $element -}} - {{- end}} -{{end -}} -{{end -}} diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.server-certificates.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.server-certificates.tmpl deleted file mode 100644 index 21563cb1e344..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.server-certificates.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range $idx, $elm := getvs "/server-certs/*" -}} -{{if not $idx -}} -# -# DON'T EDIT THIS FILE :: GENERATED WITH CONFD -# -{{end -}} -{{.}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.syslog.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.syslog.cfg.tmpl deleted file mode 100644 index 3ef13aedc8bb..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.syslog.cfg.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range gets "/netmgt/syslog/*" -}} -{{base .Key}} = {{.Value}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.trapd.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.trapd.cfg.tmpl deleted file mode 100644 index 5ad281ec63ce..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.trapd.cfg.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -{{range gets "/netmgt/traps/*" -}} -{{base .Key}} = {{.Value}} -{{end -}} \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/org.ops4j.pax.web.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.ops4j.pax.web.cfg.tmpl deleted file mode 100644 index 6b7a5c51810c..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/org.ops4j.pax.web.cfg.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -# -# DON'T EDIT THIS FILE :: GENERATED WITH CONFD -# -{{$jettyWebPath := "/jetty/web" -}} -org.osgi.service.http.port={{getv (print $jettyWebPath "/port") "8181"}} -org.ops4j.pax.web.listening.addresses={{getv (print $jettyWebPath "/host") "0.0.0.0"}} -javax.servlet.context.tempdir=${karaf.data}/pax-web-jsp -org.ops4j.pax.web.config.file=${karaf.etc}/jetty.xml \ No newline at end of file diff --git a/opennms-container/minion/container-fs/confd/templates/prom-jmx-exporter.yaml.tmpl b/opennms-container/minion/container-fs/confd/templates/prom-jmx-exporter.yaml.tmpl deleted file mode 100644 index 194f11b217a5..000000000000 --- a/opennms-container/minion/container-fs/confd/templates/prom-jmx-exporter.yaml.tmpl +++ /dev/null @@ -1,48 +0,0 @@ -# -# DON'T EDIT THIS FILE :: GENERATED WITH CONFD -# -{{$promJmxPath := "/java/agent/prom-jmx-exporter" -}} -startDelaySeconds: {{getv (print $promJmxPath "/startDelaySeconds") "0"}} -lowercaseOutputName: {{getv (print $promJmxPath "/lowerCaseOutputName") "true"}} -lowercaseOutputLabelNames: {{getv (print $promJmxPath "/lowercaseOutputLabelNames") "true"}} -autoExcludeObjectNameAttributes: {{getv (print $promJmxPath "/autoExcludeObjectNameAttributes") "true"}} - -{{$woSize := len (getvs (print $promJmxPath "/includeObjectNames/*")) -}} -{{if gt $woSize 0 -}} -includeObjectNames: -{{range getvs (print $promJmxPath "/includeObjectNames/*") -}} -- "{{.}}" -{{end -}} -{{end -}} - -{{$boSize := len (getvs (print $promJmxPath "/excludeObjectNames/*")) -}} -{{if gt $boSize 0 -}} -excludeObjectNames: -{{range getvs (print $promJmxPath "/excludeObjectNames/*") -}} -- "{{.}}" -{{end -}} -{{end -}} - -rules: -- pattern: org\.opennms\..+\.(.+)<>Value - name: minion_$1_$2 - type: GAUGE - -- pattern: org\.opennms\..+\.(.+)<>Count - name: minion_$1_$2_count - type: COUNTER - -- pattern: org\.opennms\..+\.(.+)<>(\d+)thPercentile - name: minion_$1_$2 - type: GAUGE - labels: - quantile: "0.$3" - -# Per-device trapd metrics -- pattern: 'org\.opennms\.netmgt\.trapd\.device]+)><>(\w+)' - name: trapd_device_$4 - type: COUNTER - labels: - location: "$1" - ip: "$2" - type: "$3" diff --git a/opennms-container/minion/container-fs/entrypoint.sh b/opennms-container/minion/container-fs/entrypoint.sh index cddfe6dae48e..5a4524ce7806 100755 --- a/opennms-container/minion/container-fs/entrypoint.sh +++ b/opennms-container/minion/container-fs/entrypoint.sh @@ -6,21 +6,21 @@ # Cause false/positives # shellcheck disable=SC2086 -set -e +set -eE + +trap 'rc=$?; echo "[Startup][ERROR] entrypoint failed at line ${LINENO} (exit=${rc})"; exit ${rc}' ERR + umask 002 export MINION_HOME="/opt/minion" export KARAF_HOME="${MINION_HOME}" -MINION_CONFIG="${MINION_HOME}/etc/org.opennms.minion.controller.cfg" MINION_PROCESS_ENV_CFG="${MINION_HOME}/etc/minion-process.env" MINION_SERVER_CERTS_CFG="${MINION_HOME}/etc/minion-server-certs.env" MINION_OVERLAY_ETC="/opt/minion-etc-overlay" -CONFD_KEY_STORE="${MINION_HOME}/minion-config.yaml" -CONFD_CONFIG_DIR="${MINION_HOME}/confd" -CONFD_BIN="/usr/bin/confd" -CONFD_CONFIG_FILE="${CONFD_CONFIG_DIR}/confd.toml" CACERTS="${MINION_HOME}/cacerts" +FEATURES_BOOT_DIR="${MINION_HOME}/etc/featuresBoot.d" +FEATURES_BOOT_TEMPLATES_DIR="${FEATURES_BOOT_DIR}/templates" export JAVA_OPTS="${JAVA_OPTS} -Xms${JAVA_MIN_MEM:-2g} -Xmx${JAVA_MAX_MEM:-2g}" # Prometheus JMX Exporter Configuration @@ -33,7 +33,7 @@ export JAVA_OPTS="${JAVA_OPTS} -Xms${JAVA_MIN_MEM:-2g} -Xmx${JAVA_MAX_MEM:-2g}" # - All other settings are optional and have sensible defaults # # Default behavior: -# - Configuration is managed via confd templates +# - Configuration is managed via environment variables, which can be set in the Dockerfile, via docker run -e, or in a docker-compose file. # - Template uses key/values from /java/agent/prom-jmx-exporter PROM_JMX_EXPORTER_ENABLED="${PROM_JMX_EXPORTER_ENABLED:-false}" # required PROM_JMX_EXPORTER_JAR="${PROM_JMX_EXPORTER_JAR:-/opt/prom-jmx-exporter/jmx_prometheus_javaagent.jar}" @@ -97,7 +97,7 @@ function updateConfig() { value=$2 file=$3 - # Handling exceptions + # Handling exceptions for specific keys [ "$key" == "class.name" ] && key="class-name" [ "$key" == "max.packet.size" ] && key="maxPacketSize" [ "$key" == "template.timeout" ] && key="templateTimeout" @@ -106,13 +106,62 @@ function updateConfig() { echo "[Configuring] '$key' in '$file'" # If config exists in file, replace it. Otherwise, append to file. - if grep -E -q "^#?$key=" "$file"; then - sed -r -i "s@^#?$key=.*@$key=$value@g" "$file" #note that no config values may contain an '@' char + if grep -E -q "^#?\s*$key\s*=" "$file"; then + sed -r -i "s@^#?\s*$key\s*=.*@$key=$value@g" "$file" #note that no config values may contain an '@' char else echo "$key=$value" >> "$file" fi } +function applyFeatureBootTemplates() { + # Clean only files managed by this script; keep baseline boot files from the image/package. + local managed_boot_files=( + "kafka-ipc.boot" + "kafka-rpc.boot" + "kafka-sink.boot" + "kafka-twin.boot" + "grpc.boot" + "disable-jms.boot" + "jaeger.boot" + "dominion-scv.boot" + ) + local boot_file + for boot_file in "${managed_boot_files[@]}"; do + rm -f "${FEATURES_BOOT_DIR}/${boot_file}" + done + + apply_template() { + local name="$1" + envsubst < "${FEATURES_BOOT_TEMPLATES_DIR}/${name}" > "${FEATURES_BOOT_DIR}/${name}" + echo "[Features] Enabled: ${name}" + } + + # IPC strategy — jms, kafka, or grpc + case "${MINION_IPC:-}" in + jms) + echo "[Features] IPC strategy set to JMS." + ;; + kafka) + apply_template "kafka-ipc.boot" + apply_template "kafka-rpc.boot" + apply_template "kafka-sink.boot" + apply_template "kafka-twin.boot" + apply_template "disable-jms.boot" + ;; + grpc) + apply_template "grpc.boot" + apply_template "disable-jms.boot" + ;; + *) + echo "[Features] No IPC strategy set via MINION_IPC, using defaults." + ;; + esac + + # Standalone optional features + [[ "${JAEGER_ENABLED:-false}" == "true" ]] && apply_template "jaeger.boot" || echo "[Features] Jaeger boot file not applied because JAEGER_ENABLED=${JAEGER_ENABLED:-false}." + [[ "${DOMINION_SCV_ENABLED:-false}" == "true" ]] && apply_template "dominion-scv.boot" || echo "[Features] Dominion SCV boot file not applied because DOMINION_SCV_ENABLED=${DOMINION_SCV_ENABLED:-false}." +} + function parseEnvironment() { # Configure additional features IFS=$'\n' @@ -132,12 +181,20 @@ function parseEnvironment() { if [[ $env_var =~ ^KAFKA_IPC_ ]]; then ipc_name=$(echo "$env_var" | cut -d_ -f3- | tr '[:upper:]' '[:lower:]' | tr _ .) updateConfig "$ipc_name" "${!env_var}" "${MINION_HOME}/etc/org.opennms.core.ipc.kafka.cfg" - if [[ "$ipc_name" == "bootstrap.servers" ]]; then - echo "opennms-core-ipc-kafka" > ${MINION_HOME}/etc/featuresBoot.d/kafka.boot - echo "!minion-jms" > ${MINION_HOME}/etc/featuresBoot.d/disable-activemq.boot - echo "!opennms-core-ipc-jms" >> ${MINION_HOME}/etc/featuresBoot.d/disable-activemq.boot - fi fi + if [[ $env_var =~ ^KAFKA_RPC_ ]]; then + ipc_name=$(echo "$env_var" | cut -d_ -f3- | tr '[:upper:]' '[:lower:]' | tr _ .) + updateConfig "$ipc_name" "${!env_var}" "${MINION_HOME}/etc/org.opennms.core.ipc.rpc.kafka.cfg" + fi + if [[ $env_var =~ ^KAFKA_SINK_ ]]; then + ipc_name=$(echo "$env_var" | cut -d_ -f3- | tr '[:upper:]' '[:lower:]' | tr _ .) + updateConfig "$ipc_name" "${!env_var}" "${MINION_HOME}/etc/org.opennms.core.ipc.sink.kafka.cfg" + fi + if [[ $env_var =~ ^KAFKA_TWIN_ ]]; then + ipc_name=$(echo "$env_var" | cut -d_ -f3- | tr '[:upper:]' '[:lower:]' | tr _ .) + updateConfig "$ipc_name" "${!env_var}" "${MINION_HOME}/etc/org.opennms.core.ipc.twin.kafka.cfg" + fi + done } @@ -156,19 +213,8 @@ initConfig() { echo "_g_\\:admingroup = group,admin,manager,viewer,systembundles,ssh" >> ${MINION_HOME}/etc/keys.properties && \ chmod 600 "${MINION_HOME}/.ssh/id_rsa" - # Expose Karaf Shell - sed -i "/^sshHost/s/=.*/= 0.0.0.0/" ${MINION_HOME}/etc/org.apache.karaf.shell.cfg - - # Expose the RMI registry and server - sed -i "/^rmiRegistryHost/s/=.*/= 0.0.0.0/" ${MINION_HOME}/etc/org.apache.karaf.management.cfg - sed -i "/^rmiServerHost/s/=.*/= 0.0.0.0/" ${MINION_HOME}/etc/org.apache.karaf.management.cfg - - # Set Minion location and connection to OpenNMS instance - echo "location = ${MINION_LOCATION}" > ${MINION_CONFIG} - echo "id = ${MINION_ID}" >> ${MINION_CONFIG} - echo "broker-url = ${OPENNMS_BROKER_URL}" >> ${MINION_CONFIG} - parseEnvironment + applyFeatureBootTemplates echo "Configured $(date)" > ${MINION_HOME}/etc/configured else @@ -186,15 +232,6 @@ applyOverlayConfig() { fi } -applyConfd() { - if [ -f "${CONFD_KEY_STORE}" ]; then - echo "Found a configuration key store, applying configuration via confd." - runConfd - else - echo "No configuration key store present, skipping confd configuration." - fi -} - applyOpennmsPropertiesD() { find "${MINION_HOME}/etc/opennms.properties.d" -name '*.properties' | while IFS= read -r filename; do echo "appending to custom.system.properties: $filename" @@ -203,30 +240,146 @@ applyOpennmsPropertiesD() { done } +printFeatureBootInventory() { + echo "[Features] Active boot files in ${FEATURES_BOOT_DIR}:" + if compgen -G "${FEATURES_BOOT_DIR}/*.boot" > /dev/null; then + find "${FEATURES_BOOT_DIR}" -maxdepth 1 -name "*.boot" -type f | sort | sed "s#^${FEATURES_BOOT_DIR}/# - #" + else + echo " - (none)" + fi +} + +printStartupDiagnostics() { + echo "[Startup] Effective minion mode and toggles:" + echo " MINION_IPC=${MINION_IPC:-}" + echo " MINION_VALIDATE_FEATURES_BOOT=${MINION_VALIDATE_FEATURES_BOOT:-false}" + echo " MINION_REPAIR_FEATURES_BOOT=${MINION_REPAIR_FEATURES_BOOT:-true}" + echo " JAEGER_ENABLED=${JAEGER_ENABLED:-false}" + echo " DOMINION_SCV_ENABLED=${DOMINION_SCV_ENABLED:-false}" + echo " GRPC_CLIENT_HOST=${IPC_GRPC_HOST:-}" + echo " GRPC_CLIENT_PORT=${IPC_GRPC_PORT:-}" + echo " KAFKA_BOOTSTRAP_SERVERS=${KAFKA_IPC_BOOTSTRAP_SERVERS:-}" + + print_cfg() { + local cfg="$1" + local path="${MINION_HOME}/etc/${cfg}" + echo "[Startup] ${cfg}:" + if [[ -f "${path}" ]]; then + sed -n '1,120p' "${path}" | sed 's/^/ /' + else + echo " (missing)" + fi + } + + print_cfg "org.opennms.minion.controller.cfg" + print_cfg "org.opennms.core.ipc.grpc.client.cfg" + print_cfg "org.opennms.core.ipc.kafka.cfg" +} + +printKarafResolutionDiagnostics() { + local ver + local root="${MINION_HOME}/system/org/opennms/karaf/opennms" + + ver="$(grep -E 'mvn:org\.opennms\.karaf/opennms/.*/xml/features' "${MINION_HOME}/etc/org.apache.karaf.features.cfg" \ + | sed -E 's#.*mvn:org\.opennms\.karaf/opennms/([^/]+)/xml/features.*#\1#' \ + | head -n1)" + + echo "[Karaf] Repository diagnostics:" + echo " configured-opennms-features-version=${ver:-}" + + if [[ -n "${ver}" && -d "${root}/${ver}" ]]; then + echo " local-repo-path=${root}/${ver}" + find "${root}/${ver}" -maxdepth 1 -type f -name "*features*.xml" | sed 's/^/ found-feature-xml=/' || true + else + echo " local-repo-path=${root}/${ver} (missing)" + fi + + echo "[Karaf] org.ops4j.pax.url.mvn.cfg:" + if [[ "${MINION_DEBUG_KARAF_RESOLUTION_DIAGNOSTICS:-false}" == "true" ]]; then + if [[ -f "${MINION_HOME}/etc/org.ops4j.pax.url.mvn.cfg" ]]; then + sed -n '1,200p' "${MINION_HOME}/etc/org.ops4j.pax.url.mvn.cfg" | sed 's/^/ /' + else + echo " (missing)" + fi + else + echo " (redacted; set MINION_DEBUG_KARAF_RESOLUTION_DIAGNOSTICS=true to print contents)" + fi +} + +validateFeatureBootComposition() { + local strict_validation="${MINION_VALIDATE_FEATURES_BOOT:-false}" + local repair_missing="${MINION_REPAIR_FEATURES_BOOT:-true}" + local missing=0 + + require_boot_file() { + local name="$1" + if [[ ! -f "${FEATURES_BOOT_DIR}/${name}" ]]; then + echo "[Features][ERROR] Missing required boot file: ${name}" + missing=1 + fi + } + + check_required_boot_files() { + missing=0 + + case "${MINION_IPC:-}" in + kafka) + require_boot_file "kafka-ipc.boot" + require_boot_file "kafka-rpc.boot" + require_boot_file "kafka-sink.boot" + require_boot_file "kafka-twin.boot" + require_boot_file "disable-jms.boot" + ;; + grpc) + require_boot_file "grpc.boot" + require_boot_file "disable-jms.boot" + ;; + jms|"") + # Default/package-provided feature boots are expected to cover JMS. + ;; + *) + echo "[Features][WARN] Unknown MINION_IPC='${MINION_IPC}', skipping strategy-specific checks." + ;; + esac + + [[ "${JAEGER_ENABLED:-false}" == "true" ]] && require_boot_file "jaeger.boot" || echo "[Features][INFO] Jaeger boot file not required because JAEGER_ENABLED=${JAEGER_ENABLED:-false}." + [[ "${DOMINION_SCV_ENABLED:-false}" == "true" ]] && require_boot_file "dominion-scv.boot" || echo "[Features][INFO] Dominion SCV boot file not required because DOMINION_SCV_ENABLED=${DOMINION_SCV_ENABLED:-false}." + } + + printFeatureBootInventory + + check_required_boot_files + + if [[ "$missing" -ne 0 && "${repair_missing}" == "true" ]]; then + echo "[Features][WARN] Missing boot files detected; attempting auto-repair from templates." + applyFeatureBootTemplates + printFeatureBootInventory + check_required_boot_files + fi + + if [[ "$missing" -ne 0 ]]; then + if [[ "${strict_validation}" != "true" ]]; then + echo "[Features][WARN] Boot file validation found missing files; continuing because MINION_VALIDATE_FEATURES_BOOT=${strict_validation}." + return 0 + fi + echo "[Features][ERROR] Boot file validation failed; refusing to start with incomplete feature composition." + return 1 + fi + + echo "[Features] Boot file validation passed." +} + start() { export KARAF_EXEC="exec" cd ${MINION_HOME}/bin exec ./karaf server } -runConfd() { - # Create any directories that confd might write to - while IFS= read -r dir; do - local dirToCreate="$MINION_HOME"/"$dir" - echo "Creating $dirToCreate so confd can write to it" - mkdir -p "$dirToCreate" - done < "$CONFD_CONFIG_DIR"/directories - - "$CONFD_BIN" -onetime -config-file "$CONFD_CONFIG_FILE" -} - # Order of precedence is (later overwrites former): # 1. Config set via environment variable -# 2. Config set via overlayed keystore (confd) -# 3. Config set via direct file overlay +# 2. Config set via direct file overlay configure() { initConfig - applyConfd applyOpennmsPropertiesD applyOverlayConfig if [[ "$JACOCO_AGENT_ENABLED" -gt 0 ]]; then @@ -239,6 +392,13 @@ configure() { done < "$MINION_PROCESS_ENV_CFG" export JAVA_OPTS="$CUSTOM_JAVA_OPTS $JAVA_OPTS" fi + if [[ ${MINION_DEBUG_STARTUP_DIAGNOSTICS:-false} == "true" ]]; then + printStartupDiagnostics + fi + if [[ "${MINION_DEBUG_KARAF_RESOLUTION_DIAGNOSTICS:-false}" == "true" ]]; then + printKarafResolutionDiagnostics + fi + validateFeatureBootComposition if [[ -f "$MINION_SERVER_CERTS_CFG" ]]; then # cacerts is a symlink to a file, so *do not* put /. on the target rsync --out-format="%n %C" "$JAVA_HOME/lib/security/cacerts" "$CACERTS" diff --git a/opennms-container/minion/container-fs/etc/custom.system.properties b/opennms-container/minion/container-fs/etc/custom.system.properties new file mode 100644 index 000000000000..669cc6a0a9c2 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/custom.system.properties @@ -0,0 +1,40 @@ +################################################################################ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +# +# topic prefix for OpenNMS events +# +org.opennms.instance.id=${env:OPENNMS_INSTANCE_ID:-OpenNMS} + +# +# All the values specified here will override the default values given +# in config.properties. +# + +karaf.systemBundlesStartLevel=50 + +# +# You can place any customized configuration here. +# +org.osgi.framework.system.packages.extra=sun.nio.ch, \ + sun.misc, \ + sun.net.dns, \ + sun.reflect, \ + sun.security.ssl, \ + sun.security.x509 diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/disable-jms.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/disable-jms.boot new file mode 100644 index 000000000000..224b6359bced --- /dev/null +++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/disable-jms.boot @@ -0,0 +1,2 @@ +!minion-jms +!opennms-core-ipc-jms diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/dominion-scv.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/dominion-scv.boot new file mode 100644 index 000000000000..d7cf7ddabca4 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/dominion-scv.boot @@ -0,0 +1,2 @@ +!scv-jceks-impl +dominion-secure-credentials-vault \ No newline at end of file diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/grpc.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/grpc.boot new file mode 100644 index 000000000000..500a0e6f6c22 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/grpc.boot @@ -0,0 +1,3 @@ +!opennms-core-ipc-jms +!minion-jms +opennms-core-ipc-grpc-client diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/jaeger.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/jaeger.boot new file mode 100644 index 000000000000..9bb3287b6b65 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/jaeger.boot @@ -0,0 +1 @@ +opennms-core-tracing-jaeger diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-ipc.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-ipc.boot new file mode 100644 index 000000000000..4ba4a4664aef --- /dev/null +++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-ipc.boot @@ -0,0 +1,3 @@ +!minion-jms +!opennms-core-ipc-jms +opennms-core-ipc-kafka \ No newline at end of file diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-rpc.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-rpc.boot new file mode 100644 index 000000000000..3e60771f8eb1 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-rpc.boot @@ -0,0 +1,2 @@ +!opennms-core-ipc-rpc-jms +opennms-core-ipc-rpc-kafka diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-sink.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-sink.boot new file mode 100644 index 000000000000..f2f4cc854b53 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-sink.boot @@ -0,0 +1,2 @@ +!opennms-core-ipc-sink-camel +opennms-core-ipc-sink-kafka diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-twin.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-twin.boot new file mode 100644 index 000000000000..8e46f5f0a356 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-twin.boot @@ -0,0 +1,2 @@ +!opennms-core-ipc-twin-jms +opennms-core-ipc-twin-kafka diff --git a/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.management.cfg.tmpl b/opennms-container/minion/container-fs/etc/org.apache.karaf.management.cfg similarity index 68% rename from opennms-container/minion/container-fs/confd/templates/org.apache.karaf.management.cfg.tmpl rename to opennms-container/minion/container-fs/etc/org.apache.karaf.management.cfg index 422ca5cd5e3b..4cb8f83e5706 100644 --- a/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.management.cfg.tmpl +++ b/opennms-container/minion/container-fs/etc/org.apache.karaf.management.cfg @@ -1,35 +1,25 @@ -{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that -are used by this template. */ -}} -# -# DON'T EDIT THIS FILE :: GENERATED WITH CONFD -# - # # The properties in this file define the configuration of Apache Karaf's JMX Management # -{{$karafRmiPath := "/karaf/management/rmi" -}} -{{$karafRmiRegistryPath := (print $karafRmiPath "/registry") -}} -{{$karafRmiServerPath := (print $karafRmiPath "/server") -}} - # # Port number for RMI registry connection # -rmiRegistryPort = {{getv (print $karafRmiRegistryPath "/port") "1299"}} +rmiRegistryPort = ${env:KARAF_MGMT_RMI_REGISTRY_PORT:-1299} # # Host for RMI registry # -rmiRegistryHost = {{getv (print $karafRmiRegistryPath "/host") "127.0.0.1"}} +rmiRegistryHost = ${env:KARAF_MGMT_RMI_REGISTRY_HOST:-0.0.0.0} # # Port number for RMI server connection # -rmiServerPort = {{getv (print $karafRmiServerPath "/port") "45444"}} +rmiServerPort = ${env:KARAF_MGMT_RMI_SERVER_PORT:-45444} # # Host for RMI server # -rmiServerHost = {{getv (print $karafRmiServerPath "/host") "127.0.0.1"}} +rmiServerHost = ${env:KARAF_MGMT_RMI_SERVER_HOST:-0.0.0.0} # # Name of the JAAS realm used for authentication @@ -109,4 +99,4 @@ objectName = connector:name=rmi # # Locate an existing MBean server if possible (usefull when Karaf is embedded) # -#locateExistingMBeanServerIfPossible = true \ No newline at end of file +#locateExistingMBeanServerIfPossible = true diff --git a/opennms-container/minion/container-fs/etc/org.apache.karaf.shell.cfg b/opennms-container/minion/container-fs/etc/org.apache.karaf.shell.cfg new file mode 100644 index 000000000000..b64b053e8768 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.apache.karaf.shell.cfg @@ -0,0 +1,5 @@ +sshPort=${env:KARAF_SSH_PORT:-8201} +sshHost=${env:KARAF_SSH_HOST:-0.0.0.0} +hostKeyFormat=PEM +sshRealm=karaf +hostKey=${karaf.etc}/host.key diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.grpc.client.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.grpc.client.cfg new file mode 100644 index 000000000000..abef5035c011 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.grpc.client.cfg @@ -0,0 +1,2 @@ +host = ${env:IPC_GRPC_HOST:-horizon} +port = ${env:IPC_GRPC_PORT:-8990} diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.kafka.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.kafka.cfg new file mode 100644 index 000000000000..50d019d5fd18 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.kafka.cfg @@ -0,0 +1 @@ +bootstrap.servers=${env:KAFKA_IPC_BOOTSTRAP_SERVERS:-kafka:29092} diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.rpc.kafka.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.rpc.kafka.cfg new file mode 100644 index 000000000000..8eb700868612 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.rpc.kafka.cfg @@ -0,0 +1,2 @@ +acks = ${env:KAFKA_RPC_ACKS:-1} +bootstrap.servers = ${env:KAFKA_RPC_BOOTSTRAP_SERVERS:-kafka:29092} diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.kafka.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.kafka.cfg new file mode 100644 index 000000000000..17ffac29d23f --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.kafka.cfg @@ -0,0 +1,2 @@ +acks = ${env:KAFKA_SINK_ACKS:-1} +bootstrap.servers = ${env:KAFKA_SINK_BOOTSTRAP_SERVERS:-kafka:29092} diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.offheap.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.offheap.cfg new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.twin.kafka.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.twin.kafka.cfg new file mode 100644 index 000000000000..6c8b550f52b6 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.twin.kafka.cfg @@ -0,0 +1,2 @@ +acks = ${env:KAFKA_TWIN_ACKS:-1} +bootstrap.servers = ${env:KAFKA_TWIN_BOOTSTRAP_SERVERS:-kafka:29092} diff --git a/opennms-container/minion/container-fs/etc/org.opennms.features.minion.dominion.grpc.cfg b/opennms-container/minion/container-fs/etc/org.opennms.features.minion.dominion.grpc.cfg new file mode 100644 index 000000000000..1545dec9f8d0 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.features.minion.dominion.grpc.cfg @@ -0,0 +1,3 @@ +host = ${env:DOMINION_GRPC_HOST:-horizon} +port = ${env:DOMINION_GRPC_PORT:-8990} +clientSecret = ${env:DOMINION_GRPC_CLIENT_SECRET:-} diff --git a/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-single-port-flows.cfg b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-single-port-flows.cfg new file mode 100644 index 000000000000..dffc8de986e9 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-single-port-flows.cfg @@ -0,0 +1,14 @@ +name = Single-Port-Flow-Listener +class-name = org.opennms.netmgt.telemetry.listeners.UdpListener +parameters.port = ${env:FLOWS_PORT:-50000} +parsers.0.name = Netflow-5 +parsers.0.class-name = org.opennms.netmgt.telemetry.protocols.netflow.parser.Netflow5UdpParser +parsers.0.parameters.maxClockSkew = 300 +parsers.1.name = Netflow-9 +parsers.1.class-name = org.opennms.netmgt.telemetry.protocols.netflow.parser.Netflow9UdpParser +parsers.1.parameters.maxClockSkew = 300 +parsers.2.name = IPFIX +parsers.2.class-name = org.opennms.netmgt.telemetry.protocols.netflow.parser.IpfixUdpParser +parsers.2.parameters.maxClockSkew = 300 +parsers.3.name = SFlow +parsers.3.class-name = org.opennms.netmgt.telemetry.protocols.sflow.parser.SFlowUdpParser \ No newline at end of file diff --git a/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50001-jti.cfg b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50001-jti.cfg new file mode 100644 index 000000000000..a17e3f1e3895 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50001-jti.cfg @@ -0,0 +1,5 @@ +name = JTI-Listener +class-name = org.opennms.netmgt.telemetry.listeners.UdpListener +parameters.port = ${env:JTI_PORT:-50001} +parsers.0.name = JTI +parsers.0.class-name = org.opennms.netmgt.telemetry.protocols.common.parser.ForwardParser diff --git a/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50002-nxos.cfg b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50002-nxos.cfg new file mode 100644 index 000000000000..9d19bd2b7b0b --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50002-nxos.cfg @@ -0,0 +1,5 @@ +name = NXOS-Listener +class-name = org.opennms.netmgt.telemetry.listeners.UdpListener +parameters.port = ${env:NXOS_PORT:-50002} +parsers.0.name = NXOS +parsers.0.class-name = org.opennms.netmgt.telemetry.protocols.common.parser.ForwardParser diff --git a/opennms-container/minion/container-fs/etc/org.opennms.minion.controller.cfg b/opennms-container/minion/container-fs/etc/org.opennms.minion.controller.cfg new file mode 100644 index 000000000000..a7881cf31e53 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.minion.controller.cfg @@ -0,0 +1,3 @@ +location = ${env:MINION_LOCATION:-MINION} +id = ${env:MINION_ID:-MINION-01} +broker-url = ${env:OPENNMS_BROKER_URL:-failover:tcp://horizon:61616} diff --git a/opennms-container/minion/container-fs/etc/org.opennms.netmgt.syslog.cfg b/opennms-container/minion/container-fs/etc/org.opennms.netmgt.syslog.cfg new file mode 100644 index 000000000000..8206ef6c1975 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.netmgt.syslog.cfg @@ -0,0 +1,3 @@ +syslog.listen.interface = ${env:MINION_SYSLOG_LISTEN_INTERFACE:-0.0.0.0} +syslog.listen.port = ${env:MINION_SYSLOG_LISTEN_PORT:-1514} +syslog.useAddressFromVarbind = true \ No newline at end of file diff --git a/opennms-container/minion/container-fs/etc/org.opennms.netmgt.trapd.cfg b/opennms-container/minion/container-fs/etc/org.opennms.netmgt.trapd.cfg new file mode 100644 index 000000000000..64498e5e1f62 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.opennms.netmgt.trapd.cfg @@ -0,0 +1,3 @@ +trapd.listen.interface = ${env:MINION_TRAPD_LISTEN_INTERFACE:-0.0.0.0} +trapd.listen.port = ${env:MINION_TRAPD_LISTEN_PORT:-1162} +trapd.useAddressFromVarbind = true diff --git a/opennms-container/minion/container-fs/etc/org.ops4j.pax.web.cfg b/opennms-container/minion/container-fs/etc/org.ops4j.pax.web.cfg new file mode 100644 index 000000000000..f4ed213a4715 --- /dev/null +++ b/opennms-container/minion/container-fs/etc/org.ops4j.pax.web.cfg @@ -0,0 +1,4 @@ +org.osgi.service.http.port=${env:JETTY_PORT:-8181} +org.ops4j.pax.web.listening.addresses=${env:JETTY_HOST:-0.0.0.0} +javax.servlet.context.tempdir=${karaf.data}/pax-web-jsp +org.ops4j.pax.web.config.file=${karaf.etc}/jetty.xml diff --git a/smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java b/smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java index fe0b67b9a76c..13f3afb03bb7 100644 --- a/smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java +++ b/smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java @@ -123,6 +123,10 @@ public MinionContainer(final StackModel model, final MinionProfile profile) { .withEnv("OPENNMS_BROKER_USER", "admin") .withEnv("OPENNMS_BROKER_PASS", "admin") .withEnv("JACOCO_AGENT_ENABLED", "1") + .withEnv("MINION_VALIDATE_FEATURES_BOOT", "false") + .withEnv("MINION_REPAIR_FEATURES_BOOT", "true") + .withEnv("MINION_LOCATION", profile.getLocation()) + .withEnv("MINION_ID", profile.getId()) .withEnv("JAVA_OPTS", "-Xms2g -Xmx2g -Djava.security.egd=file:/dev/./urandom") .withNetwork(Network.SHARED) .withNetworkAliases(ALIAS) @@ -138,80 +142,44 @@ public MinionContainer(final StackModel model, final MinionProfile profile) { for (final Map.Entry entry : profile.getLegacyConfiguration().entrySet()) { addEnv(entry.getKey(), entry.getValue()); } - } else { - addFileSystemBind(writeMinionConfig(profile).toString(), - "/opt/minion/minion-config.yaml", BindMode.READ_ONLY, SelinuxContext.SINGLE); } if (profile.isJvmDebuggingEnabled()) { withEnv("KARAF_DEBUG", "true"); withEnv("JAVA_DEBUG_PORT", "" + MINION_DEBUG_PORT); } - } - - private Path writeMinionConfig(MinionProfile profile) { - try { - final Path minionConfig = createTempDirectory(ALIAS).toAbsolutePath().resolve("minion-config.yaml"); - writeMinionConfigYaml(minionConfig, profile); - return minionConfig; - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private void writeMinionConfigYaml(Path minionConfigYaml, MinionProfile profile) throws IOException { - // Copy over the default configuration from the class-path - FileUtils.copyFile(new File(MountableFile.forClasspathResource("minion-config/minion-config.yaml").getFilesystemPath()), minionConfigYaml.toFile()); - - // Allow other users to read the file - OverlayUtils.setOverlayPermissions(minionConfigYaml); - - String config = "{\n" + - "\t\"location\": \"" + profile.getLocation() + "\",\n" + - "\t\"id\": \"" + profile.getId() + "\",\n" + - "\t\"broker-url\": \"failover:tcp://" + OpenNMSContainer.ALIAS + ":61616\"\n" + - "}"; - OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(config, Map.class)); - if (!Strings.isNullOrEmpty(profile.getDominionGrpcScvClientSecret())) { - final String scvConfig = "{\"scv\": {\"provider\": \"dominion\"}}"; - OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(scvConfig, Map.class)); - - final String gprcConfig = "{\"dominion\": { \"grpc\": { \"client-secret\":\"" + profile.getDominionGrpcScvClientSecret() + "\"}}}"; - OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(gprcConfig, Map.class)); - } + withEnv("OPENNMS_BROKER_URL", "failover:tcp://" + OpenNMSContainer.ALIAS + ":61616"); if (IpcStrategy.KAFKA.equals(model.getIpcStrategy())) { - String kafkaIpc = "{\n" + - "\t\"ipc\": {\n" + - "\t\t\"kafka\": {\n" + - "\t\t\t\"bootstrap.servers\": \""+ OpenNMSContainer.KAFKA_ALIAS +":9092\",\n" + - "\t\t\t\"compression.type\": \""+ model.getKafkaCompressionStrategy().getCodec() +"\"\n" + - "\t\t}\n" + - "\t}\n" + - "}"; - OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(kafkaIpc, Map.class)); + withEnv("MINION_IPC", "kafka"); + withEnv("KAFKA_IPC_BOOTSTRAP_SERVERS", OpenNMSContainer.KAFKA_ALIAS + ":9092"); + withEnv("KAFKA_RPC_BOOTSTRAP_SERVERS", OpenNMSContainer.KAFKA_ALIAS + ":9092"); + withEnv("KAFKA_SINK_BOOTSTRAP_SERVERS", OpenNMSContainer.KAFKA_ALIAS + ":9092"); + withEnv("KAFKA_TWIN_BOOTSTRAP_SERVERS", OpenNMSContainer.KAFKA_ALIAS + ":9092"); + if (model.getKafkaCompressionStrategy() != null) { + withEnv("KAFKA_IPC_COMPRESSION_TYPE", model.getKafkaCompressionStrategy().getCodec()); + withEnv("KAFKA_SINK_COMPRESSION_TYPE", model.getKafkaCompressionStrategy().getCodec()); + withEnv("KAFKA_TWIN_COMPRESSION_TYPE", model.getKafkaCompressionStrategy().getCodec()); + } } else if (IpcStrategy.GRPC.equals(model.getIpcStrategy())) { - String grpc = "{\n" + - "\t\"ipc\": {\n" + - "\t\t\"grpc\": {\n" + - "\t\t\t\"host\": \"" + OpenNMSContainer.ALIAS + "\",\n" + - "\t\t\t\"port\": 8990\n" + - "\t\t}\n" + - "\t}\n" + - "}"; - OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(grpc, Map.class)); + withEnv("MINION_IPC", "grpc"); + withEnv("IPC_GRPC_HOST", OpenNMSContainer.ALIAS); + withEnv("IPC_GRPC_PORT", "8990"); + } else if (IpcStrategy.JMS.equals(model.getIpcStrategy())) { + withEnv("MINION_IPC", "jms"); } if (model.isJaegerEnabled()) { - String jaeger = "{\n" + - "\t\"system\": {\n" + - "\t\t\"properties\": {\n" + - "\t\t\t\"JAEGER_ENDPOINT\": \"" + JaegerContainer.getThriftHttpURL() + "\"\n" + - "\t\t}\n" + - "\t}\n" + - "}"; - OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(jaeger, Map.class)); + withEnv("JAEGER_ENABLED", "true"); + withEnv("JAEGER_ENDPOINT", JaegerContainer.getThriftHttpURL()); + } + + if (!Strings.isNullOrEmpty(profile.getDominionGrpcScvClientSecret())) { + withEnv("DOMINION_SCV_ENABLED", "true"); + withEnv("DOMINION_GRPC_HOST", OpenNMSContainer.ALIAS); + withEnv("DOMINION_GRPC_PORT", "8990"); + withEnv("DOMINION_GRPC_CLIENT_SECRET", profile.getDominionGrpcScvClientSecret()); } } diff --git a/smoke-test/src/main/resources/minion-overlay/org.opennms.netmgt.trapd.cfg b/smoke-test/src/main/resources/minion-overlay/org.opennms.netmgt.trapd.cfg new file mode 100644 index 000000000000..d6f922354e2d --- /dev/null +++ b/smoke-test/src/main/resources/minion-overlay/org.opennms.netmgt.trapd.cfg @@ -0,0 +1,3 @@ +trapd.listen.interface = 0.0.0.0 +trapd.listen.port = 1162 +trapd.useAddressFromVarbind = true