NetBox – це програмне забезпечення для моделювання ресурсів інфраструктури (IRM), призначене для автоматизації мереж та проектування інфраструктури. Спочатку він був створений командою DigitalOcean, а тепер став проектом з відкритим вихідним кодом, випущеним під ліцензією Apache 2. NetBox був створений у веб-інфраструктурі Python Django з PostgreSQL як база даних за замовчуванням, і встановлення NetBox дуже схоже на інші веб-додатки Python Django.
NetBox допомагає вам керувати вашою інфраструктурою, яка включає:
- DCIM (управління інфраструктурою центру обробки даних)
- IPAM (управління IP-адресами)
- Ланцюги даних
- Підключення (мережа, консоль та живлення)
- Стійки для обладнання
- Віртуалізація
У цій статті ви дізнаєтесь, як встановити NetBox Infrastructure Resource Modeling на сервер Debian 11. Ця стаття включає базову установку бази даних PostgreSQL, сервера Redis і базове налаштування Apache2 як зворотний проксі-сервер. Зрештою, у вас буде запущений і працюючий NetBox на вашому Debian 11 з включеним HTTPS/SSL поверх нього.
Попередні вимоги
Для виконання цього посібника вам знадобляться такі вимоги:
- Один екземпляр сервера Debian 11.
- Користувач без повноважень root із привілеями root/administrator.
- Ім’я домену вказувало на ваш сервер Debian.
Установка PostgreSQL-сервера
NetBox підтримує лише PostgreSQL як базу даних за замовчуванням. Отже, ви встановите PostgreSQL на сервер Debian. Потім створіть нову базу даних та користувача для встановлення NetBox.
Для поточної версії NetBox потрібно, як мінімум, PostgreSQL версії 10 або вище. У Debian 11 репозиторій надає сервер PostgreSQL v13 за промовчанням.
Для початку запустіть наведену нижче команду apt, щоб оновити репозиторій Debian та індекс пакету.
sudo apt update
Тепер установіть сервер PostgreSQL за допомогою наступної команди apt. Введіть Y для підтвердження та натисніть ENTER, після чого розпочнеться встановлення PostgreSQL.
sudo apt install postgresql postgresql-common
Тепер, коли ви закінчили встановлення PostgreSQL, запустіть наступну команду systemctl, щоб перевірити службу PostgreSQL. Ви повинні побачити, що PostgreSQL увімкнений і буде запускатися автоматично під час завантаження системи. І поточний статус служби PostgreSQL працює.
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
Далі ви створите нову базу даних PostgreSQL та користувача для Nextbox. Для цього ви повинні увійти до консолі PostgreSQL.
Виконайте наступну команду, щоб увійти до консолі PostgreSQL, використовуючи роль «postgres».
sudo -u postgres psql
Тепер виконайте такі запити в консолі PostgreSQL, щоб створити нову базу даних та користувача. У цьому прикладі ми створимо нову базу даних з ім’ям “netboxdb” та користувача PostgreSQL “netbox” з паролем “NetBoxRocks”.
CREATE DATABASE netboxdb; CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks'; GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;
Тепер натисніть Ctrl+d, щоб вийти з консолі PostgreSQL, або введіть \q для виходу.
Щоб перевірити базу даних та користувача, виконайте наведену нижче команду. Це дозволить підключитися до оболонки PostgreSQL, використовуючи користувача “netbox” до бази даних “netboxdb” на сервері PostgreSQL.
При запиті пароля бази даних введіть пароль NetBoxRocks.
sudo -u postgres psql --username netbox --password --host localhost netboxdb
Після входу в консоль PostgreSQL та базу даних «netboxdb» виконайте наступний запит, щоб перевірити поточне з’єднання. І ви повинні побачити, що ви підключені до бази даних PostgreSQL “netboxdb” з користувачем “netbox”.
\conninfo
Нажмите «Ctrl+d», чтобы выйти из консоли PostgreSQL, или введите «\q» для выхода.
Установка Redis-сервера
Redis — це база даних, що зберігається в пам’яті, «ключ-значення», яка буде використовуватися NetBox для кешування і створення черг. Тепер ви встановите сервер Redis на свій сервер Debian.
На момент написання цієї статті для останньої версії NetBox був потрібний Redis версії 4.0 або вище. Останній репозиторій Debian 11 пропонує Redis v5.6.
Щоб розпочати інсталяцію Redis, виконайте наведену нижче команду apt. Введіть Y, щоб підтвердити інсталяцію, і натисніть ENTER, після чого почнеться встановлення Redis.
sudo apt install redis-server
Після завершення інсталяції виконайте такі команди systemctl, щоб перевірити службу Redis. Ви повинні побачити, що служба Redis увімкнена і буде запускатися автоматично під час завантаження системи. І поточний статус служби Redis працює.
sudo systemctl is-enabled redis-server sudo systemctl status redis-server
Установка Redis за промовчанням виконується без автентифікації. Для виробничого середовища рекомендується використовувати аутентифікацію на сервері Redis. Щоб увімкнути аутентифікацію Redis, змініть конфігураційний файл «/etc/redis/redis.conf».
Виконайте наведену нижче команду, щоб відредагувати файл конфігурації Redis «/etc/redis/redis.conf».
sudo nano /etc/redis/redis.conf
Розкоментуйте параметр “requirepass” і введіть пароль для автентифікації Redis. У цьому прикладі ми будемо використовувати пароль “RedisPasswordNetBox”.
requirepass RedisPasswordNetBox
Коли ви закінчите, збережіть та закрийте файл.
Тепер виконайте наведену нижче команду, щоб перезапустити службу Redis і застосувати нові зміни.
sudo systemctl restart redis-server
Щоб перевірити аутентифікацію Redi, виконайте наведену нижче команду redis-cli, щоб підключитися до консолі Redis.
redis-cli
Тепер виконайте наступну команду, щоб перевірити аутентифікацію Redis. Якщо пароль правильний, ви побачите вихідне повідомлення, таке як «ОК».
AUTH RedisPasswordNetBox
Тепер натисніть Ctrl+d, щоб вийти з консолі Redis.
Встановлення NetBox IRM
NetBox — це веб-додаток з відкритим вихідним кодом, написаний на платформі Python Django. Таким чином установка NetBox дуже схожа на Python Django Web-Framework. Для останньої версії Netbox потрібно щонайменше Python v3.8 або вище.
Перед початком інсталяції NetBox виконайте таку команду, щоб створити нового системного користувача Netbox, який буде використовуватися для запуску веб-програми NetBox.
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
Встановіть Python3 та деякі залежності пакету, використовуючи наведену нижче команду apt.
sudo apt install -y git python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev
Після завершення інсталяції виконайте таку команду, щоб створити новий каталог установки NetBox «/opt/netbox» та клонувати вихідний код NetBox за допомогою команди Git.
mkdir -p /opt/netbox; cd /opt/netbox sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
Тепер змініть власника каталогу установки NetBox на правильного користувача Netbox, використовуючи наступну команду.
sudo chown -R netbox:netbox /opt/netbox
Потім перемістіть робочий каталог у “/opt/netbox/netbox/netbox” і скопіюйте приклад конфігурації NetBox “configuration_example.py” в “configuration.py”.
cd /opt/netbox/netbox/netbox sudo -u netbox cp configuration_example.py configuration.py
Перед редагуванням конфігураційного файлу netBox виконайте таку команду, щоб згенерувати «SECRET_KEY» для NetBox. Скопіюйте згенерований SECRET_KEY у свій редактор, він буде використовуватися пізніше при редагуванні файлу configuration.py.
sudo -u netbox python3 ../generate_secret_key.py
Виконайте наведену нижче команду, щоб розпочати редагування файлу «configuration.py».
sudo -u netbox nano configuration.py
Тепер вам потрібно налаштувати інсталяцію NetBox, як показано нижче:
- У конфігурації «ALLOWED_HOSTS» введіть доменне ім’я для встановлення NetBox та IP-адреси сервера. У цьому прикладі NetBox буде встановлений під доменним ім’ям “netbox.hwdomain.io” та IP-адресою сервера “192.168.5.20”.
- Введіть відомості про базу даних PostgreSQL для вашого NetBox у параметр «DATABASE».
- Введіть пароль Redis у конфігурації REDIS. Обов’язково змініть пароль на розділи «завдання» та «кешування».
- Нарешті, вставте згенерований SECRET_KEY у файл.
Коли ви закінчите, збережіть та закрийте файл.
Тепер, щоб розпочати встановлення NetBox, ви можете запустити скрипт «upgrade.sh», як показано нижче.
sudo -u netbox /opt/netbox/upgrade.sh
Цей сценарій встановить і настроїти NetBox автоматично. Детальна версія нижче:
- Це створить нове віртуальне середовище Python для встановлення NetBox.
- Це також встановить деякі залежності та бібліотеки Python для NetBox.
- Виконує міграцію бази даних для NetBox.
- Створення ресурсів статичних файлів для NetBox.
Нижче наведено результат, коли починається установка.
Коли інсталяцію буде завершено, ви побачите наступне.
Створення користувача-адміністратора NetBox
Ви завершили базове встановлення NetBox. Тепер ви створите нового користувача адміністратора для NetBox. І це також схоже, коли вам потрібно створити користувача адміністратора Django.
Виконайте наведену нижче команду, щоб активувати віртуальне середовище Python.
source /opt/netbox/venv/bin/activate
Перемістіть робочий каталог у “/opt/netbox/netbox”. Потім запустіть сценарій manage.py, щоб створити нового користувача-адміністратора для NetBox.
cd /opt/netbox/netbox python3 manage.py createsuperuser
Введіть ім’я користувача, адресу електронної пошти та пароль для NextBox.
Після завершення налаштування адміністратора виконайте наведену нижче команду, щоб налаштувати необхідний сценарій cron для NetBox. Це запускатиметься автоматично щодня.
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
Нарешті, виконайте наступну команду, щоб протестувати та перевірити інсталяцію NetBox. Якщо ваша установка виконана правильно, ви побачите, що netBox працює на порту «8000».
python3 manage.py runserver 0.0.0.0:8000 --insecure
Тепер натисніть “Ctrl + c” у терміналі для процесу. Потім запустіть команду “деактивувати”, щоб вийти з віртуального середовища Python.
Налаштування NetBox як служба Systemd
Після завершення налаштуємо адміністратора для NetBox. Тепер ви налаштуєте NetBox як службу systemd. Служба NetBox працюватиме під зворотним проксі-сервером Gunicorn та HTTP.
Вся конфігурація NetBox Gunicorn і сервісний скрипт systemd доступні за умовчанням в каталозі «/opt/netbox/contrib».
Виконайте наведену нижче команду, щоб скопіювати конфігурацію Gunicorn у «/opt/netbox/gunicorn.py». Потім відредагуйте файл за допомогою редактора nano.
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py sudo -u netbox nano /opt/netbox/gunicorn.py
У конфігурації за замовчуванням NetBox працюватиме на локальному хості з портом «8001». Ви можете залишити конфігурацію за замовчуванням або змінити залежно від вашого середовища.
bind = '127.0.0.1:8001'
Збережіть і закрийте конфігураційний файл, коли закінчите.
Потім скопіюйте файли служби systemd до каталогу /etc/systemd/system, використовуючи наступну команду. Це активує дві служби: службу “netbox” як основну службу для вашої програми NetBox і службу “netbox-rq” для служби черги запитів NetBox.
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
Тепер перезавантажте системний менеджер, щоб застосувати нові службові файли NetBox.
sudo systemctl daemon-reload
Після перезавантаження диспетчера systemd ви можете запустити служби netbox і netbox-rq за допомогою команди systemctl, як показано нижче. Обидві служби запускатимуться автоматично під час запуску системи.
sudo systemctl start netbox netbox-rq sudo systemctl enable netbox netbox-rq
Зрештою, перевірте служби NetBox за допомогою наступної команди.
sudo systemctl status netbox sudo systemctl status netbox-rq
У наступному висновку ви можете побачити, що служба Netbox включена. І нинішній статус працює.
Для служби “netbox-rq” ви також отримаєте доступ до вихідних даних служби. І вона працює.
Налаштування Apache2 як зворотний проксі
Запустіть наведену нижче команду apt, щоб встановити веб-сервер Apache2. Введіть Y, щоб підтвердити інсталяцію, і натисніть ENTER, а інсталяція почнеться.
sudo apt install apache2
Після встановлення Apache2 виконайте таку команду, щоб увімкнути деякі модулі Aapche2, які будуть використовуватися для зворотного проксі-сервера. Ви повинні побачити, що додаткові модулі також включені.
sudo a2enmod ssl proxy proxy_http headers
Потім скопіюйте приклад конфігурації віртуального хоста Apache2 для NetBox у /etc/apache2/sites-available/netbox.conf. Потім відредагуйте файл /etc/apache2/sites-available/netbox.conf за допомогою редактора nano.
sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf sudo nano /etc/apache2/sites-available/netbox.conf
Змініть доменне ім’я для встановлення NetBox та шлях сертифікатів SSL. У цьому прикладі ми будемо використовувати домен “netbox.hwdomain.io” із сертифікатами SSL від Letsencrypt, які доступні в каталозі “/etc/letsencrypt/live/netbox.hwdomain.io/”.
Коли ви закінчите, збережіть та закрийте файл.
Виконайте наступну команду, щоб активувати конфігурацію віртуального хоста «netbox.conf». Потім протестуйте та перевірте конфігурацію Apache. Ви повинні отримати вихідне повідомлення, таке як “Синтаксис в порядку”, що означає, що конфігурація Apache2 є вірною.
sudo a2ensite netbox.conf sudo apachectl configtest
Тепер перезапустіть Apache2, щоб застосувати нові зміни до файлу віртуального хоста. Веб-сервер Apache2 тепер працює з увімкненим протоколом HTTPS/SSL, на відміну від веб-програми NetBox, що працює на «localhost:8001».
sudo systemctl restart apache2
Щоб перевірити інсталяцію, відкрийте веб-браузер та перейдіть на доменне ім’я установки NetBox. І ви повинні отримати панель адміністрування для NetBox із заблокованим статусом.
Натисніть кнопку «Увійти» вгорі праворуч.
Тепер введіть користувача та пароль адміністратора для встановлення netBox і натисніть “Увійти”.
Ви повинні отримати адміністрування панелі приладів NetBox.
Підсумок
За допомогою цього посібника ви налаштували моделювання ресурсів інфраструктури NetBox (IRM) з базою даних PostgreSQL, системою кешування Redis, Gunicorn та зворотним проксі-сервером Apache2 на сервері Debian 11. Ви також налаштували NetBox як службу systemd, яка спрощує запуск та зупинку веб-додатків NetBox. Зрештою, ви повністю налаштували NetBox IRM, що працює на вашому сервері Debian, із включеним захищеним протоколом HTTPS/SSL поверх нього.