Поиск по сайту:

Как установить NetBox на Rocky Linux 9


На этой странице

  1. Предпосылки
  2. Установка и настройка PostgreSQL
  3. Установка и настройка Redis
  4. Установка Netbox IRM
  5. Настройка NetBox IRM
  6. Настройка httpd в качестве обратного прокси-сервера
  7. Защита NetBox IRM с помощью SSL Letsencrypt
  8. Вход в NetBox
  9. Заключение

NetBox — это программное обеспечение для моделирования ресурсов инфраструктуры (IRM), предназначенное для автоматизации сетей и проектирования инфраструктуры. Изначально он был создан командой DigitalOcean, а теперь стал проектом с открытым исходным кодом, выпущенным под лицензией Apache 2. NetBox был создан в веб-инфраструктуре Python Django с PostgreSQL в качестве базы данных по умолчанию, и установка NetBox очень похожа на другие веб-приложения Python Django.

NetBox помогает вам управлять вашей инфраструктурой, которая включает в себя:

  • DCIM (управление инфраструктурой центра обработки данных)
  • IPAM (управление IP-адресами)
  • Цепи данных
  • Подключения (сеть, консоль и питание)
  • Стойки для оборудования
  • Виртуализация
  • Секреты

В этом руководстве вы установите NetBox IRM (управление инфраструктурными ресурсами) на сервер Rocky Linux 9. Вы настроите NetBox с PostgreSQL в качестве системы базы данных и Apache/httpd в качестве обратного прокси-сервера в системе Rocky Linux. Вы также защитите NetBox с помощью сертификатов SSL/TLS через Certbot и Letsencrypt.

Предпосылки

Прежде чем начать, убедитесь, что у вас есть следующие требования:

  • Сервер Rocky Linux 9. В этом примере используется сервер Rocky Linux с именем хоста netbox-rocky.
  • Пользователь без полномочий root с правами администратора sudo/root.
  • SELinux работает в разрешительном режиме.
  • Доменное имя или поддомен указывает на IP-адрес сервера. В этом примере для запуска NetBox используется поддомен netbox.hwdomain.io.

После выполнения этих предварительных требований вы готовы к установке NetBox.

Установка и настройка PostgreSQL.

NetBox IRM по умолчанию поддерживает сервер базы данных PostgreSQL. На момент написания этой статьи требовалось как минимум PostgreSQL версии 10 и выше. По умолчанию репозиторий Rocky Linux предоставляет сервер PostgreSQL v13, который подходит для развертывания NetBox.

На этом шаге вы установите сервер базы данных PostgreSQL, настроите аутентификацию по паролю, затем создадите новую базу данных и пользователя, которых будет использовать NetBox.

Для начала выполните приведенную ниже команду, чтобы установить сервер PostgreSQL на сервер Rocky Linux.

sudo dnf install postgresql-server

При появлении запроса введите y для подтверждения и нажмите ENTER для продолжения.

После установки сервера PostgreSQL выполните приведенную ниже команду, чтобы инициализировать базу данных и конфигурацию PostgreSQL.

sudo postgresql-setup --initdb

Вы должны получить вывод, например Инициализация базы данных в....

После инициализации сервера PostgreSQL вы затем настроите шифрование паролей и аутентификацию для пользователей PostgreSQL.

Откройте файл конфигурации PostgreSQL /var/lib/pgsql/data/postgresql.conf с помощью приведенной ниже команды редактора nano.

sudo nano /var/lib/pgsql/data/postgresql.conf

Раскомментируйте параметр password_encryption и измените значение на scram-sha-256. Это установит шифрование паролей по умолчанию для пользователей PostgreSQL на scram-sha-256.

password_encryption = scram-sha-256

Сохраните файл и выйдите из редактора.

Затем откройте другой файл конфигурации PostgreSQL /var/lib/pgsql/data/pg_hba.conf с помощью приведенной ниже команды. В этом файле вы можете определить методы аутентификации для вашего PostgreSQL.

sudo nano /var/lib/pgsql/data/pg_hba.conf

Измените методы аутентификации по умолчанию для хоста 127.0.0.1/32 и ::1/128 на scram-sha-256. При этом вы установите методы аутентификации по умолчанию для пользователей PostgreSQL на scram-sha-256.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Сохраните файл и выйдите из редактора, когда закончите.

Теперь запустите приведенную ниже командную утилиту systemctl, чтобы запустить и включить службу PostgreSQL.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Затем проверьте службу PostgreSQL с помощью приведенной ниже команды.

sudo systemctl status postgresql

Вы должны получить такой вывод: Служба PostgreSQL запущена и включена, что означает, что PostgreSQL запустится автоматически при загрузке.

Теперь, когда вы настроили аутентификацию по паролю для сервера PostgreSQL, теперь он настроен и работает. Затем вы установите новый пароль для пользователя postgres по умолчанию и создадите новую базу данных и пользователя, которых будет использовать NetBox.

Войдите в оболочку PostgreSQL с помощью приведенной ниже команды.

sudo -u postgres psql

Запустите приведенный ниже запрос, чтобы установить новый пароль для пользователя postgres по умолчанию для PostgreSQL. Обязательно измените пароль в следующем запросе.

ALTER USER postgres WITH PASSWORD 'PostgreSQLPass';

Затем выполните приведенный ниже запрос, чтобы создать новую базу данных PostgreSQL и пользователя. Кроме того, обязательно измените пароль по умолчанию в следующем запросе.

В этом примере вы создадите новую базу данных netboxdb с пользователем netbox, который будет использоваться для установки NetBox.

CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;

Теперь нажмите Ctrl+d или введите quit для выхода.

Наконец, выполните приведенную ниже команду, чтобы войти в оболочку PostgreSQL через новый пользовательский netbox в новую базу данных netboxdb. При запросе пароля введите свой пароль.

sudo -u postgres psql --username netbox --password --host localhost netboxdb

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

\conninfo

Вы получите такой вывод: вы подключились к серверу PostgreSQL через пользователя netbox к базе данных netboxdb.

После установки PostgreSQL, создания базы данных и пользователя вы установите Redis, который будет использоваться для управления кешем в веб-приложении NetBox.

Установка и настройка Redis

Redis — это бесплатная база данных с открытым исходным кодом, которую NetBox будет использовать для управления кэшем и очередями. На момент написания этой статьи для NetBox требовался как минимум сервер Redis v4, а репозиторий Rocky Linux по умолчанию предоставляет Redis v6 и подходит для вашего развертывания NetBox.

Установите Redis на свой сервер Rocky Linux с помощью приведенной ниже команды dnf.

sudo dnf install redis

Введите y при появлении запроса и нажмите ENTER, чтобы продолжить.

После установки Redis откройте файл конфигурации Redis /etc/redis/redis.conf с помощью приведенной ниже команды редактора nano.

sudo nano /etc/redis/redis.conf

Раскомментируйте параметр requirepass и введите новый пароль для вашего сервера Redis.

requirepass RedisPasswordNetBox

Сохраните файл и выйдите из редактора, когда закончите.

Затем выполните приведенную ниже команду systemctl, чтобы запустить сервер Redis и включить его.

sudo systemctl start redis
sudo systemctl enable redis

Затем проверьте сервер Redis с помощью приведенной ниже командной утилиты systemctl.

sudo systemctl status redis

В выводе вы должны увидеть, что сервер Redis включен и будет запускаться автоматически при загрузке. И статус сервера Redis работает.

Чтобы проверить установку Redis, вы получите доступ к Redis с помощью приведенной ниже команды redis-cli.

redis-cli

Если вы запустите запрос ping, вы должны получить вывод, например (ошибка) Требуется аутентификация NOAUTH. Вы должны пройти аутентификацию для запуска команды ping.

ping

Выполните приведенный ниже запрос Redis для аутентификации на сервере Redis. Обязательно смените пароль. Если вы аутентифицированы, вы должны получить вывод OK.

AUTH RedisPasswordNetBox

Запустите ping-запрос еще раз, и вы должны получить вывод PONG\, что означает, что запрос выполнен успешно, и вы прошли аутентификацию на сервере Redis.

ping

К этому моменту вы установили сервер базы данных PostgreSQL и базу данных ключей Redis в Rocky Linux. Теперь вы готовы начать установку NetBox.

Установка Netbox IRM

NetBox — это веб-приложение, написанное с помощью Python Django Framework. Текущая версия NetBox требует как минимум Python 3.8, 3.9, 3.10 или 3.11. А Python по умолчанию в Rocky Linux 9 — это Python 3.9, который подходит для развертывания NetBox.

Для начала запустите приведенную ниже команду dnf, чтобы установить зависимости пакетов для NetBox. Введите y при появлении запроса и нажмите ENTER, чтобы продолжить.

sudo dnf install gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git

Затем выполните приведенную ниже команду, чтобы создать новый системный пользовательский netbox с домашним каталогом по умолчанию /opt/netbox.

sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox

Создайте новый каталог /opt/netbox и переместите в него свой рабочий каталог. Затем загрузите исходный код NetBox с помощью команды git. Каталог /opt/netbox  будет использоваться в качестве основного каталога установки NetBox.

mkdir -p /opt/netbox; cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .

Измените владельца каталога установки NetBox /opt/netbox на пользователя и группу netbox. Затем переместите рабочий каталог в /opt/netbox/netbox/netbox.

sudo chown -R netbox:netbox /opt/netbox
cd /opt/netbox/netbox/netbox

Затем выполните приведенную ниже команду, чтобы скопировать конфигурацию NetBox по умолчанию в файл configuration.py. Затем сгенерируйте SECRET_KEY с помощью скрипта Python ../generate_secret_key.py.

sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox python3 ../generate_secret_key.py

Теперь скопируйте сгенерированный файл SECRET_KEY. Это будет использоваться для настройки установки NetBox.

Откройте файл конфигурации NetBox configuration.py с помощью приведенной ниже команды редактора nano.

sudo -u netbox nano configuration.py

Обязательно добавьте свое доменное имя в параметр ALLOWED_HOSTS, введите сведения о базе данных PostgreSQL и пользователе для NetBox, введите настроенный пароль Redis и вставьте сгенерированный SECRET_KEY в параметр SECRET_KEY.

# domain and IP address
ALLOWED_HOSTS = ['netbox.hwdomain.io', '192.168.5.59']

# database configuration
DATABASE = {
    'NAME': 'netboxdb',               # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'NetBoxRocks', # PostgreSQL password
    'HOST': 'localhost',            # Database server
    'PORT': '',                     # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,            # Max database connection age (seconds)
}

# Redis cache configuration
REDIS = {
    'tasks': {
        'HOST': 'localhost',      # Redis server
        'PORT': 6379,             # Redis port
        'PASSWORD': 'RedisPasswordNetBox',           # Redis password (optional)
        'DATABASE': 0,            # Database ID
        'SSL': False,             # Use SSL (optional)
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': 'RedisPasswordNetBox',
        'DATABASE': 1,            # Unique ID for the second database
        'SSL': False,
    }
}

# Secret key
SECRET_KEY = '-K0AV#USk(!-6hAEF-8NMgweJh6ex&+j0Kb$N7bi=*jsF9TOg*'

Сохраните и закройте файл, когда закончите.

Теперь запустите приведенный ниже сценарий /opt/netbox/upgrade.sh, чтобы начать установку NetBox IRM.

sudo -u netbox /opt/netbox/upgrade.sh

Это установит виртуальную среду Python для веб-приложения NetBox, установит необходимые зависимости Python через репозиторий PyPI, запустит миграцию базы данных для NetBox и, наконец, сгенерирует статические файлы для веб-приложения NetBox.

Ниже приведен результат выполнения скрипта upgrade.sh.

Ниже приведено выходное сообщение после завершения установки NetBox.

На данный момент вы установили NetBox IRM в своей системе. Но все же вам нужно настроить установку NetBox.

Настройка управления правами на доступ к NetBox

На этом шаге вы настроите установку NetBox IRM, создав пользователя-администратора для NetBox, настроив cron и настроив службы systemd для NetBox.

Для начала выполните приведенную ниже команду, чтобы активировать виртуальную среду Python для вашей установки NetBox.

source /opt/netbox/venv/bin/activate

При активации ваше приглашение станет таким, как (venv) [email ..

Затем переместите рабочий каталог в /opt/netbox/netbox и запустите сценарий Django manage.py, чтобы создать нового пользователя-администратора NetBox.

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

Введите нового пользователя-администратора, адрес электронной почты и пароль для вашего NetBox. Вы должны получить выходной результат Superuser, созданный успешно. Это означает, что пользователь-администратор NetBox создан.

Затем запустите приведенную ниже команду, чтобы настроить cron, который будет запускаться ежедневно. Сценарий netbox-housekeeping.sh используется для очистки вашей среды NetBox, он удалит просроченные задачи, старые сеансы или любые просроченные записи.

sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

После настройки cron для NetBox вы настроите NetBox для работы с Gunicorn.

Выполните приведенную ниже команду, чтобы скопировать конфигурацию Guncorn в /opt/netbox/gunicorn.py. Затем откройте файл конфигурации 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 по умолчанию для NetBox в каталог /etc/systemd/system. Это скопирует служебный файл netbox и netbox-rq, которые будут использоваться для управления NetBox.

sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/

Теперь запустите приведенную ниже командную утилиту systemctl, чтобы перезагрузить диспетчер systemd и применить новые изменения в вашей системе.

sudo systemctl daemon-reload

Наконец, запустите приведенную ниже команду systemctl, чтобы запустить и включить службу netbox-rq. Это также автоматически запустит основную службу netbox.

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

Теперь проверьте службы netbox-rq и netbox с помощью приведенной ниже команды systemcl.

sudo systemctl status netbox
sudo systemctl status netbox-rq

Вывод состояния службы netbox-rq.

Вывод службы netbox.

На данный момент NetBox IRM работает как служба systemd и работает как приложение WSGI с Gunicorn. На следующем шаге вы установите и настроите httpd в качестве обратного прокси-сервера для NetBox.

Настройка httpd в качестве обратного прокси

Теперь, когда NetBox работает как приложение WSGI с Gunicorn, вы должны установить и настроить веб-сервер httpd в качестве обратного прокси-сервера для NetBox. Вы установите пакет httpd, создадите новый файл виртуального хоста httpd, затем запустите и включите службу httpd. Наконец, вы также настроите брандмауэр для открытия портов HTTP и HTTPS.

Запустите приведенную ниже команду dnf, чтобы установить веб-сервер httpd. Введите y, когда появится запрос на подтверждение, и нажмите ENTER, чтобы продолжить.

sudo dnf install httpd

Затем создайте новый файл виртуального хоста httpd /etc/httpd/conf.d/netbox.conf, используя приведенную ниже команду редактора nano.

sudo nano /etc/httpd/conf.d/netbox.conf

Добавьте в файл следующие строки и обязательно измените доменное имя netbox.hwdomain.io на свой домен. С помощью этого виртуального хоста вы настроите httpd в качестве обратного прокси-сервера для приложения NetBox, которое работает как приложение WSGI на порту 8001.

<VirtualHost *:80>
    ProxyPreserveHost On

    # CHANGE THIS TO YOUR SERVER'S NAME
    ServerName netbox.hwdomain.io

    Alias /static /opt/netbox/netbox/static

    <Directory /opt/netbox/netbox/static>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>

    <Location /static>
        ProxyPass !
    </Location>

    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    ProxyPass / http://127.0.0.1:8001/
    ProxyPassReverse / http://127.0.0.1:8001/
</VirtualHost>

Сохраните файл и выйдите из редактора, когда закончите.

Затем запустите приведенную ниже команду apachectl, чтобы проверить настройки httpd. И если вы правильно настроили httpd, вы должны получить такой вывод, как Syntax OK.

sudo apachectl configtest

Теперь запустите приведенную ниже командную утилиту systemctl, чтобы запустить и включить веб-сервер httpd.

sudo systemctl start httpd
sudo systemctl enable httpd

Затем проверьте веб-сервер httpd, чтобы убедиться, что служба запущена. Вы должны получить вывод о том, что веб-сервер httpd запущен и включен, что означает, что веб-сервер httpd запустится автоматически при загрузке.

sudo systemctl status httpd

Имея это в виду, приложение NetBox работает и доступно. Но перед этим вы должны открыть порты HTTP и HTTPS в firewalld.

Запустите приведенную ниже команду firewall-cmd, чтобы открыть службы HTTP и HTTPS. Затем перезагрузите firewalld, чтобы применить изменения.

sudo firewall-cmd --add-servic={http,https} --permanent
sudo firewall-cmd --reload

Проверьте состояние firewalld с помощью приведенной ниже команды.

sudo firewall-cmd --list-all

Такой вывод показывает, что службы HTTP и HTTPS добавлены в файл firewalld.

Теперь у вас есть веб-приложение NetBox, которое работает и доступно — вы можете получить доступ к установке NetBox, но с небезопасным протоколом HTTP. На следующем этапе вы защитите свое развертывание NetBox с помощью сертификатов SSL/TLS через Certbot и Letsencrypt.

Защита NetBox IRM с помощью SSL Letsencrypt

На этом шаге вы защитите установку NetBox с помощью сертификатов SSL/TLS, которые можно сгенерировать с помощью Certbot и Letsencrypt. Прежде чем начать, убедитесь, что имя домена указывает на IP-адрес сервера. Также убедитесь, что у вас есть адрес электронной почты, который будет использоваться для регистрации в Letsencrypt.

Установите инструмент Certbot и подключаемый модуль httpd/Apache с помощью приведенной ниже команды dnf.

sudo dnf install certbot python3-certbot-apache

Введите y при появлении запроса и нажмите ENTER, чтобы продолжить.

После установки Certbot выполните приведенную ниже команду, чтобы сгенерировать сертификаты SSL/TLS для вашего доменного имени. Также обязательно измените доменное имя и адрес электронной почты в следующей команде.

sudo certbot --apache2 --agree-tos --redirect --hsts --staple-ocsp --email  -d netbox.hwdomain.io

Эта команда сгенерирует новые сертификаты SSL/TLS для вашего доменного имени. Кроме того, это автоматически настроит HTTPS в конфигурации вашего виртуального хоста httpd и настроит автоматическое перенаправление с HTTP на HTTPS для вашего файла виртуального хоста NetBox. Сертификаты Certbot SSL/TLS создаются в каталоге /etc/elstencrypt/live/netbox.hwdomain.io/.

Вход в нетбокс

Откройте веб-браузер и перейдите на доменное имя вашей установки NetBox (например, https://netbox.hwdomain.io/).

Вы увидите домашнюю страницу вашей установки NetBox по умолчанию. Это похоже на предварительный просмотр вашей установки NetBox.

Нажмите кнопку «Войти» в верхнем правом меню, и вы будете перенаправлены на экран входа в систему NetBox.

Войдите в систему, используя учетную запись администратора и пароль, затем нажмите «Войти».

Когда у вас есть правильный и правильный пользователь и пароль для NetBox, теперь вы должны войти в панель управления NetBox.

На этом вы завершили установку NetBox IRM с PostgreSQL, Redis, Gunciron и веб-сервером httpd.

Заключение

В этом руководстве вы установили программное обеспечение NetBox для моделирования ресурсов инфраструктуры (IRM) на сервер Rocky Linux 9. Вы настроили NetBox с сервером базы данных PostgreSQL, Redis для управления кешем и веб-сервером httpd в качестве обратного прокси-сервера на сервере Rocky Linux.

Из этого руководства вы также узнали, как настроить аутентификацию в PostgreSQL, включить аутентификацию в Redis, настроить httpd в качестве обратного прокси-сервера и защитить NetBox с помощью сертификатов SSL/TLS через Certbot и Letsencrypt.

После полной установки NeBox теперь вы можете интегрировать NetBox в свои центры обработки данных, добавить интеграцию с REST API или добавить стороннюю аутентификацию через LDAP, Azure AD и Okta в качестве серверной части SSO (Single Sign-On).