NetBoxでネットワークインフラを整理する方法
ネットワークエンジニアやシステム管理者の多くは、Excelスプレッドシートに関する辛い経験を持っているでしょう。長年にわたりIPアドレスの空き状況を管理してきたそのスプレッドシートで、誤ってゲートウェイと新しいデータベースサーバーに同じアドレスを割り当ててしまった担当者がいた、という話は珍しくありません。また、サーバー室の物理的なラックについては、ドキュメントが現実から数ヶ月遅れるのが常です。青いケーブルがどのパッチパネルポートに接続されているか、誰も正確には覚えていないものです。
NetBoxプロジェクトは2016年にこの混乱への対応として誕生しました。PythonとDjangoで構築されたNetBoxは、分断されたIPアドレス管理システム(IPAM)とデータセンターリソース管理(DCIM)を置き換えるものとして構想されました。今日、GitHubで21,000を超えるスターを獲得し、ネットワークの信頼できる状態を維持するための事実上の標準となっています。

Source of Truthとは?なぜ必要なのか
NetBoxの中核となる原则は、Source of Truth(单一情報源)という概念です。これは信頼できる情報を提供する单一の情報源を指します。NetBoxはネットワークの現在の運用状態ではなく、意図された状態を記録します。
これは根本的な違いです。このプログラムはSNMP経由でスイッチをポーリングしたり、ポートをスキャンしたりしません。エンジニアの設計に基づいて、ネットワークがどのように構成されるべきかを記述します。

この関心の分離は、自動化へのアプローチを根本的に変えます。デバイスを手動で設定してからレポート作成に苦労するのではなく、エンジニアはNetBoxデータベースに直接変更を加えます。AnsibleやSaltなどのスクリプトやオーケストレーションシステムは、REST API経由でこれらのパラメータを取得し、設定ファイルを生成して機器にデプロイします。
主な機能
開発者は意図的にネットワーク固有の要件に焦点を当てたため、データモデルはインストール直後からすぐに使用できます。
1. 物理モデルと論理モデルの詳細なモデリング
このシステムはすべてのインフラレイヤーを統合できます:
- サイトの場所、サーバー室、ラック、特定のユニット
- デバイスタイプ、拡張モジュール、電源、ネットワークインターフェース
- サーバーポートからコアスイッチポートまでのエンドツーエンドのケーブルパス追跡
- IPプレフィックス、アドレスプール、VLAN、VRF
インターフェースでは、設置された機器を含むラックの可視化や、パッチパネルを介した完全なケーブルパスの追跡が可能です。


2. Jinja2による設定レンダリング
Jinja2テンプレートはNetBox内に直接保存できます。これらのテンプレートはデータベースからパラメータを取得し、Cisco、Juniper、Mikrotik、またはLinuxサーバー向けのすぐに使える設定を生成します。テンプレートはWebインターフェースからアップロードするか、外部gitリポジトリと同期させることができます。
3. カスタムスクリプトとWebhook
新しい支店のオンライン化などの日常的な操作は、何十ものフォームに手動で入力すると 상당な時間を消費します。NetBoxにはカスタムPythonスクリプトの組み込みサポートが含まれています。必要な入力フィールドを持つスクリプトを作成し、エンジニアはブラウザから直接実行できます。スクリプトは自動的に必要なサブネットを割り当て、デバイスを作成し、公司方針に従ってアドレスを割り当てます。
Webhookにより、他のサービスとの統合が可能になります。新しいサーバーを追加すると、Webhookはすぐに監視システムにイベントを送信するか、DHCPサーバー上のレコードを更新します。
4. 変更管理とバリデーションルール
システムはすべてのアクションの完全な監査ログを維持します。誰がポートの状態を変更したか、いつアドレスが割り当てられたか、そしてそれにどのリクエストが関連付けられていたかを正確に確認できます。
従業員が公司的標準に違反することを防ぐため、管理者はカスタムバリデーションルールを設定できます。例えば、「Active」とマークされたデバイスの削除を禁止したり、特定のサーバーモデルに対して在庫番号フィールドを必須にしたりできます。

技術スタックと拡張性
内部では、NetBoxは実績のある古典的なスタックで動作しています:
- Python 3とDjango Webフレームワーク
- プライマリデータベースとしてのPostgreSQL
- タスクキューとキャッシュのためのRedis
アプリケーションはRESTとGraphQLに基づくオープンAPIを提供しており、統合の構築大为いに簡素化されます。
標準のエンティティが不十分な場合、プラグインを通じて機能を拡張できます。例えば、公式のNetBox Branchingプラグインは、データ管理のためのGitのようなブランチロジックを導入します。エンジニアはブランチを作成し、計画されたトポロジ変更を行い、同僚からの承認を得て、本番環境にデプロイする前でのみメインデータベースにマージします。その他の人気のプラグインには、DNSゾーン管理やBGPセッション追跡があります。
このプロジェクト誰が恩恵を受けるか
会社がサーバー数台と管理されていないスイッチを1台だけ持っている場合、NetBoxの導入は意味がありません。保守のオーバーヘッドがメリットを上回ります。
ただし、インフラに数十台のスイッチ、数百台の仮想マシン、または複数の支店がある場合、プロジェクトは実装時間をすぐに回収できます。それは個々のエンジニアの散らばった知識を、自動化に対応した構造化されたデータベースに変換します。
パブリックデモを通じてローカルに何もインストールせずにインターフェースを探索でき、プロジェクトドキュメントにはDockerまたはホストに直接インストールする詳細な手順が記載されています。
関連プロジェクト