5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エーピーコミュニケーションズAdvent Calendar 2024

Day 13

NetBox v4.1で追加されたブランチ機能の紹介

Last updated at Posted at 2024-12-12

(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.は一般的なプラグインインストールでは行わない追加手順なので忘れないように注意が必要です。

  1. PostgreSQLでNetBox用ユーザにスキーマを作成する権限付与
  2. Python仮想環境に入り、プラグインをpipでインストール
  3. configuration.pyPLUGINにインストールしたプラグインを指定
  4. 動的スキーマ解決できるようにするため、local_settings.pyを追加
  5. データベースマイグレートを実行
  6. NetBoxを再起動

NetBox再起動後、右上にMainというボタンが表示されるとインストール成功です。

image.png

機能紹介

NetBoxプラグインをインストールすることで使える機能を紹介します。

ブランチ作成

Create a Branchを押下することで新規に開発ブランチを作成できます。
開発ブランチは複数作成でき、ブランチ名は作成後に変更することも可能です。

image.png

ブランチ用ページが作成され、この中で設定変更(作成, 更新, 削除)が管理できます。

image.png

例えば、開発ブランチに入ってVLANを作成すると、変更点が記録されます。
image.png

また、すでにMainブランチに存在するオブジェクトを操作した場合、以下画像のように開発ブランチで編集されていることが表記されます。

image.png

マージ

開発ブランチの変更結果は、MergeボタンよりMainブランチに反映します。
コンフリクトのチェックとドライラン機能もあるので、マージ後にデータがおかしくなる心配もなさそうです。

image.png

変更後は、開発ブランチのステータスがMergedとなりブランチが右上の選択肢から削除されます。

Main同期

開発ブランチを作成後にMain側を更新をした場合、差分が出てきます。
その場合は、開発ブランチ側で同期をすることでMain側の変更を開発ブランチに反映することができます。

同期時に変更点がある場合は、履歴に情報が追記されます。

image.png

Revert

開発ブランチをマージ後にデータ不備があった場合、Revertすることでデータをもとに戻して開発ブランチを再度編集可能にすることができます。

ただし、マージ後にMain側で変更した差分もすべてRevertされてしまうので注意が必要です。

Archive

ブランチをDBから完全に削除し、再度Revert、Activateできなくします。
変更ログは残されるので、マージから一定期間経過したらArchiveにするような運用でよいかと思います。

注意点

  • マージは、開発ブランチの作業ログを上から順にDB反映する仕様のため、作業途中に誤ってslug名を同一にするなどDB制約に引っかかるような作業をした場合、マージエラーが発生してマージできなくなる
  • NetBox自体のアップデートやプラグイン導入をする際は、ブランチは閉じたほうが良さそう

さいごに

まだ、運用上の課題点はありそうですが、十分商用でも利用できるレベルでNetBoxを利用する場合は必ず入れてもよい機能だと思いました。

NetBoxのブランチと自動化の仕組みを組み合わせてデータ登録は自動でブランチを分けて投入し、承認完了後にマージをするなど運用方法は無限大だと思うので今後も活用していきたいですね。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?