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 для документирования вашей сетевой инфраструктуры.