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:
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.