Open3
NetBoxについて
NetBoxインストール
大体公式のとおり
環境
# 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
リリースアーカイブをダウンロード
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のパスが通っていなくて失敗した
設定# 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.
ハウスキーピングタスクをスケジュールする
(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
でアクセスできる
インストール続き
Gunicorn or uWSGIの設定
Gunicornを使用した
設定のコピー
# cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
設定はデフォルトで動くが、必要に応じて変えること
サービスの作成
# 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
おわり
REST API
/api
以下
SwaggerUIがある:/api/schema/swagger-ui/