Wie installiert man das NetBox Network Documentation and Management Tool auf Ubuntu 20.04 LTS

Netbox ist ein kostenloses und leistungsstarkes Tool zur Verwaltung von IP-Adressen (IPAM) und Rechenzentrumsinfrastrukturen (DCIM). Es wird zur Speicherung von Informationen über Ihre Netzwerke, VMs, Inventare und vieles mehr verwendet. Es wurde ursprünglich vom Netzwerk-Engineering-Team bei DigitalOcean entwickelt. Dieses Tool ist im Django-Python-Framework geschrieben und stützt sich auf die PostgreSQL-Datenbank. Sein Ziel ist es, als eine domänenspezifische Quelle der Wahrheit für Netzwerkoperationen zu fungieren.

In diesem Tutorial werden wir erklären, wie Netbox mit Nginx als Reverse-Proxy unter Ubuntu 20.04 installiert wird.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Ein Root-Passwort ist auf Ihrem Server konfiguriert.

Erste Schritte

Bevor Sie beginnen, müssen Sie einige von Netbox benötigte Abhängigkeiten installieren. Sie können sie alle installieren, indem Sie den folgenden Befehl ausführen:

apt-get install nginx git gcc supervisor python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev -y

Wenn alle Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.

Installieren und Konfigurieren der PostgreSQL-Datenbank

Netbox verlässt sich bei der Datenspeicherung auf die PostgreSQL-Datenbank. Sie können es mit dem folgenden Befehl installieren:

apt-get install postgresql postgresql-contrib -y

Sobald der PostgreSQL installiert ist, melden Sie sich mit folgendem Befehl am PostgreSQL an:

su - postgres
[email protected]:~$ psql

Sie sollten die folgende Ausgabe erhalten:

psql (12.2 (Ubuntu 12.2-4))
Type "help" for help.

Erstellen Sie als nächstes eine Datenbank und einen Benutzer für Netbox mit dem folgenden Befehl:

postgres=# CREATE DATABASE netbox;
postgres=# CREATE USER netbox WITH PASSWORD 'password';

Gewähren Sie anschließend alle Privilegien für die Netbox-Datenbank mit dem folgenden Befehl:

postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;

Beenden Sie anschließend die PostgreSQL-Shell mit folgendem Befehl:

postgres=# exit
[email protected]:~$ exit

Installieren und Konfigurieren von NetBox

Ändern Sie zunächst das Verzeichnis in das Verzeichnis /opt und laden Sie die neueste Version von Netbox aus dem Git-Hub-Repository mit folgendem Befehl herunter:

cd /opt/
git clone -b master https://github.com/digitalocean/netbox.git

Als nächstes erstellen Sie einen symbolischen Link von Python-Binärdateien mit dem folgenden Befehl:

ln -s /usr/bin/python3 /usr/bin/python

Als nächstes ändern Sie das Verzeichnis in /opt/netbox/netbox/ und generieren Django SECRET Key, indem Sie den folgenden Befehl ausführen:

cd /opt/netbox/netbox/
./generate_secret_key.py

Sie sollten die folgende Ausgabe erhalten:

[email protected])eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z

Als nächstes ändern Sie das Verzeichnis in Netbox und benennen die Beispielkonfigurationsdatei um:

cd netbox
mv configuration.example.py configuration.py

Als nächstes bearbeiten Sie die Netbox-Konfigurationsdatei und definieren Ihre Datenbank, Ihren geheimen Schlüssel und die zulässigen Hosts:

nano configuration.py

Nehmen Sie die folgenden Änderungen vor:

ALLOWED_HOSTS = ['your-server-ip']

# PostgreSQL database configuration. See the Django documentation for a complete list of available parameters:
#   https://docs.djangoproject.com/en/stable/ref/settings/#databases
DATABASE = {
    'NAME': 'netbox',         # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'password',           # PostgreSQL password
    'HOST': 'localhost',      # Database server
    'PORT': '',               # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,      # Max database connection age
}

SECRET_KEY = '[email protected])eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z'

Speichern und schließen Sie die Datei und installieren Sie dann alle Python-Abhängigkeiten mit dem folgenden Befehl:

pip3 install -r /opt/netbox/requirements.txt

Als nächstes migrieren Sie die Datenbank mit dem folgenden Befehl:

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

Erstellen Sie anschließend einen administrativen Netbox-Benutzer mit folgendem Befehl:

python3 manage.py createsuperuser

Sie werden gebeten, Benutzername und Passwort wie unten gezeigt anzugeben:

Username (leave blank to use 'root'): netboxadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

Als nächstes sammeln Sie die statische Datei mit folgendem Befehl:

python3 manage.py collectstatic

Sie sollten die folgende Ausgabe sehen:

976 static files copied to '/opt/netbox/netbox/static'.

Installieren und Konfigurieren von Gunicorn

Netbox ist eine Django-basierte Anwendung. Sie müssen also Gunicorn in Ihrem System installieren. Sie können es installieren, indem Sie den folgenden Befehl ausführen:

pip3 install gunicorn

Erstellen Sie nach der Installation von Gunicorn eine neue Gunicorn-Konfigurationsdatei für Netbox mit dem folgenden Befehl:

nano /opt/netbox/gunicorn_config.py

Fügen Sie die folgenden Zeilen hinzu:

command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = 'your-server-ip:8001'
workers = 3
user = 'www-data'

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Installieren und Konfigurieren des Supervisors

Supervisor ist ein Client/Server-System, mit dem Sie den NetBox-Dienst überwachen und steuern können. Mit dem folgenden Befehl können Sie eine neue Supervisor-Konfigurationsdatei für Netbox erstellen:

nano /etc/supervisor/conf.d/netbox.conf

Fügen Sie die folgenden Zeilen hinzu:

[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den Supervisor-Dienst mit dem folgenden Befehl neu:

systemctl restart supervisor

Sie können auch den Status des Supervisor-Dienstes mit folgendem Befehl verifizieren:

systemctl status supervisor

Sie sollten die folgende Ausgabe erhalten:

? supervisor.service - Supervisor process control system for UNIX
     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-05-30 05:49:08 UTC; 14s ago
       Docs: http://supervisord.org
   Main PID: 550606 (supervisord)
      Tasks: 5 (limit: 4691)
     Memory: 184.3M
     CGroup: /system.slice/supervisor.service
             ??550606 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
             ??550626 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
             ??550628 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
             ??550629 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
             ??550630 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi

May 30 05:49:08 ubuntu2004 systemd[1]: Started Supervisor process control system for UNIX.
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,664 CRIT Supervisor is running as root.  Privileges were not dropped becau>
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,664 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during p>
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,671 INFO RPC interface 'supervisor' initialized
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,671 CRIT Server 'unix_http_server' running without any HTTP authentication>
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,672 INFO supervisord started with pid 550606
May 30 05:49:09 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:09,676 INFO spawned: 'netbox' with pid 550626
May 30 05:49:11 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:11,060 INFO success: netbox entered RUNNING state, process has stayed up for

Konfigurieren Sie Nginx für NetBox

Es ist eine gute Idee, Nginx als Reverse-Proxy zu konfigurieren, um auf die Netbox auf Port 80 zuzugreifen. Sie können eine neue Konfiguration des virtuellen Nginx-Hosts mit folgendem Befehl erstellen:

nano /etc/nginx/sites-available/netbox.conf

Fügen Sie die folgenden Zeilen hinzu:

server {
    listen 80;
    server_name your-server-ip;
    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://your-server-ip:8001;
    }
}

Speichern und schließen Sie die Datei. Erstellen Sie dann einen symbolischen Link auf das Verzeichnis /etc/nginx/sites-enabled/:

ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/

Überprüfen Sie dann Nginx mit folgendem Befehl auf Syntaxfehler:

nginx -t

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie schließlich den Nginx-Dienst neu, um die Änderungen zu implementieren.

systemctl restart nginx

Sie können die Nginx auch mit dem folgenden Befehl überprüfen:

systemctl status nginx

Sie sollten die folgende Ausgabe erhalten:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-05-30 22:28:13 EST; 4min 14s ago
  Process: 984 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 982 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 980 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 985 (nginx)
    Tasks: 3 (limit: 25028)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??985 nginx: master process /usr/sbin/nginx
           ??986 nginx: worker process
           ??987 nginx: worker process

May 30 21:28:12 ubuntu2004 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 30 21:28:12 ubuntu2004 nginx[982]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 30 21:28:12 ubuntu2004 nginx[982]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 30 21:28:13 ubuntu2004 systemd[1]: Started The nginx HTTP and reverse proxy server.

An diesem Punkt ist der Nginx-Webserver so konfiguriert, dass er Netbox auf Port 80 bedient. Sie können nun auf die Webschnittstelle von Netbox zugreifen.

Zugriff auf die Webschnittstelle von Netbox

Öffnen Sie Ihren Webbrowser und besuchen Sie die URL http://your-server-ip. Sie werden auf die folgende Seite umgeleitet:

Netbox-Schnittstelle

Klicken Sie auf die Schaltfläche Anmelden. Auf dem folgenden Bildschirm sollten Sie die Netbox-Anmeldeseite sehen:

Netbox-Anmeldung

Geben Sie Ihren Netbox-Administrator-Benutzernamen und Ihr Passwort ein und klicken Sie auf die Anmeldeschaltfläche. Auf der folgenden Seite sollten Sie das Standard-Dashboard von Netbox sehen:

Netbox Verwaltungs-Dashboard

Schlussfolgerung

In diesem Handbuch erfahren Sie, wie Sie Netbox unter Ubuntu 20.04 mit Nginx installieren. Sie können nun damit beginnen, Ihre Netzwerkinfrastruktur zu dokumentieren. Weitere Informationen finden Sie in der offiziellen Dokumentation zu Netbox. Sie können mich gebührenfrei fragen, wenn Sie Fragen haben.

Das könnte Dich auch interessieren …