NetBoxを使ってみよう 1回: NetBoxとは

# 概要

最近自宅で利用している仮想環境上のマシンが最近増えてきたため、そのIPアドレス管理としてNetBoxを触ってみました。
その際に触って機能や構築方法等をまとめていきます。


## 本記事の対象
- 自宅ラボのIPアドレス管理に困っている方
- デバイスがたくさんあって管理しきれない方
- NetBoxを触ってみたい方


## 全記事
内容が思ったより多くなったため、以下記事に分けています。

- 1回: Netboxとは ← 今ココ
- [2回: 構築をしてみる](https://qiita.com/strawberryjam/items/3ff4436036c7f1cd0916)
- [3回: データの登録 (organization & Device)](https://qiita.com/strawberryjam/items/461b6ab82136262de288)
- [4回: 仮想マシンの登録](https://qiita.com/strawberryjam/items/41a8b47b423e9e2d10bc)
- [5回: IPAM (IPアドレス管理)](https://qiita.com/strawberryjam/items/79432a2d4cc566e25b0e)
- [6回: プラグイン導入](https://qiita.com/strawberryjam/items/1af613105ff4a1d9517f)


# NetBoxとは

NetBoxはデータセンターやネットワークのインフラストラクチャ管理に特化したOSSのツールになります。厳密にはIPアドレスやデータセンターの物理機器、仮想リソースなどの情報を集約して、インフラのデータソースとして利用できます。
開発言語はPythonで、DjangoをベースとしたWebアプリケーションになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/de85c786-a6c8-f7d2-2088-0a9cb215d1d8.png)

https://github.com/netbox-community/netbox

## 歴史

NetBoxは2015年にDigitalOcean社にて社内向けに開発がされました。
当初は社内のIPアドレスとネットワークデバイス管理のために設計されていましたが、その機能の汎用性が広がり、2016年にオープンソースプロジェクトとして公開されました。
そこから現在に至るまで世界中の多くのメンテナーによって機能強化やプラグイン開発が進められています。


## 提供する機能

一部抜粋する形になりますが、以下のような機能を提供しています。
基本的にはインフラの情報のデータを一箇所に蓄えて、各データの関係性の可視化や他ソフトウェアからのデータソースとして用いられます。

| 機能         | 概要                            |
| ---------- | ----------------------------- |
| IPAM       | IPアドレス, サブネット, VLANの管理やトラッキング |
| デバイス管理     | 物理及び仮想リソースのモデル化と関係性の管理        |
| ラック管理      | DC内のラックの構成やデバイスの配置や電源管理       |
| インターフェース管理 | デバイスのインターフェースの接続状態を可視化        |
| NetBox API | 登録されているインフラ情報をAPIにて提供         |

他にも多くの機能や、プラグインを用いることで更に様々な機能を利用したりできます。

https://netboxlabs.com/netbox-plugins/

## ユースケース

ユースケースとしてはざっくりと以下のようなものが上げられると思われます。
もちろん活用方法は様々です。

| ユースケース                | 概要                                                     |
| --------------------- | ------------------------------------------------------ |
| データセンター管理 (DCIM)      | 大規模で複雑なインフラ環境にて、各リソースの配置や情報を一元管理                       |
| ネットワーク自動化             | NetBox APIを利用することで、Ansibleなどの自動化ツールと連携してインフラの構成変更等を効率化 |
| IPアドレスのトラッキング等 (IPAM) | サブネットやIPアドレスの割り当てを可視化し、効率的にIPアドレスを利用                   |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/79c1c188-a9ee-8d1d-ff11-6e485d7cad7d.png)

## NetBoxの提供形態について

NetBoxは以下3つの提供がされています。

- NetBox Community
- NetBox Enterprise
- NetBox Cloud

### NetBox Community
こちらは無償で利用可能な範囲のものになります。

https://github.com/netbox-community

このあとの記事でのインストール方法や機能の使い方等はこのCommunityで実施していきます。

なお、展開方法としてLinuxマシンにソフトウェアを展開するパターンとDockerにてコンテナとして動作させる方法があります。
それぞれGithubのリポジトリが異なりますので注意ください。

通常版
https://github.com/netbox-community/netbox
Docker版
https://github.com/netbox-community/netbox-docker

### NetBox Enterprise
こちらは有償ですがサポートを受けたり、NetBoxの専門エンジニアから支援を受けたりすることができるものになります。
また、どうやらOSS版にはない機能も搭載されていたりするようです。

https://netboxlabs.com/netbox-enterprise/

### NetBox Cloud
最後にこちらはSaaSとして提供されているものになります。
NetBox自体のリソースをSaaS側に委ねられつつ、定期的な自動バックアップから復元、ワンクリックでのアップグレードなどがメリットとしてあげられています。

https://netboxlabs.com/netbox-cloud/



# まとめ

今回は”NetBoxとは”というところでざっくり概要を紹介しました。
先んじて実際に触ってみた感想を書くと、デバイス管理等はやはりラック等を用いてガッツリ使っている場合に使うことが多いかなという感想です。
一方IPAMとかは自宅ラボのような小規模環境でも全然使える機能な印象です。

次回は実際に構築を行っていき、それ以降の記事にて実際に使っていく様子を見せられればと思います。

**次の記事はこちら**

https://qiita.com/strawberryjam/items/3ff4436036c7f1cd0916

## おまけ

NetBoxにはデモ版が公開されており、UIや使い勝手を事前に確認することができます。
ログイン画面からユーザーを作成するを選択して、一意の名前と任意のパスワードを入力することで1日ログインできるようになります。

サンプルでデータもたくさん入っているため、まずは使用感等を見たい方は一旦こちらを触ってみるのが良いかもです。
https://demo.netbox.dev/

ちなみに”A”や”test”といった名前は、基本誰かしらがすでに使っているので、作成時には注意ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406495/75efe8e3-0efa-223f-5369-5e78aad540a7.png)