netbox-tenant

Netbox installation Centos 8

Netbox е супер инструмент, служещ да ни помогне в управлението и документирането на компютърни мрежи. Първоначално замислена от екипа за мрежово инженерство в DigitalOcean, NetBox е разработена специално, за да отговори на нуждите на мрежовите и инфраструктурни инженери. В процеса на работа не винаги съм се натъквал на добре документирано хардуерно/софтуерно съдържание при клиент, което почти винаги е забавяло процесът на работа. Попадах няколко пъти на въпросният инструмент, но не намирах време да го разгледам. Е оказа се за мойте нужди, направо превъзходен. Първите тестове бяха в контейнер на локалната ми машина, но го исках на виртуална машина. Самият софтуер е написан на python + django, за база от данни се използва postgresql, с много приятен(изчистен) и динамичен уеб интерфейс. Може да се направи интеграция с активна директория.

В публикацията ще опиша, по какъв начин съм го инсталирал във виртуална среда.

Машината е с минимален хардуерен ресурс 2vCPU, 4 GiB ram, 50 HDD. Върху нея ще инсталирам CentOS8 от netinstall. Нищо не обичайно или сложно. Само съм му забранил FirewallD и SELinux.

Следваща стъпка, документацията на Netbox.

Първо се инсталира PostgreSQL. Текущо в хранилището на Centos8 е версия 10.14. След инсталация се инициализира, извършва се корекция в конфигурацията на pgsql за да работи с md5, услугата се стартира, разрешава за автоматично стартиране със зареждане на операционната система и създаване на база от данни, потребител/парола за нуждите на инструмента.

dnf install postgresql postgresql-server
postgresql-setup --initdb

Редакция на конфигурационният файл на postgresql: ident става md5

vim /var/lib/pgsql/data/pg_hba.conf
host all all 127.0.0.1/32 md5 
host all all ::1/128 md5

Стартиране и добавяне в auto-start:

systemctl enable postgresql
systemctl start postgresql

Създаване на база от данни, потребител и парола към потребителят:

sudo -i -u postgres psql

postgres=# CREATE DATABASE netbox;
CREATE DATABASE
postgres=# CREATE USER netbox WITH PASSWORD 'strongpassword';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
GRANT
postgres=# \q

Инсталиране на Redis, добавяне в auto-start и стартиране на самият процес.

systemctl enable redis
systemctl start redis
systemctl status -l redis

#test
redis-cli ping

Инсталиране на системни пакети

dnf install -y gcc python38 python38-devel python38-setuptools libxml2-devel libxslt-devel libffi-devel openssl-devel redhat-rpm-config git
pip3 install --upgrade pip

Изтегляне на NetBox. В документацията им използват, като работна директория /opt/netbox, в примера ще го използвам и аз.

mkdir -p /opt/netbox/ && cd /opt/netbox/
git clone -b master https://github.com/netbox-community/netbox.git .

Добавяне на системен профил за netbox. Ще конфигурираме услугите WSGI и HTTP да работят под този акаунт. Също така ще присвоим това потребителско право на собственост върху медийната директория. Това гарантира, че NetBox ще може да запазва качени файлове.

groupadd --system netbox 
adduser --system -g netbox netbox
chown --recursive netbox /opt/netbox/netbox/media/

Конфигуриране на Netbox. В директорията /opt/netbox/netbox/netbox/ има примерен конфигурационен файл(configuration.example.py), който ще го копираме в същатата директория но с друго име: configuration.py. С любимото Vim го отварям и извършвам лека корекция, настройка на ALLOWED_HOSTS(списък с валидните имена на хостове и IP адреси, чрез които може да се достигне до този сървър), данни за базата от данни, данни за redis сървъра.

cd /opt/netbox/netbox/netbox/
cp configuration.example.py configuration.py
vim configuration.py

ALLOWED_HOSTS = ['netbox.devops.lab, '172.16.16.10']
DATABASE = {
'NAME': 'netbox', # Името на DB-то, което създадохме
'USER': 'netbox', # потребителско име за db
'PASSWORD': 'strongpassword', # парола
'HOST': 'localhost', # db server
'PORT': '', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age (seconds)
}

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,
}
}

SECRET_KEY=?

Трябва да се генерира secret key, като от netbox са написали инструмент за генерирането му.

python3 ../generate_secret_key.py

Създаване на административен потребил за достъп до Netbox.

source /opt/netbox/venv/bin/activate
(venv) # cd /opt/netbox/netbox
(venv) # python3 manage.py createsuperuser
Username: admin
Email address: admin@example.com
Password:
Password (again):
Superuser created successfully.

Тест на приложението:

python3 manage.py runserver 0.0.0.0:8000 --insecure

След това се свържете с името или IP на сървъра (както е дефинирано в ALLOWED_HOSTS) на порт 8000; например http://172.16.16.10:8000/ . Трябва да бъдете посрещнати с началната страница на NetBox.

Настройка на systemd

Ще използваме systemd, за да контролираме както gunicorn, така и фоновия работен процес на NetBox. Първо копирайте contrib/netbox.service и contrib/netbox-rq.service в /etc/systemd/system/ директорията и презаредете systemd dameon:

cp contrib/*.service /etc/systemd/system/
systemctl daemon-reload

systemctl start netbox netbox-rq
systemctl enable netbox netbox-rq

До тук добре, но е хубаво вместо да го отварям на порт 8000 да го зареждам директно с името на домейна. За целта ще инсталираме един apache уеб сървър.

yum install httpd -y
systemctl enable httpd
systemctl start httpd

cp /opt/netbox/contrib/apache.conf /etc/httpd/sites-available/netbox.conf
cp /opt/netbox/contrib/apache.conf /etc/httpd/sites-enabled/netbox.conf

yum install mod_proxy_html -y
service httpd restart

После в любим уеб браузър се отваря въпросното IP или ако има DNS запис.

Успех!

Едно мнение за “Netbox installation Centos 8”

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

This site uses Akismet to reduce spam. Learn how your comment data is processed.