こんにちは、インフラグループの片桐です。
この記事はEnigmo Advent Calendar 2024 の 14 日目の記事として、サーバ機器管理台帳を表計算 ツールから OSS の「NetBox」に移行した取り組みについて紹介します。
はじめに
サーバ機器やネットワーク機器、各機器に付随するIPアドレス の情報など、サーバ機器や関連情報をまとめる為に「機器管理台帳」は欠かせないものになっています。その中で、機器管理台帳はExcel やGoogle スプレッドシート 等の表計算 ツールで管理されているケースもよく見られます。
表計算 ツールを台帳として機器管理している場合、台帳の規模が拡大するにつれて、管理すべき各種情報が複数のシートやファイルに分散しがちです。これにより管理コストが増大し、整合性の維持も難しくなります。こうした状況に心当たりのある方も多いのではないでしょうか。
弊部署も同様に、表計算 ツールを用いた煩雑な機器管理に悩まされていました。そこで、データセンターのインフラ管理(DCIM)とIPアドレス 管理(IPAM)を兼ねるツールであるNetBoxを導入し、機器情報管理の一元化・整合性維持を試みました。本記事では、機器管理台帳の表計算 ツール管理からNetBox移行について、取り組み内容、移行に際する知見等を紹介します。
用語の整理
DCIM
DCIM(Data Center Infrastructure Management)は、データセンターに関連するサーバ機器やネットワーク機器、ラック、配電や配線、設備など、さまざまなリソースを管理・可視化するためのツールや手法のことです。DCIMおよびDCIMツールを導入することで、ハードウェア配置や容量、ネットワーク接続状況などを一元管理することが可能となります。
IPAM
IPAM(IP Address Management)は、ネットワーク内で使用されるIPアドレス を一元的に管理し、その割り当てや利用状況、変更履歴などを可視化・追跡するためのツールや手法のことです。IPAM及びIPAMツールを導入することで、利用可能なアドレス空間 のシステム的な管理と、管理に伴ったIP重複割り当ての予防等が可能となります。
NetBox
NetBoxは、DCIMとIPAMの機能を併せ持つOSS です。サーバ機器やラック構成、IPアドレス 、ケーブル接続など、データセンターまわりの情報を一元的に、かつわかりやすく管理することに特化しています。
WebインターフェースやREST API を通して各機器やネットワーク関連のデータを登録・編集・参照できるため、機器情報の管理をするだけでなく、管理の簡略化・自動化も可能です。
お試しで触りたい方向けの公式デモ版サイトも公開されています。
github.com
移行の背景と課題
これまで、弊部署の機器管理台帳には複数ファイル/複数シートを跨ぐGoogle スプレッドシート を使用しており、以下をはじめとする各種情報を管理していました。
ハードウェア関連:機材情報、シリアル番号、ラック配置、納品日/保守期限、各機材のLAN接続状況
ホスト関連:ホスト名、各NIC ごとのIPアドレス 割り当て状況
etc...
台帳上の各機器について、あるシートではホスト名とIPアドレス の紐づけ、あるシートではホスト名とラック上の設置位置の紐づけ...等、1箇所のデータを更新した際に関連するデータを複数シート上で合わせて更新する運用でした。
一方、この管理方式には以下の様な課題もあります。
台帳更新の煩雑さ:
1つの機器について複数ファイル/複数シートを跨いで情報が登録されている場合。
シート上のある箇所を変更した際、別シートや別セルの依存箇所も特定して修正する必要がある。
依存箇所を漏れなく特定できる運用フローや仕組み構築が必要になる。
整合性管理の困難さ:
台帳更新の煩雑さ にも関連。
依存箇所の修正漏れが起きやすい状況下にて、依存データ間で整合性の取れていないデータが発生した場合に事実確認の手間が発生する。
外部連携の困難さ:
機器管理台帳に限らず、表計算 ツールで作成された各種データファイルが完全なCSV 形式で構築されていない場合。
台帳上に存在する情報を読み込んでプログラマブル に利用したい場合や、外部のシステムにデータを取り込む際、各環境が扱える状態に一度変換する手間がある。
これらの課題に対してNetBoxを導入し、対応を試みました。
NetBoxのデプロイ
NetBoxのデプロイ先として、社内向けツール用に構築しているEKS(Amazon Elastic Kubernetes Service)クラスタ 上に構築しました。
インストールには、Netbox CommunityのGitHub 上で公開されているHelmチャート(netbox-chart) を使用しました。
github.com
helmを利用する場合は利用ガイド を読みながら、ご自分の環境に合わせてvalues.yaml の各値を変更してセットアップする流れとなります。
特に管理者ユーザ周りの設定値 はログイン時に使用するため、ご利用の環境に合わせて事前設定することをおすすめします。
NetBoxへのデータ登録
NetBoxに登録できる項目について
データの登録を始める前に、既存の機器管理台帳では何の情報を管理しているのか、NetBoxには何の情報を登録できるのかを一通り把握しておくことを推奨します。
ドキュメントをご参照いただくと分かる通り、NetBoxに登録できる項目は多岐にわたり、かつきめ細かい情報を登録であるため、最初から全ての情報を入れ込むことが難しい場合も想定されます。
(以下NetBox ドキュメントの models 配下の大項目、並びに大項目配下の詳細情報を各機器/各グループ毎に入力可能となっています。)
github.com
もしスモールスタートで「データセンタ内の機器情報、ラックへの機器マウント情報、各機器へのLAN配線、VM ホストとゲストVM の紐づけ、各NIC へのIPアドレス アサイ ン」程度で運用を開始したい場合は、以下図のmodel項目を参考に入力していくことで簡素版な環境を構築可能です。
データの登録
NetBoxの導入を検討した当初はスプレッドシート 上に散在していた情報を1件ずつ確認しながら手動で登録することも考えていましたが、登録すべき情報を整理していく中で、数百台以上の機器やIPアドレス 、接続情報等をすべて手動で移行するのはあまりにも現実的ではない事に気付きました。
一方、NetBoxには機器追加/変更/削除等のデータ操作を楽にする為の仕組みが複数整備されており、一括でのデータ操作が可能となっています。
CSV /YAML 形式での一括インポート:
NetBoxのWEBインターフェースの機能として、CSV /YAML 形式でのデータの一括インポートに対応しています。
登録するデータを各形式に整形して事前に整備出来ている場合、各model毎のWEB UI上から楽にデータをインポート可能です。
1行目に各modelに対応するヘッダを、2行目以降に登録するデータを入力する形で定義します。
CSV 形式インポートの入力例
上記2種類の一括操作方法を実施して、既存の機器管理台帳上のデータを移行していきました。
移行前の情報を整理した上で、完全に正規化されたCSV を作成するべき
移行前のスプレッドシート には現状との乖離として、例えば以下の様な不整合が発生していました。
新しいホストに付け替えたIPアドレス が古い機器に付随されたままになっている。
ホスト名を変更したが、旧ホスト名のまま台帳に登録されている。
不整合を一つ一つ修正するのは非常に手間の掛かる作業となる上、独自管理の形式から完全な状態のCSV 形式に落とし込むことは、手間と時間の掛かる作業となります。
一方、NetBoxには強力なCSV インポート機能が備わっているため、一度完全な状態のCSV を作成してしまえば、NetBoxの運用は直ぐにでも開始可能です。
私は不整合の解消作業は実施したものの、完全な状態のCSV を作成する前に移行を始めてしまった為、変更が必要な所はREST API を使用して適宜修正する形での対応となりました。
再度移行作業を実施する機会のある際には、完全に正規化されたCSV を作成してから実施すべきと実感しました。
NetBoxに登録する情報の精査と入力先カラムの確認
前述の完全に正規化されたCSV を作成した後は、CSV 上のカラムをNetBox上のどのモデルに入れるかを予め検討しておくべきでした。
ラックの情報は dcim > racksに、機器のモデル名やシリアルは dcim > devicesに、IPはipam > ip-addressesに登録出来る、あるいはこの項目について入力できそうな項目が存在しない、等を先行して把握しておくべきでした。
例えば、NetBoxには機器の納品日や保守期限といった項目を入力出来る箇所が標準項目としては存在しません。
そのため、機器情報の自由記述欄となる Comment カラムに入力するか、カスタムフィールド を追加することで、標準機能外の情報管理もNetBox上で可能になります。
一括登録を実施する前に、整理されたCSV の項目とNetBoxの入力項目を比較して、このデータは何処に入るのか?を明確にしておくとスムーズなデータの投入が可能でした。
カスタムフィールドで機材納品日の入力欄を追加する例
NetBox導入によって感じたメリット
情報の一元管理と可視化:
NetBox移行後はIPアドレス 、機器モデル、シリアルナンバー、物理配置、接続関係など、あらゆる情報をNetBoxで一元的な管理が可能となりました。
スプレッドシート を利用していた頃は、ある箇所を修正した際依存する情報の修正を、複数シート/複数ファイルに跨って手動で行う必要がありました。
NetBox移行後には依存情報の修正も行われるため、整合性保持にも寄与します。
エクスポート/インポートの柔軟性:
前述の通り、NetBoxにデータを登録する際はCSV /YAML 形式でのインポートが可能です。
また、NetBoxに登録されている情報は、CSV /YAML 形式でのエクスポートも可能であるため、将来的に別の管理基盤へ移行する際にもデータ移行が容易になることが見込まれます。
拡張性と自動化:
NetBoxにはREST API や各種WebHookが実装されています。API による台帳上のデータの一括操作が可能になった他、WebHookによって台帳に新規機材が追加された際にSlackなどチャットツールに通知する等の対応が可能となりました。別途仕組み作りを実施することで柔軟な対応が可能となるため、今後の拡張性として期待が高まりました。
サーバラック の情報可視化例。ラックの色のついている部分には登録した機器が紐づいている
まとめ
スプレッドシート からNetBoxへと台帳管理を移行した結果、情報一元化や更新作業の効率化が期待できる基盤が整いました。初期構築やデータ整備に手間はかかりましたが、その分、長期的な整合性維持と運用自動化の可能性が大きく広がりました。
一方、現時点では、NetBoxの基本的な機能を用いて、ハードウェアとIPアドレス 、簡易な接続情報を一元管理する段階にとどまっています。今後は運用を通じてAPI やWebHookの活用やNetBoxのプラグイン導入 など、さらなる効率化と可視化を進めていきたいと考えています。
明日の記事の担当はWEBアプリケーションエンジニアの小松さんです。お楽しみに。
株式会社エニグモ すべての求人一覧
hrmos.co