Как установить NetBox на Ubuntu 18.04 LTS

by itisgood

NetBox – это веб-приложение IPAM / DCIM с открытым исходным кодом, используемое для управления и документирования компьютерных сетей и управления IP-адресами.

Первоначально он был задуман командой сетевой инженерии в DigitalOcean.

Netbox включает в себя следующие аспекты управления сетью:

  • Управление IP-адресами (IPAM) – IP-сети и адреса, VRF и VLAN
  • Стеллажи для оборудования – организованы по группам и сайтам
  • Устройства – типы устройств и где они установлены
  • Соединения – сетевые, консольные и силовые соединения между устройствами
  • Виртуализация – виртуальные машины и кластеры
  • Цепи передачи данных. Цепи и поставщики дальней связи
  • Секреты – Зашифрованное хранение конфиденциальных учетных данных

Установка NetBox на Ubuntu 18.04 LTS

В этом разделе будут обсуждаться реальные шаги, которые необходимо выполнить, чтобы установить NetBox на вашем сервере Ubuntu 18.04 LTS.

Следуйте им в порядке появления, хотя вы можете пропустить часть, если у вас уже установлено программное обеспечение, которое потребуется.

Шаг 1: Установите необходимые зависимости

Начните с установки всех зависимых приложений, необходимых для запуска NetBox в Ubuntu 18.04 LTS.

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

Шаг 2: Установите и настройте сервер базы данных PostgreSQL

NetBox использует сервер базы данных PostgreSQL для хранения своих данных.

Так что установите и настройте его на Ubuntu 18.04, используя наше предыдущее руководство

Установка Postgresql на Debian / Ubuntu

Создайте базу данных и пользователя для NetBox.

$ sudo -u postgres psql

CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'StrongPassword';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\q

Подтвердите, что вы можете войти в базу данных как пользователь netbox.

# psql -U netbox -h localhost -W
Password: 
psql (11.1 (Ubuntu 11.1-1.pgdg18.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
netbox=>

Шаг 3: Установите и настройте Netbox

Перейдите в каталог /opt/

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

Создать файл конфигурации

cd netbox/netbox/netbox/
sudo cp configuration.example.py configuration.py

Отредактируйте файл конфигурации и задайте разрешенные данные для входа в хост и базу данных

# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['192.168.121.31']

# PostgreSQL database configuration.
DATABASE = {
    'NAME': 'netbox',                           # Database name
    'USER': 'netbox',                           # PostgreSQL username
    'PASSWORD': 'StrongPassword',               # PostgreSQL password
    'HOST': 'localhost',                        # Database server
    'PORT': '',                                 # Database port (leave blank for default)
}

Замените 192.168.121.31 на IP-адрес вашего сервера Netbox.

Сгенерируйте секретный ключ Django:

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

Затем установите ключ в файле /opt/netbox/netbox/netbox/configuration.py

Пример:

SECRET_KEY = '30m&hqd@09h2i5hro=^l8wqtjw2$!3j%=f2!zh_sey+13jg%3$'

Установить зависимости Netbox

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

Перенос данных базы данных:

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

Пример вывода для миграции базы данных.

Applying circuits.0014_circuittermination_description... OK
  Applying dcim.0067_device_type_remove_qualifiers... OK
  Applying dcim.0068_rack_new_fields... OK
  Applying tenancy.0004_tags... OK
  Applying tenancy.0005_change_logging... OK
  Applying extras.0001_initial_squashed_0010_customfield_filter_logic... OK
  Applying extras.0011_django2... OK
  Applying extras.0012_webhooks... OK
  Applying extras.0013_objectchange... OK
  Applying extras.0014_configcontexts... OK
  Applying extras.0015_remove_useraction... OK
  Applying extras.0016_exporttemplate_add_cable... OK
  Applying ipam.0021_vrf_ordering... OK
  Applying ipam.0022_tags... OK
  Applying ipam.0023_change_logging... OK
  Applying secrets.0001_initial_squashed_0003_unicode_literals... OK
  Applying secrets.0004_tags... OK
  Applying secrets.0005_change_logging... OK
  Applying sessions.0001_initial... OK
  Applying users.0001_api_tokens_squashed_0002_unicode_literals... OK
  Applying users.0003_token_permissions... OK
  Applying virtualization.0002_virtualmachine_add_status_squashed_0004_virtualmachine_add_role... OK
  Applying virtualization.0005_django2... OK
  Applying virtualization.0006_tags... OK
  Applying virtualization.0007_change_logging... OK
  Applying virtualization.0008_virtualmachine_local_context_data... OK

Создайте администратора:

$ sudo python3 manage.py createsuperuser

Username (leave blank to use 'root'): admin
Email address: admin@example.com
Password: <Enter Password>
Password (again): <Re-enter Password>
Superuser created successfully.

Переместите статические файлы

$ cd /opt/netbox/netbox
$ sudo python3 manage.py collectstatic
280 static files copied to '/opt/netbox/netbox/static'.

Загрузите исходные данные

$ sudo python3 manage.py loaddata initial_data
Installed 53 object(s) from 5 fixture(s)

Установите и настройте gunicorn

Установите gunicorn с помощью pip3:

$ sudo pip3 install gunicorn
Collecting gunicorn
Downloading https://files.pythonhosted.org/packages/8c/da/b8dd8deb741bff556db53902d4706774c8e1e67265f69528c14c003644e6/gunicorn-19.9.0-py2.py3-none-any.whl (112kB)     100% |████████████████████████████████| 122kB 737kB/s
Installing collected packages: gunicorn
Successfully installed gunicorn-19.9.0

Настройте gunicorn для Netbox

cat<<EOF | sudo tee /opt/netbox/gunicorn_config.py
command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = '192.168.121.31:8085'
workers = 3
user = 'www-data'
EOF

Создайте файл конфигурации супервизора

cat <<EOF | sudo tee /etc/supervisor/conf.d/netbox.conf
[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data
EOF

Перезапустите и включите службу supervisord для запуска при загрузке.

sudo systemctl restart supervisor.service
sudo systemctl enable supervisor.service

Статус должен показывать работу с выводом netbox.

$ systemctl status  supervisor
 supervisor.service - Supervisor process control system for UNIX
 Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
 Active: active (running) since Sun 2019-01-13 06:28:55 PST; 4s ago
  Docs: http://supervisord.org
 Process: 28799 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
 Main PID: 28830 (supervisord)
 Tasks: 5 (limit: 1110)
 CGroup: /system.slice/supervisor.service
        |-28830 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
        |-28850 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
        |-28855 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
        |-28857 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
        `-28859 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi 
 Jan 13 06:28:55 ubuntu-01 systemd[1]: Started Supervisor process control system for UNIX.
 Jan 13 06:28:55 ubuntu-01 supervisord[28830]: 2019-01-13 06:28:55,572 CRIT Supervisor running as root (no user in config file)
 Jan 13 06:28:55 ubuntu-01 supervisord[28830]: 2019-01-13 06:28:55,572 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during parsing
 Jan 13 06:28:55 ubuntu-01 supervisord[28830]: 2019-01-13 06:28:55,580 INFO RPC interface 'supervisor' initialized
 Jan 13 06:28:55 ubuntu-01 supervisord[28830]: 2019-01-13 06:28:55,580 CRIT Server 'unix_http_server' running without any HTTP authentication checking
 Jan 13 06:28:55 ubuntu-01 supervisord[28830]: 2019-01-13 06:28:55,580 INFO supervisord started with pid 28830
 Jan 13 06:28:56 ubuntu-01 supervisord[28830]: 2019-01-13 06:28:56,583 INFO spawned: 'netbox' with pid 28850
 Jan 13 06:28:57 ubuntu-01 supervisord[28830]: 2019-01-13 06:28:57,871 INFO success: netbox entered RUNNING state, process has stayed up for > than 1 se

Настройте веб-сервер Nginx

Давайте настроим веб-сервер Nginx, чтобы помочь нам получить доступ к Netbox через имя домена, а не указывать IP-адрес и порт.

Создайте новый файл конфигурации Nginx для Netbox.

sudo vim /etc/nginx/conf.d/netbox.conf

С данными ниже.

server {
    listen 80;
    server_name netbox.example.com;
    client_max_body_size 25m;

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

    location / {
        proxy_pass http://192.168.121.31:8001;
    }
}

Проверьте синтаксис конфигурации Nginx и перезапустите его сервис

$ sudo  nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Если все в порядке, перезапустите сервис Nginx

sudo systemctl restart nginx

Доступ к Netbox Web UI

Откройте веб-браузер по умолчанию и откройте имя хоста сервера Netbox.

Чтобы внести изменения, войдите администратором, созданным ранее.

Наслаждайтесь использованием Netbox для документирования вашей сетевой инфраструктуры.

 

You may also like

Leave a Comment