DigitalOcean が公開した NetBox を使ってみる

DigitalOcean

Infrastructure as a Newsletter — July 07, 2016 にて

DO’s network engineering team created NetBox, a tool that manages both IP address management (IPAM) and datacenter infrastructure management (DCIM).

とあったので早速試してみました。

Django と PostgreSQL で作られた IP アドレスと DataCenter のラック、サーバー、ネットワーク、電源などを管理するツールです。

NetBox の GitHub を覗いてみると docker-compose.yml があったので早速試してみようと

$ curl -LO https://raw.githubusercontent.com/digitalocean/netbox/develop/docker-compose.yml
$ docker-compose up -d

としてみましたが

Pulling netbox (digitalocean/netbox:latest)...
Pulling repository docker.io/digitalocean/netbox
ERROR: Error: image digitalocean/netbox not found

とエラーになってしまいました。repository が private なのかな?

netbox repository には Dockerfile もあったので clone して docker-compose.yml の

image: digitalocean/netbox

build: .

に書き換えて再度

$ docker-compose up -d

したら無事起動しました。Docker 便利!!

NetBoxHome

次のような構成になってます。

DCIM

Sites
Geographic locations
Racks
Equipment racks, optionally organized by group
Devices
Rack-mounted network equipment, servers, and other devices
Connections
Interfaces
Console
Power

Secrets

Secrets
Sensitive data (such as passwords) which has been stored securely

IPAM

Aggregates
Top-level IP allocations
Prefixes
IPv4 and IPv6 network assignments
IP Addresses
Individual IPv4 and IPv6 addresses
VLANs
Layer two domains, identified by VLAN ID

Circuits

Providers
Organizations which provide circuit connectivity
Circuits
Communication links for Internet transit, peering, and other services

できることはだいたい racktables と同じ感じです。

RackTablesHome

Site (DataCenter) があり、そこに Rack を並べ、Device (サーバーやストレージ、スイッチなど) を配置します。Device にはネットワークなどのインターフェースを登録し、それがどの Device のどのポートと接続されてるかも管理できます。(全部登録するのは結構面倒…)

RackTables を使ってるならわざわざ乗り換える必要は無い感じですかね。個人的にはデザインは NetBox の方が好きです。Device はロールごとに色を設定できるのでラックのマウント状況を確認する画面が見やすかったりもしますね。

何ができるのか試していませんが https://github.com/digitalocean/go-netbox という golang で書かれた API クライアントがあるのは便利かもしれません。

RackTables にも https://github.com/xing/racktables_api とかあるみたいですけど。

RackTables は PHP と MySQL のシステムです。PHP + MySQL か Python (Django) + PostgreSQL かというのも選定ポイントかな。