Netbox installieren unter Ubuntu 22.04

Netbox installieren unter Ubuntu 22.04

Netbox ist ein Datacenter Infrastructure Management System (DCIM), es ermöglicht, die digitale Infrastruktur auf eine umfassende und effiziente Weise zu verwalten. Netbox bietet eine Vielzahl von Funktionen, die es Administratoren ermöglichen, ihre Rechenzentren optimal zu organisieren und zu überwachen.

Mit Netbox können Sie nicht nur Ihre physische Hardware wie Server, Switches und Router verwalten, sondern auch virtuelle Ressourcen wie virtuelle Maschinen und Container. Es ermöglicht Ihnen, eine umfassende Darstellung Ihrer gesamten IT-Infrastruktur zu erstellen und detaillierte Informationen über jede Ressource zu erfassen.

Postgres

Postgres, auch bekannt als PostgreSQL ist die Datenbankmanagementsoftware, die in Netbox eingesetzt wird. Als Herzstück der Datenverwaltung in Netbox ermöglicht PostgreSQL die effiziente Organisation und Abfrage von Daten über Server, Netzwerkgeräte, virtuelle Maschinen und mehr. Zunächst wird also das Datenbankmanagementsystem installiert.

sudo apt install -y postgresql

Nach der Installation von Postgres meldet man sich mit dem Benutzer postgres an.

sudo -u postgres psql

Danach wird die Datenbank netbox angelegt. Ebenso wird der Benutzer netbox angelegt und diesem alle Rechte auf die Datenbank eingeräumt. Bei WITH PASSWORD 'J5brHrAXFLQSif0K'; Muss ein eigenes Passwort gesetzt werden.

CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K';
ALTER DATABASE netbox OWNER TO netbox;
\connect netbox;
GRANT CREATE ON SCHEMA public TO netbox;

Redis

Für das Cashing wird Redis benötigt. Hier werden oft benötigte Daten zwischen gesichert, damit nicht immer eine Abfrage gestellt werden muss.

sudo apt install -y redis-server

Python

Da Netbox auf Python basiert werden hier auch die passenden Pakete benötigt.

sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev

Netbox

Zunächst wird das Paket für Netbox heruntergeladen. Die Version muss selber eingegeben werden. vX.Y.Z.gz muss getauscht werden. In den Releases auf Github findet man die Versionsnummern:

Releases · netbox-community/netbox
The premier source of truth powering network automation. Open source under Apache 2. Public demo: https://demo.netbox.dev - netbox-community/netbox
sudo wget https://github.com/netbox-community/netbox/archive/refs/tags/vX.Y.Z.tar.gz
sudo tar -xzf vX.Y.Z.tar.gz -C /opt
sudo ln -s /opt/netbox-X.Y.Z/ /opt/netbox

Dann erstellt man einen Nutzer für Netbox und gibt diesem Nutzer die Rechte auf die benötigten Verzeichnisse.

sudo adduser --system --group netbox
sudo chown --recursive netbox /opt/netbox/netbox/media/
sudo chown --recursive netbox /opt/netbox/netbox/reports/
sudo chown --recursive netbox /opt/netbox/netbox/scripts/

Damit man die Konfigurationsdatei nicht selber schreiben muss, kopiert man die Beispielkonfiguration in eine neue Datei und entfernt das _example. Es muss auch ein Secret-Key erstellt werden, welcher später in die Konfigurationsdatei eingefügt wird.

cd /opt/netbox/netbox/netbox/
sudo cp configuration_example.py configuration.py
python3 ../generate_secret_key.py

Folgende Zeilen müssen ausgetauscht werden in der Konfigurationsdatei. Mit ALLOW_HOST können Domains oder IP Adressen angegeben werden worüber Netbox erreichbar sein soll. Bei der Datenbank, sowie Redis müssen die Passwörter geändert werden und wenn es andere Benutzernamen oder Datenbanknamen diese auch. Bei SECRET_KEY wird nun der zuvor erstellte Secret-Key eingepflegt.

#Alle Domains erlauben
ALLOWED_HOSTS = ['*']

#Datebank Passwort eingeben
DATABASE = {
    'NAME': 'netbox',               # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'J5brHrAXFLQSif0K', # PostgreSQL password
    'HOST': 'localhost',            # Database server
    'PORT': '',                     # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,            # Max database connection age (seconds)
}

#Redis Config
REDIS = {
    'tasks': {
        'HOST': 'localhost',      # Redis server
        'PORT': 6379,             # Redis port
        'PASSWORD': '',           # Redis password (optional)
        'DATABASE': 0,            # Database ID
        'SSL': False,             # Use SSL (optional)
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': '',
        'DATABASE': 1,            # Unique ID for second database
        'SSL': False,
    }
}

Das Upgrade Script übernimmt die Änderung in der Konfigurationsdatei und erstellt dann die benötigten Dateien.

sudo /opt/netbox/upgrade.sh

Im weiteren wird ein Super User für Netbox erstellt. Dieser wird auch für den Login benötigt. Dafür wird das virtuelle Umgebung in Python aktiviert, damit man das Script ausführen kann.

source /opt/netbox/venv/bin/activate

Dann welchselt man in das Netbox Verzeichnis und führt hier das Manager Script aus.

cd /opt/netbox/netbox
python3 manage.py createsuperuser

Im weiteren wird ein Systemlink zu den Cronjob erstellt.

sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

Gunicorn und Systemd erstellen

Das Python Script Gunicorn wird nun in das Stammverzeichnis kopiert. Ebenso die Service-Datei für den Service, damit dieser über systemctl ansprechbar ist. Danach wird der Service gestartet und aktiviert, damit er bei einem Neustart mitstartet.

sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq

Nginx

Nun wird nur noch Nginx als Porxy installiert. Netbox hat diese Datei schon angelegt, daher muss diese nur in das Nginx Verzeichnis kopiert werden.

sudo apt install -y nginx
sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-available/netbox
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/netbox
sudo systemctl restart nginx

Danach sollte man Nginx neu starten und aktivieren.

systemctl restart nginx
systemctl enable nginx

Es kann es losgehen, Netbox zu Konfigurieren.

Empfehlung

Diese Video´s von Viatto, haben mir geholfen, besser in der Thematik Netbox zu arbeiten.

The Core of Everything Your First Netbox Site
Click here for the full Netbox course: https://bit.ly/KITS-NetBox We are here to show you the best way to configure NetBox!NetBox is like a series of lego pi…