2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

お題は不問!Qiita Engineer Festa 2023で記事投稿!

[NetBox]Remote Data Sources機能を使ってGitデータ同期してみる

Last updated at Posted at 2023-06-25

はじめに

今更ですがNetBox v3.5.0でRemote Data Sources機能がリリースされました

ドキュメントでは、以下説明があります。

A data source represents some external repository of data which NetBox can consume, such as a git repository.
Files within the data source are synchronized to NetBox by saving them in the database as data file objects.

簡潔に説明すると、Local,Git,Amazon S3のようなデータソースのファイル(とその中身)をNetBoxに同期して管理できるようです。

同期したファイルの活用方法や既存データとどう組み合わせるかはまだ検討段階のようですが
現状、Scripts機能で使うスクリプトファイルやConfig Contextsのデータを管理することができるようになっています。

本記事では、Remote Data Sourcesの説明も兼ね
Scripts機能と連携してデータとスクリプトをGitで管理し、データ同期するような仕組みを作ってみました。

全体構成

構成は以下の図の通り。

image.png

GitHubレポジトリにNetBoxデータとスクリプトを配置します。

NetBox側ではRemote Data SourcesでGitHubからデータを同期し、
ScriptsでPythonスクリプトを実行してNetBoxデータオブジェクトを作成・更新します。

今回は、Sitesオブジェクトのみを同期します。

GitHub

今回作った構成用のレポジトリ。
同じレポジトリにスクリプトとデータファイルを配置しています。

  • スクリプトファイル: scripts/load_data_sources.py
  • データファイル(Sites情報): netbox_data.yml

NetBox

Resource Data Sources

まずは、Data Sourcesより、GitHubに公開したレポジトリを登録します。

Ignore rulesでは、同期対象外のファイルを正規表現で指定することができます。
今回はすべてのファイルを同期対象にするため未記載です。

image.png

プライベートレポジトリであればオプションでGitユーザ、パスワードも指定できます。
パスワードは暗号化されず、Web上もマスクされないので注意

image.png

Saveを押してオブジェクトを作成し、Syncボタンよりデータを同期します。

image.png

数秒でファイルが同期され、NetBox上からファイルの中身や変更日が確認できます。

同期は、現状手動しか対応指定なさそうです。
そのため、定期的に自動同期をしたい場合はScripts機能でスケジュール設定をした上でAPIを叩く必要がありそうです。

image.png

image.png

Scripts

次にスクリプトを登録します。

Scriptsより、先ほど登録したData Sourcesのスクリプトファイル(今回だと、scripts/load_data_sources.py)を選択します。

Auto sync enabledにチェックを入れると、Remote Data Sourcesの同期を行った際にスクリプト側のファイルも更新されるようです。

image.png

Scriptsオブジェクトができれば、選択してスクリプトを実行します。

Data Source, Data Filenetbox_data.ymlを選択してRunを押すとスクリプトが実行されてSiteデータが作成されます。

image.png

image.png

おわりに

今まで、Scriptsの機能はユースケースが見いだせずに使っていませんでしたがRemote Data Sources機能ができたことで、外部データ連携が容易になり色々と使えそうなので、今後も何か思いつき次第検証します。

また、Data Sources機能についても今後FTPやHTTPを外部ソースとして使えるようにしていくらしいのでそちらの動向も待ちたいと思います。

NetBoxから他のデータソースを統合して管理することができることにより、NetBoxがSSOTとして更に進化したと感じました。
まだデータの活用方法がスクリプトありきですが、開発が進まり抽象化したうえで万人には使いやすくなればと思います。

参考リンク

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?