Files
monitoring/netdisco/setup.sh
T
mrcharles 1fae951f5d chore: initial import from KNEL/PFVCluster@041d311 [#769]
Split per O&M lane work order. Full history: KNEL/PFVCluster.
shellcheck debt fixed in librenms-agent (quoting, arithmetic, backticks);
fixes upstream ntp-server.sh bug: input_wakeups reported PACKETSENDFAILURES
instead of INPUTWAKEUPS. mysql.sh (PHP-in-.sh) exempt per house rule.

https://projects.knownelement.com/issues/769#note-4152
2026-09-03 21:38:32 -05:00

120 lines
3.0 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
# Deploy NetDisco on tsys-librenms
# Part of OAM platform [#337]
# L2 network discovery and mapping via SNMP
echo "=== Setting up NetDisco ==="
mkdir -p /opt/oam/netdisco/{config,data,pgdata}
# Write deployment config
cat > /opt/oam/netdisco/config/deployment.yml <<'YMLEOF'
# NetDisco deployment configuration [#337]
# SNMP community: kn3lmgmt (v2c)
database:
host: netdisco-postgresql
dbname: netdisco
user: netdisco
pass: netdisco
snmp_auth:
- tag: default_v2c
community: kn3lmgmt
read: true
write: false
version: 2
- tag: default_v1
community: kn3lmgmt
read: true
write: false
version: 1
schedule:
discoverall:
first: 60
every: 3600
macwalk:
first: 120
every: 900
arpwalk:
first: 150
every: 900
nbtwalk:
first: 180
every: 900
node_freshness: 0
YMLEOF
# Write docker-compose
cat > /opt/oam/netdisco/docker-compose.yml <<'DCEOF'
services:
netdisco-postgresql:
image: netdisco/netdisco:2.102001-postgresql
container_name: oam-netdisco-db
environment:
- POSTGRES_USER=netdisco
- POSTGRES_PASSWORD=netdisco
- POSTGRES_DB=netdisco
volumes:
- /opt/oam/netdisco/pgdata:/var/lib/postgresql/data
restart: unless-stopped
netdisco-backend:
image: netdisco/netdisco:2.102001-backend
container_name: oam-netdisco-backend
depends_on:
- netdisco-postgresql
environment:
- NETDISCO_DB_HOST=netdisco-postgresql
- NETDISCO_DB_NAME=netdisco
- NETDISCO_DB_USER=netdisco
- NETDISCO_DB_PASS=netdisco
volumes:
- /opt/oam/netdisco/config/deployment.yml:/home/netdisco/environments/deployment.yml
- /opt/oam/netdisco/data:/home/netdisco/netdisco-sqlite
restart: unless-stopped
netdisco-web:
image: netdisco/netdisco:2.102001-web
container_name: oam-netdisco-web
depends_on:
- netdisco-postgresql
- netdisco-backend
environment:
- NETDISCO_DB_HOST=netdisco-postgresql
- NETDISCO_DB_NAME=netdisco
- NETDISCO_DB_USER=netdisco
- NETDISCO_DB_PASS=netdisco
ports:
- "8082:5000"
volumes:
- /opt/oam/netdisco/config/deployment.yml:/home/netdisco/environments/deployment.yml
restart: unless-stopped
DCEOF
echo "=== Pulling NetDisco images ==="
cd /opt/oam/netdisco && docker compose pull 2>&1
echo "=== Starting NetDisco stack ==="
cd /opt/oam/netdisco && docker compose up -d 2>&1
echo "=== Waiting for PostgreSQL to initialize (30s) ==="
sleep 30
echo "=== Container status ==="
docker ps --filter name=oam-netdisco --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
echo "=== Adding devices to NetDisco ==="
for dev in pfv-r5-core-01.knel.net pfv-r3-tor-mgmt-01.knel.net pfv-r3-tor-stor-01.knel.net pfv-r6-mgmt-01.knel.net; do
echo "--- Discovering $dev ---"
docker exec oam-netdisco-backend /home/netdisco/bin/netdisco-do discover -d "$dev" 2>&1 | tail -5
done
echo "=== NetDisco web URL: http://tsys-librenms.knel.net:8082 ==="
echo "=== Done ==="