Deploy OAM monitoring stack on tsys-librenms VM:
- Smokeping: fully operational (port 8081, 16 targets, FPing probing)
- NetDisco: backend+DB+PostgreSQL running (port 8082), all 4 Dell switches
discovered via SNMP. Web UI blocked by Dancer session_cookie_key config
issue — needs interactive netdisco-deploy run
- Oxidized: container running (port 8083), deployed with placeholder
credentials — needs switch login/password to start config backups
- UNPoller: config + docker-compose ready, blocked on Docker image
availability (image moved from all common registries)
- Weathermap: not yet started (deferred to separate commit)
All configs use DNS names only (no IP literals). All scripts pass
shellcheck via check-rules.sh.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
91 lines
2.3 KiB
Bash
91 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Deploy Oxidized on tsys-librenms
|
|
# Part of OAM platform [#337]
|
|
# Network device config backup/versioning
|
|
|
|
echo "=== Setting up Oxidized ==="
|
|
|
|
mkdir -p /opt/oam/oxidized/{config,git-repos,logs}
|
|
|
|
# Config file
|
|
cat > /opt/oam/oxidized/config/config <<'CFGEOF'
|
|
---
|
|
username: 'CHANGE_ME'
|
|
password: 'CHANGE_ME'
|
|
model: powerconnect
|
|
interval: 3600
|
|
use_syslog: false
|
|
debug: false
|
|
threads: 30
|
|
timeout: 20
|
|
retries: 3
|
|
prompt: !ruby/regexp /([\w.@-]+[#>]\s?)n/
|
|
rest: 0.0.0.0:8888
|
|
next_adds_job: false
|
|
pid: /home/oxidized/.config/oxidized/pid
|
|
log: /home/oxidized/.config/oxidized/logs/log
|
|
snmp: false
|
|
resolve_dns: true
|
|
interval: 3600
|
|
output:
|
|
default: git
|
|
git:
|
|
user: oxidized
|
|
email: oxidized@tsys-librenms.knel.net
|
|
repo: /home/oxidized/.config/oxidized/git-repos
|
|
source:
|
|
default: csv
|
|
csv:
|
|
file: /home/oxidized/.config/oxidized/router.db
|
|
delimiter: !ruby/regexp /:/
|
|
map:
|
|
name: 0
|
|
model: 1
|
|
username: 2
|
|
password: 3
|
|
gpg: false
|
|
CFGEOF
|
|
|
|
# Router DB (device list)
|
|
cat > /opt/oam/oxidized/config/router.db <<'DBEOF'
|
|
pfv-r5-core-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
|
pfv-r3-tor-mgmt-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
|
pfv-r3-tor-stor-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
|
pfv-r6-mgmt-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
|
DBEOF
|
|
|
|
# Docker compose
|
|
cat > /opt/oam/oxidized/docker-compose.yml <<'DCEOF'
|
|
services:
|
|
oxidized:
|
|
image: oxidized/oxidized:0.30.1
|
|
container_name: oam-oxidized
|
|
environment:
|
|
- TZ=America/Chicago
|
|
volumes:
|
|
- /opt/oam/oxidized/config:/home/oxidized/.config/oxidized
|
|
ports:
|
|
- "8083:8888"
|
|
restart: unless-stopped
|
|
DCEOF
|
|
|
|
echo "=== Pulling Oxidized image ==="
|
|
cd /opt/oam/oxidized && timeout 120 docker compose pull 2>&1
|
|
|
|
echo "=== Starting Oxidized ==="
|
|
cd /opt/oam/oxidized && docker compose up -d 2>&1
|
|
|
|
echo "=== Status ==="
|
|
docker ps --filter name=oam-oxidized --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
|
|
|
echo ""
|
|
echo "=== IMPORTANT ==="
|
|
echo "Oxidized deployed with placeholder credentials (CHANGE_ME)."
|
|
echo "Update /opt/oam/oxidized/config/router.db with real switch credentials"
|
|
echo "(username:password per device) to enable config backups."
|
|
echo "Then restart: cd /opt/oam/oxidized && docker compose restart"
|
|
echo ""
|
|
echo "=== Oxidized REST API: http://tsys-librenms.knel.net:8083 ==="
|