はじめに
NetBox はオープンソースの IPAM、DCIM です。
たとえば、ネットワーク機器の情報を登録して、インターフェースへ IP アドレスを登録したりできます。
デフォルトでも様々な設定項目がありますが、必要に応じて追加できます。それがカスタムフィールドです。
この記事ではかんたんなサンプルで、カスタムフィールドの追加方法を紹介します。
- 動作確認環境
- NetBox 2.8.9
カスタムフィールドを追加する
ここでは admin ユーザーで作業します。ログイン後、右上のメニューから Admin をクリックします。

Admin 画面の Custom fields の Add をクリックします。

カスタムフィールドの追加画面が表示されます。
Object(s) では、カスタムフィールドを追加したい対象のオブジェクトを選択します。複数選択もできます。

ここではデバイスに追加するものとして、dcim > device を選択します。
例1: 数値項目の追加
デバイスに bgp_asn というカスタムフィールドを追加します。
AS番号は数値なので、Type は Integer を選択します。

なお Type は以下から選択できます。
- Text (デフォルト)
- Integer
- Boolean (true/false)
- Date
- Selection
入力を終えたら、ページ下部の Save and another ボタンをクリックして、次のカスタムフィールドを追加する画面にうつります。

例2: 選択項目の追加
デバイスに、select_hoge というカスタムフィールドを追加します。 選択肢としていくつか追加します。
Type は Selection を選択すます。

あわせて、ページ下部の CUSTOM FIELD CHOICES 欄で選択肢を入力します。

ページ下部の Save ボタンをクリックして、カスタムフィールドの追加作業をおえます。
デバイスへのカスタムフィールドの値の設定
ここまでで、カスタムフィールドの追加ができました。データベースの列を追加したイメージです。まだ各行(ここではデバイスごと)に実際の値は入っていません。
ここから実際に、既存のデバイスにカスタムフィールドの値を設定します。
Admin 画面を抜け、通常の NetBox の画面から、対象のデバイス設定変更画面を開きます。
Customom fields 欄に、追加カスタムフィールドが2つ表示されます。(新規追加画面にも表示されます)

カスタムフィールド設定画面で設定した Label と Descirption は画面でも確認できます。Name については画面には表示されずウラで管理のために利用さているイメージのようです。
select_hoge の方は Name のに設定して、Labelや Desciption は設定しませんでしたが、微妙に整形されて Select hoge というラベルととして表示されました。
ためしに、適当な値を入力、選択して保存します。

確認
設定したカスタムフィールドの値を確認します。
デバイスの情報表画面には以下のように表示されます。

API でこのデバイスの情報を GET すると、以下のようになりました。JSON 上のキーは、カスタムフィールドの Name が使用されています。されています。選択肢の項目は、value と label に分かれるようです。value はなんでしょうこれは・・。インデックスだと思うのですが、0オリジンでも1オリジンでもなく、2オリジンのように見えます。value ではなく label だけ意識すればよさそうです。
{ "count": 1, "next": null, "previous": null, "results": [ { "id": 1, "name": "rt01", "display_name": "rt01", // (略) "custom_fields": { "bgp_asn": 65001, "select_hoge": { "value": 3, "label": "piyo2" } }, // (略) } ] }
おわりに
NetBox を使ってみたいけど、ちょっとだけ管理項目が足りないというときに、カスタムフィールドは便利そうです。