こんにちは、インフラグループの片桐です。
この記事は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 スプレッドシートを使用しており、以下をはじめとする各種情報を管理していました。
台帳上の各機器について、あるシートではホスト名とIPアドレスの紐づけ、あるシートではホスト名とラック上の設置位置の紐づけ...等、1箇所のデータを更新した際に関連するデータを複数シート上で合わせて更新する運用でした。
一方、この管理方式には以下の様な課題もあります。
- 台帳更新の煩雑さ:
- 1つの機器について複数ファイル/複数シートを跨いで情報が登録されている場合。
- シート上のある箇所を変更した際、別シートや別セルの依存箇所も特定して修正する必要がある。
- 依存箇所を漏れなく特定できる運用フローや仕組み構築が必要になる。
- 整合性管理の困難さ:
- 台帳更新の煩雑さ にも関連。
- 依存箇所の修正漏れが起きやすい状況下にて、依存データ間で整合性の取れていないデータが発生した場合に事実確認の手間が発生する。
- 外部連携の困難さ:
これらの課題に対してNetBoxを導入し、対応を試みました。
NetBoxのデプロイ
NetBoxのデプロイ先として、社内向けツール用に構築しているEKS(Amazon Elastic Kubernetes Service)クラスタ上に構築しました。
インストールには、Netbox CommunityのGitHub上で公開されているHelmチャート(netbox-chart)を使用しました。
helmを利用する場合は利用ガイドを読みながら、ご自分の環境に合わせてvalues.yamlの各値を変更してセットアップする流れとなります。 特に管理者ユーザ周りの設定値はログイン時に使用するため、ご利用の環境に合わせて事前設定することをおすすめします。
NetBoxへのデータ登録
NetBoxに登録できる項目について
データの登録を始める前に、既存の機器管理台帳では何の情報を管理しているのか、NetBoxには何の情報を登録できるのかを一通り把握しておくことを推奨します。
ドキュメントをご参照いただくと分かる通り、NetBoxに登録できる項目は多岐にわたり、かつきめ細かい情報を登録であるため、最初から全ての情報を入れ込むことが難しい場合も想定されます。 (以下NetBox ドキュメントの models 配下の大項目、並びに大項目配下の詳細情報を各機器/各グループ毎に入力可能となっています。)
もしスモールスタートで「データセンタ内の機器情報、ラックへの機器マウント情報、各機器へのLAN配線、VMホストとゲストVMの紐づけ、各NICへのIPアドレスアサイン」程度で運用を開始したい場合は、以下図のmodel項目を参考に入力していくことで簡素版な環境を構築可能です。
データの登録
NetBoxの導入を検討した当初はスプレッドシート上に散在していた情報を1件ずつ確認しながら手動で登録することも考えていましたが、登録すべき情報を整理していく中で、数百台以上の機器やIPアドレス、接続情報等をすべて手動で移行するのはあまりにも現実的ではない事に気付きました。
一方、NetBoxには機器追加/変更/削除等のデータ操作を楽にする為の仕組みが複数整備されており、一括でのデータ操作が可能となっています。
- REST APIでのデータ操作:
上記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アプリケーションエンジニアの小松さんです。お楽しみに。
株式会社エニグモ すべての求人一覧