手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Podman で NetBox を構築する

NetBox はネットワーク機器、IP アドレス、ラック、回線などを管理する DCIM / IPAM アプリケーションです。Podman で動かす場合は、NetBox 本体だけでなく PostgreSQL と Redis を合わせて扱います。

この記事では、Ubuntu 22.04 上の Podman で NetBox を検証用に起動し、PostgreSQL、Redis、Redis cache、NetBox Web、永続化、Web UI 確認、systemd 化の基本を確認します。

関連する記事

この記事で確認すること

  • NetBox を Podman pod として起動する構成
  • PostgreSQL、Redis、Redis cache、NetBox の役割分担
  • 永続化ディレクトリと環境変数の確認
  • Web UI の起動確認
  • pod 単位の systemd 化
参考書籍
参考書籍
Kubernetes 完全ガイド 第 2 版
コンテナ運用、Pod、永続化の考え方を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

NetBox を Podman で動かす構成

NetBox は DB と Redis に依存します。Podman pod を使うと、複数コンテナを同じネットワーク名前空間で扱えます。検証では、pod 内の 127.0.0.1 を使って各コンテナを接続します。

コンテナ役割確認対象
netbox-postgresNetBox 用 PostgreSQL永続化、DB 名、ユーザー
netbox-redisqueue 用 Redis起動状態、接続
netbox-redis-cachecache 用 Redis起動状態、接続
netboxNetBox WebHTTP 応答、DB / Redis 接続

前提を確認する

Podman が導入済みで、現在のユーザーから container を起動できる状態を前提にします。

podman --version
podman info
podman pod ps

作業ディレクトリを作成する

PostgreSQL のデータをホスト側へ残すため、永続化用ディレクトリを作成します。rootless 実行では、実行ユーザーが読み書きできるようにします。

sudo install -d -m 0750 -o "$USER" -g "$USER" /opt/container/netbox
install -d /opt/container/netbox/postgresql
ls -ld /opt/container/netbox /opt/container/netbox/postgresql

Pod を作成する

NetBox の Web UI をホスト側 8000 番で確認できるように pod を作成します。

podman pod create \
  --name netbox-pod \
  -p 8000:8080
podman pod ps

PostgreSQL を起動する

NetBox 用の PostgreSQL を起動します。パスワードは検証用の例なので、実運用では十分に強い値へ変更します。

podman run -d --pod netbox-pod \
  --name netbox-postgres \
  -e POSTGRES_DB=netbox \
  -e POSTGRES_USER=netbox \
  -e POSTGRES_PASSWORD='change-me' \
  -v /opt/container/netbox/postgresql:/var/lib/postgresql/data:Z \
  docker.io/library/postgres:15
podman logs netbox-postgres

Redis を起動する

NetBox は通常の Redis と cache 用 Redis を分けて使います。検証では同じ image から 2 つのコンテナを起動します。

podman run -d --pod netbox-pod \
  --name netbox-redis \
  docker.io/library/redis:7-alpine
podman run -d --pod netbox-pod \
  --name netbox-redis-cache \
  docker.io/library/redis:7-alpine
podman logs netbox-redis
podman logs netbox-redis-cache

NetBox 本体を起動する

NetBox 本体を起動します。ここでは pod 内の localhost で PostgreSQL と Redis に接続する構成にします。実際の image tag や環境変数は、利用する NetBox image の仕様に合わせて確認します。

podman run -d --pod netbox-pod \
  --name netbox \
  -e DB_HOST=127.0.0.1 \
  -e DB_NAME=netbox \
  -e DB_USER=netbox \
  -e DB_PASSWORD='change-me' \
  -e REDIS_HOST=127.0.0.1 \
  -e REDIS_CACHE_HOST=127.0.0.1 \
  docker.io/netboxcommunity/netbox:latest
podman logs netbox

起動状態を確認する

pod と各 container の状態を確認し、ホスト側 8000 番から NetBox の HTTP 応答を確認します。

podman pod ps
podman ps --pod
curl -I http://127.0.0.1:8000/

ログを確認する

Web UI が表示されない場合は、NetBox、PostgreSQL、Redis のログを分けて確認します。DB 接続情報の不一致や Redis 接続失敗は、NetBox 起動時のログに出ます。

podman logs netbox
podman logs netbox-postgres
podman logs netbox-redis
podman logs netbox-redis-cache

初期設定で見るポイント

NetBox は起動後に管理ユーザー、初期データ、永続化、バックアップの扱いを決めます。コンテナ起動だけで完了とせず、アプリケーションとして使える状態を確認します。

  • 管理ユーザー作成の手順を確認する
  • PostgreSQL データのバックアップ対象を決める
  • Web UI の公開範囲を制限する
  • 検証用パスワードを運用へ持ち込まない
  • 利用する NetBox image の環境変数を確認する

systemd unit を生成する

継続運用する場合は、pod 単位で systemd unit を生成します。rootless 運用ではユーザー unit として管理する方法も検討します。

podman generate systemd --new --name netbox-pod > container-netbox-pod.service
sudo install -m 0644 container-netbox-pod.service /etc/systemd/system/container-netbox-pod.service
sudo systemctl daemon-reload
sudo systemctl enable --now container-netbox-pod.service
systemctl status container-netbox-pod.service --no-pager

停止と削除

検証を終了する場合は、systemd unit を止めてから pod を削除します。DB データを残すか削除するかは別に判断します。

sudo systemctl disable --now container-netbox-pod.service
podman pod rm -f netbox-pod
podman pod ps
ls -ld /opt/container/netbox/postgresql

運用時に見るポイント

NetBox は構成管理データを持つため、DB の永続化とバックアップが重要です。Podman で起動できることと、継続運用できることは分けて確認します。

  • PostgreSQL データをバックアップ対象にする
  • Redis は用途を分けて起動する
  • Web UI の公開範囲と認証を確認する
  • NetBox image の tag を固定する
  • アップグレード時は DB マイグレーションを確認する

まとめ

Ubuntu 22.04 の Podman で NetBox を動かす場合、NetBox 本体、PostgreSQL、Redis、Redis cache を 1 つの pod にまとめると、検証環境として扱いやすくなります。

構築後は、Web UI の応答、DB 永続化、Redis 接続、systemd unit、バックアップ対象を確認します。検証用のパスワードや latest tag をそのまま運用へ持ち込まないことも重要です。

Ubuntu 22.04 Podman で NetBox を構築する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る