(2023/12/13修正)必要バージョンは正しくはv4.1
でしたので修正。
はじめに
本エントリはエーピーコミュニケーションズ Advent Calendar 2024の13日目のエントリです。
NetBoxはちょっと前にv4.1がリリースされました。
その際にブランチ機能(netbox-branching
)が出たのですが、これを使うことでNetBoxを大規模チームで使う上際のデータ管理がしやすくなりました。
本記事ではそのブランチ機能のインストール方法と使い方を紹介します。
ちなみに、v4ではまだ変な表現はあるものの日本語化にも対応しています。
UIも洗礼され使いやすくなっているので興味があれば公式でデモ環境も用意されているので触ってみることをお勧めします。
ブランチ機能
ブランチ機能はNetBox Labs
が開発したNetBoxプラグインです。
NetBox Labsは、NetBoxの主要開発メンバーが所属しており、NetBoxのEnterprise版を出している会社なので実質的に公式プラグインといえます。
機能は簡単に説明すると、NetBoxのデータをGitのようにブランチ分けできるようにするものです。
仕組みとしては、Mainブランチが実際のNetBoxデータで、開発ブランチをPostgreSQLのスキーマで表現して変更差分を管理しているようです。
この機能を使うことで、NetBoxへの設定変更を一度開発ブランチにまとめたうえで、一気にマージして設定反映をすることができます。
また、Mainブランチと開発ブランチで差分が発生した際も変更同期(Gitでいうgit pull main
)ができ、Revertすることも可能です。
イメージとしては公式ドキュメントから抜粋した以下の図が分かりやすいです。
マージ
Revert
ブランチ機能のインストール
ブランチ機能は、何点か注意点がありますが他のNetBoxプラグインと同様の方法でインストールできます。
詳細は、公式ドキュメントに記載されていますが要約すると以下の通りです。
手順の1.
と4.
は一般的なプラグインインストールでは行わない追加手順なので忘れないように注意が必要です。
- PostgreSQLでNetBox用ユーザにスキーマを作成する権限付与
- Python仮想環境に入り、プラグインをpipでインストール
-
configuration.py
のPLUGIN
にインストールしたプラグインを指定 - 動的スキーマ解決できるようにするため、
local_settings.py
を追加 - データベースマイグレートを実行
- NetBoxを再起動
NetBox再起動後、右上にMain
というボタンが表示されるとインストール成功です。
機能紹介
NetBoxプラグインをインストールすることで使える機能を紹介します。
ブランチ作成
Create a Branch
を押下することで新規に開発ブランチを作成できます。
開発ブランチは複数作成でき、ブランチ名は作成後に変更することも可能です。
ブランチ用ページが作成され、この中で設定変更(作成
, 更新
, 削除
)が管理できます。
例えば、開発ブランチに入ってVLANを作成すると、変更点が記録されます。
また、すでにMainブランチに存在するオブジェクトを操作した場合、以下画像のように開発ブランチで編集されていることが表記されます。
マージ
開発ブランチの変更結果は、Merge
ボタンよりMainブランチに反映します。
コンフリクトのチェックとドライラン機能もあるので、マージ後にデータがおかしくなる心配もなさそうです。
変更後は、開発ブランチのステータスがMerged
となりブランチが右上の選択肢から削除されます。
Main同期
開発ブランチを作成後にMain側を更新をした場合、差分が出てきます。
その場合は、開発ブランチ側で同期
をすることでMain側の変更を開発ブランチに反映することができます。
同期時に変更点がある場合は、履歴に情報が追記されます。
Revert
開発ブランチをマージ後にデータ不備があった場合、Revertすることでデータをもとに戻して開発ブランチを再度編集可能にすることができます。
ただし、マージ後にMain側で変更した差分もすべてRevertされてしまうので注意が必要です。
Archive
ブランチをDBから完全に削除し、再度Revert、Activateできなくします。
変更ログは残されるので、マージから一定期間経過したらArchiveにするような運用でよいかと思います。
注意点
- マージは、開発ブランチの作業ログを上から順にDB反映する仕様のため、作業途中に誤ってslug名を同一にするなどDB制約に引っかかるような作業をした場合、マージエラーが発生してマージできなくなる
- NetBox自体のアップデートやプラグイン導入をする際は、ブランチは閉じたほうが良さそう
さいごに
まだ、運用上の課題点はありそうですが、十分商用でも利用できるレベルでNetBoxを利用する場合は必ず入れてもよい機能だと思いました。
NetBoxのブランチと自動化の仕組みを組み合わせてデータ登録は自動でブランチを分けて投入し、承認完了後にマージをするなど運用方法は無限大だと思うので今後も活用していきたいですね。