NetBox Netwerk Documentatie en Beheer te installeren op Ubuntu 18.04 LTS

NetBox is een gratis en opensource web-applicatie software die gebruikt kan worden om computernetwerken te beheren en te documenteren. Het is speciaal ontworpen om IP adressen en datacenter infrastructuur via een web browser te beheren. NetBox is geschreven in het Django Python raamwerk en gebruikt PostgreSQL voor de database. Met NetBox kun je gemakkelijk Virtuele machines en clusters, Gegevenscircuits, Netwerk, console, en stroomverbindingen beheren en documenteren vanaf de centrale plaats.

In deze handleiding leggen we uit hoe je NetBox op Ubuntu 18.04 server kunt installeren.

Vereisten

  • Een server waarop Ubuntu 18.04 draait.
  • Een root wachtwoord is ingesteld op je server.

Aan de slag

Werk eerst de pakketten van je systeem bij naar de nieuwste versie met het volgende commando:

apt-get update -y
apt-get upgrade -y

Zodra alle pakketten bijgewerkt zijn, herstart je je systeem om alle configuratie veranderingen toe te passen.

Vervolgens moet je de vereiste afhankelijkheden installeren om NetBox te kunnen draaien. Je kunt ze allemaal installeren met het volgende commando:

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

Als alle afhankelijkheden geïnstalleerd zijn, kun je verder gaan met de volgende stap.

Installeer en configureer PostgreSQL

Vervolgens moet je PostgreSQL op je server installeren. Standaard is de nieuwste versie van PostgreSQL niet beschikbaar in de Ubuntu 18.04 standaard repository. Je zult dus de PostgreSQL repository aan je systeem moeten toevoegen.

Download eerst de GPG sleutel en voeg hem toe met het volgende commando:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

Voeg vervolgens de repository toe met het volgende commando:

nano /etc/apt/sources.list.d/postgres.list

Voeg de volgende regel toe:

deb http://apt.postgresql.org/pub/repos/apt/ xanial-pgdg main

Sla het bestand op en sluit het. Werk dan de repository bij en installeer PostgreSQL met het volgende commando:

apt-get update -y
apt-get install postgresql postgresql-contrib -y

Eenmaal geïnstalleerd, controleer de status van PostgreSQL met het volgende commando:

systemctl status postgresql

Je zou de volgende uitvoer moeten zien:

? postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2019-08-07 07:00:51 UTC; 23s ago
 Main PID: 13552 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 1098)
   CGroup: /system.slice/postgresql.service

Aug 07 07:00:50 hitesh systemd[1]: Starting PostgreSQL RDBMS...
Aug 07 07:00:51 hitesh systemd[1]: Started PostgreSQL RDBMS.

Vervolgens moet je een database en een gebruiker voor NetBox aanmaken. Log eerst in op PostgreSQL shell met het volgende commando:

su - postgres
[email protected]:~$ psql

Uitvoer:

psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1))
Type "help" for help.

Maak vervolgens een database en gebruiker voor NetBox met het volgende commando:

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

Verleen vervolgens alle rechten aan de NetBox met het volgende commando:

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

Verlaat tenslotte de PostgreSQL shell met het volgende commando:

postgres=#exit

Als je klaar bent, kun je verder gaan met de volgende stap.

Installeer en configureer NetBox

Je kunt de nieuwste versie van NetBox downloaden naar de map /opt met het volgende commando:

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

Verander vervolgens de directory in netbox en genereer Django SECRET Key:

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

Je zou de gegenereerde sleutel moeten zien in de volgende uitvoer:

+XHR3o&7K6isFk^DLc2%[email protected](jwN#tfGbV=O1hgMU$

Hernoem vervolgens het standaard configuratiebestand met het volgende commando:

mv configuration.example.py configuration.py

Open vervolgens het configuratiebestand en definieer je databankgegevens en geheime sleutel:

nano configuration.py

Breng de volgende veranderingen aan:

#Replace your-server-ip with your server IP address:
# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['your-server-ip']

# PostgreSQL database configuration.
DATABASE = {
    'NAME': 'netbox',         # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'password',           # PostgreSQL password
    'HOST': 'localhost',      # Database server
    'PORT': '',               # Database port (leave blank for default)
}
SECRET_KEY = '+XHR3o&7K6isFk^DLc2%[email protected](jwN#tfGbV=O1hgMU$'

Sla het bestand op en sluit het als je klaar bent.

Installeer vervolgens alle afhankelijkheden die NetBox nodig heeft met het volgende commando:

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

Eenmaal geïnstalleerd, migreer je de database met het volgende commando:

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

Eenmaal succesvol gemigreerd zou je de volgende uitvoer moeten zien:

  Applying secrets.0004_tags... OK
  Applying secrets.0005_change_logging... OK
  Applying secrets.0006_custom_tag_models... OK
  Applying ipam.0021_vrf_ordering... OK
  Applying ipam.0022_tags... OK
  Applying ipam.0023_change_logging... OK
  Applying ipam.0024_vrf_allow_null_rd... OK
  Applying ipam.0025_custom_tag_models... OK
  Applying dcim.0067_device_type_remove_qualifiers... OK
  Applying dcim.0068_rack_new_fields... OK
  Applying dcim.0069_deprecate_nullablecharfield... OK
  Applying dcim.0070_custom_tag_models... OK
  Applying extras.0020_tag_data... OK
  Applying extras.0021_add_color_comments_changelog_to_tag... OK
  Applying dcim.0071_device_components_add_description... OK
  Applying dcim.0072_powerfeeds... OK
  Applying dcim.0073_interface_form_factor_to_type... OK
  Applying extras.0022_custom_links... OK
  Applying extras.0023_fix_tag_sequences... OK
  Applying ipam.0026_prefix_ordering_vrf_nulls_first... OK
  Applying ipam.0027_ipaddress_add_dns_name... OK
  Applying sessions.0001_initial... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying users.0001_api_tokens_squashed_0002_unicode_literals... OK
  Applying users.0003_token_permissions... OK

Vervolgens moet je een beheerdersaccount voor NetBox aanmaken. Je kunt dat doen met het volgende commando:

python3 manage.py createsuperuser

Geef je admin gebruikersnaam en wachtwoord en druk op Enter, je zou de volgende uitvoer moeten zien:

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

Verplaats vervolgens statische bestanden en laad initiële gegevens met het volgende commando:

python3 manage.py collectstatic
python3 manage.py loaddata initial_data

Installeer en configureer Gunicorn voor NetBox

Vervolgens moet je Gunicorn voor NetBox installeren. Je kunt het installeren met pip commando zoals hieronder getoond:

pip3 install gunicorn

Maak vervolgens een Gunicorn configuratiebestand voor NetBox met het volgende commando:

nano /opt/netbox/gunicorn_config.py

Voeg de volgende regels toe:

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

Sla het bestand op en sluit het als je klaar bent.

Configureer Supervisor voor Netbox

Vervolgens moet je Supervisor instellen om de NetBox dienst te beheren. Je kunt dat doen met het volgende commando:

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

Voeg de volgende regels toe:

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

Sla het bestand op en sluit het af, herstart dan de Supervisor service en zet hem aan om te starten na het herstarten van het systeem met het volgende commando:

systemctl restart supervisor
systemctl enable supervisor

Je kunt de Supervisor dienst ook verifiëren met het volgende commando:

systemctl status supervisor

Uitvoer:

? supervisor.service - Supervisor process control system for UNIX
   Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-08-07 07:13:26 UTC; 8s ago
     Docs: http://supervisord.org
  Process: 15013 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
 Main PID: 15015 (supervisord)
    Tasks: 5 (limit: 1098)
   CGroup: /system.slice/supervisor.service
           ??15015 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
           ??15037 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15042 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15043 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15044 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi

Aug 07 07:13:26 hitesh systemd[1]: Started Supervisor process control system for UNIX.
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,087 CRIT Supervisor running as root (no user in config file)
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,089 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during parsing
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 INFO RPC interface 'supervisor' initialized
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 CRIT Server 'unix_http_server' running without any HTTP authentication check
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,118 INFO supervisord started with pid 15015
Aug 07 07:13:28 hitesh supervisord[15015]: 2019-08-07 07:13:28,123 INFO spawned: 'netbox' with pid 15037
Aug 07 07:13:29 hitesh supervisord[15015]: 2019-08-07 07:13:29,610 INFO success: netbox entered RUNNING state, process has st

Configureer Nginx voor NetBox

Vervolgens moet je Nginx instellen om NetBox te benaderen via poort 80. Maak daartoe een virtual host configuratiebestand aan met het volgende commando:

nano /etc/nginx/sites-available/netbox

Voeg de volgende regels toe:

server {
    listen 80;
    server_name your-domain-name;
    client_max_body_size 25m;

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

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

Sla het bestand op en sluit het. Schakel dan de virtuele host in met het volgende commando:

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

Herstart tenslotte Nginx service om alle configuratiewijzigingen toe te passen met het volgende commando:

systemctl restart nginx

Ga naar de NetBox Web Interface

NetBox is nu geïnstalleerd en geconfigureerd, het is tijd om de NetBox web interface te openen.

Open je web browser en typ de URL http://your-domain.com. Je wordt doorverwezen naar de volgende pagina:

Netbox Interface

Klik nu op de Log in knop in de rechter bovenhoek. Je zou de volgende pagina moeten zien:

Netbox aanmelding

Geef nu je admin gebruikersnaam en wachtwoord op, en klik dan op de Log In knop. Je zou nu het NetBox standaard dashboard moeten zien op de volgende pagina:

NetBox Dashboard

Gefeliciteerd! je hebt NetBox met succes geïnstalleerd en geconfigureerd op de Ubuntu 18.04 server. Je kunt nu je Netwerk en IP adres beheren en documenteren vanaf de centrale plaats. Voel je vrij me te vragen als je vragen hebt.