Files
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

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 ==="