Open3

NetBoxについて

NMNM

NetBoxインストール

大体公式のとおり
https://netboxlabs.com/docs/netbox/en/stable/installation/

環境

# cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)

postgresqlのインストール

15入れた

# dnf install -y postgresql-server
# postgresql-setup --initdb
# vi /var/lib/pgsql/15/data/pg_hba.conf
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
# systemctl enable --now postgresql

確認

# psql -V
psql (PostgreSQL) 15.9

DB作成

# sudo -u postgres psql
> CREATE DATABASE netbox;
> CREATE USER netbox WITH PASSWORD 'xxxxxxxxxxxxxxxxxx';
> ALTER DATABASE netbox OWNER TO netbox;
> \connect netbox;
> GRANT CREATE ON SCHEMA public TO netbox;

接続確認

# psql --username netbox --password --host localhost netbox
> \conninfo
You are connected to database "netbox" as user "netbox" on host "localhost" (address "::1") at port "5432".

Redisインストール

# dnf install -y redis
# systemctl enable --now redis

確認

# redis-server -v
Redis server v=6.2.7 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=ec192bdd77ecd321
# redis-cli ping
PONG

NetBoxインストール

パッケージのインストール

# dnf install -y gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config wget

python3 のバージョンアップ

3.10以降が必要

# python3 -V
Python 3.9.18

# dnf install python3.12 python3.12-devel
# which python3.12
/usr/bin/python3.12

# alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1
# alternatives --config python3
# python3 -V
Python 3.12.1

リリースアーカイブをダウンロード

https://github.com/netbox-community/netbox/releases
4.1.6を入れた

# wget https://github.com/netbox-community/netbox/archive/refs/tags/v4.1.6.tar.gz
# tar -xzf v4.1.6.tar.gz -C /opt
# ln -s /opt/netbox-4.1.6/ /opt/netbox

システムユーザの作成

# groupadd --system netbox
# adduser --system -g netbox netbox
# chown --recursive netbox /opt/netbox/netbox/media/
# chown --recursive netbox /opt/netbox/netbox/reports/
# chown --recursive netbox /opt/netbox/netbox/scripts/

設定変更

# cd /opt/netbox/netbox/netbox/

鍵作成
# python3 ../generate_secret_key.py
50文字ぐらいの記号あり鍵が生成される

# cp configuration_example.py configuration.py
# vi configuration.py
ALLOWED_HOSTS = ['example.com', 'xxx.xxx.xxx.xxx'] // 接続するドメイン名やIPアドレス
DATABASE = {
    'NAME': 'netbox',               # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'xxxxxxxxxxxxxxxxxx',            # PostgreSQL password
    'HOST': 'localhost',            # Database server
    'PORT': '',                     # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,            # Max database connection age (seconds)
}
REDIS // そのままでいい
SECRET_KEY = 'さっき作成した50文字ぐらいの鍵'

インストール

# /opt/netbox/upgrade.sh

トラブルシュート

pg_configが無い
エラー内容

× Preparing metadata (pyproject.toml) did not run successfully.
couldn't run 'pg_config' --includedir: [Errno 2] No such file or directory: 'pg_config'
error: [Errno 2] No such file or directory: 'pg_config'
[end of output]

pg_configのパスが通っていなくて失敗した
https://github.com/netbox-community/netbox/issues/16157
設定

# update-alternatives  --install /usr/bin/pg_config pgsql-config /usr/pgsql-15/bin/pg_config  100

psycopg-cがビルドできない
エラー内容

ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (psycopg-c)

pythonの開発パッケージが足りないか、バージョンが古いなどでpython3コマンドと合っていない

# dnf install python3.12-devel
確認
# find /usr/include -name Python.h

スーパーユーザの作成

環境へのログイン

source /opt/netbox/venv/bin/activate
// コンソールが変化する
(venv) [xxx]# cd /opt/netbox/netbox
(venv) [xxx]# python3 manage.py createsuperuser
Username: netbox-userなど
Email address: // 空でいい
Password:xxxxxxxxxxxxxxx
Password (again):xxxxxxxxxxxxxxxxx
Superuser created successfully.

ハウスキーピングタスクをスケジュールする

https://netboxlabs.com/docs/netbox/en/stable/administration/housekeeping/

(venv) [xxx]# ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

アプリケーションをテスト

(venv) [xxx]# python3 manage.py runserver 0.0.0.0:8000 --insecure
// 以下の様なログが出たら成功
Performing system checks...

System check identified no issues (0 silenced).
November 19, 2024 - 07:39:58
Django version 5.0.9, using settings 'netbox.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

https://設定したドメインやIPアドレス:8000 でアクセスできる

NMNM

インストール続き

Gunicorn or uWSGIの設定

Gunicornを使用した

設定のコピー

# cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py

設定はデフォルトで動くが、必要に応じて変えること
https://docs.gunicorn.org/en/stable/configure.html

サービスの作成

# cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
'/opt/netbox/contrib/netbox-housekeeping.service' -> '/etc/systemd/system/netbox-housekeeping.service'
'/opt/netbox/contrib/netbox-rq.service' -> '/etc/systemd/system/netbox-rq.service'
'/opt/netbox/contrib/netbox.service' -> '/etc/systemd/system/netbox.service'
# systemctl daemon-reload
# systemctl enable --now netbox netbox-rq
Created symlink /etc/systemd/system/multi-user.target.wants/netbox.service → /etc/systemd/system/netbox.service.
Created symlink /etc/systemd/system/multi-user.target.wants/netbox-rq.service → /etc/systemd/system/netbox-rq.service.

確認

# systemctl status netbox.service

HTTP Server Setup

SSL証明書の準備

自己証明書とする。本番環境では使用しないこと

# mkdir /etc/ssl/private/
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/netbox.key \
-out /etc/ssl/certs/netbox.crt

Apache or Nginxのインストール/設定

Apacheにし、公式はUbuntuの操作しかないので適宜読み替える

# dnf install -y httpd mod_ssl
設定をコピーし、既存設定がある場合VirtualHostでポートを分ける
# cp /opt/netbox/contrib/apache.conf /etc/httpd/conf.d/netbox.conf
確認
# apachectl configtest
Syntax OK
再起動
# systemctl restart httpd

おわり