はじめに
NetBox には、各オブジェクトの画面ごとにカスタムリンクを作成できます。

他のシステムへのリンクも作成できます。また、リンクやテキストにはオブジェクトの名前やJinja2構文を使って動的に変えることもできます。
活用例
例えば、以下のようなことが実現できます。
この記事では、カスタムリンクの作成方法をご紹介します。
- 動作確認環境
- NetBox 2.8.9
■ 基本的なカスタムリンクの作成方法
デバイスの管理画面に、そのデバイスのコンフィグを表示するためののリンク(GitHub リポジトリ上)を作る例をもとに、カスタムリンクの作成方法を説明します。
カスタムフィールド追加画面を開く
ここでは、カスタムフィールドの追加と同様に admin ユーザーで作業します。ログイン後、右上のメニューから Admin をクリックします。

全体の管理画面で、Custom links をクリックします。

カスタムフィールド一覧画面で ADD CUSTOM LINK をクリックします。

カスタムフィールド追加画面が表示されます。

カスタムリンクの内容を入力する
カスタムフィールド追加画面で内容を追加します
Content type
Content type では、カスタムリンクを作成したい対象のオブジェクトの種類を選択します。

例えばデバイスの画面に作成したい場合は dcim > devie を、IP アドレス画面に作成したい場合は、ipam > IP Address を選択します。
ここでは、dcim > devie を選択します。
Name
Name では、カスタムリンクの名前を入力します。リンクのテキストではなく、カスタムリンクそのものを区別するための名前です。
ここでは、config と入力します。
Group name (任意)
Group name では、このリンクを含めるグループの名前を入力します。
同じグループのリンクは、同じドロップダウンリストの 1つの項目になります。
以下の図は 、Group name に Select link を入力して複数のカスタムリンクをまとめた場合の例です。

Group name を入力しない場合は、横並びの独立したリンクになります。
ここでは、未入力にします。
Weight
Weight では、同じ画面に複数のカスタムリンクを作成する場合の表示順を指定します。
Weight が小さいリンクが左に、大きいリンクが右に表示されます。

ここでは、デフォルトの 100 のままにします。
Button class
Button class では、リンクのボタンの意味合いや色を指定します。
選択できる class と実際の表示は以下の通りです。

ここでは、デフォルトの Default のままとします。
New window
New window では、リンクを新しいウィンドウ(タブ)で開くかどうかを指定します。デフォルトはオフなので、同じ画面で開きます。
ここでは、チェックをいれます。
Text
Text では、リンクの表示上の文字列を指定します。
オブジェクトの名前などの情報や、Jinja2 構文が利用して、動的に内容を変更できます。
画面内の説明には、Reference the object as {{ obj }}. とあり、 {{ obj }} でオブジェクト名(例えばデバイス名)を参照できます。
Jinja2 のフィルターを併用して、例えば、{{ obj | replace('-', '_') }} とすると、core-rt-01 は core_rt_01 になります。
他にも条件式や、ユーザー、権限情報も利用できるようです。詳細は公式ドキュメントを参照してください。
他、obj でオブジェクトのどんな情報が使えるかは、以下の記事を参照してください。
ここでは config と入力します。
URL
URL では、実際のリンク先の URL を指定します。
http(s):// から始めると、外部のURLになります。
/hoge のように、/ から始めると、自サイトからのルートの指定になります。
例えば、http://netbox.example.com/dcim/devices/1/ を開いている場合は、リンクは http://netbox.example.com/hoge になります。
hoge のように、単純な文字列の指定だと、現在開いている URL の末尾に付加した URL になります。
例えば、http://netbox.example.com/dcim/devices/1/ を開いている場合は、リンクは http://netbox.example.com/dcim/devices/1/hoge になります。
また,先程の Text と同様に、オブジェクトの情報や Jinja2 構文が利用できます。
ここでは、https://github.com/akira6592/tekunabe/blob/master/config/{{ obj }}.txt を入力します。
この指定により、デバイス名が rt01 であれば{{{ obj }}.txt の部分が rt01.txt になります。
確認する
先程デバイス画面に対して作成したカスタムリンクを確認します。
任意のデバイス画面を開きます。画面右にカスタムリンクがあることを確認します。

リンクを開くと、デバイス名を含む URL が新しい開いたことを確認します。

※ このファイルはあとで削除するかもしれません。
■ おわりに
リンクがあるだけで、他システムとの連携がある程度できることもあるので、カスタムリンクは便利な機能だと思いました。