Netbox DockerでNetbox Pluginを動かしてみる
1. はじめに
NetBox v2.8でPlugin機能[1]が追加されました。 NetBox Pluginは既存の機能に拡張機能を簡単に追加できるようにしたものです。 また、拡張機能の開発が簡単になりました。
今回はPluginをNetBox Docker[2]にInstallしてみた時のメモを書いておこうと思います。
install方法は公式のWiki[3]を参照しただけなので、そちらを参照したほうがわかりやすいかもしれません。
2. 概要
このセクションではNetbox DockerへPluginがInstallされるまでの大まかな原理について説明します。 PluginのInstallがどのように行われているかについて興味がない人は3. PluginのInstallセクションまで飛ばしてください。
まずInstallする前のNetbox Dockerのコンテナ構成を見てみます。
$ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------------------------------- netbox-docker_netbox-worker_1 python3 /opt/netbox/netbox ... Up netbox-docker_netbox_1 /opt/netbox/docker-entrypo ... Up netbox-docker_nginx_1 nginx -c /etc/netbox-nginx ... Up 80/tcp, 0.0.0.0:8000->8080/tcp,0.0.0.0:32773->8080/tcp netbox-docker_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp netbox-docker_redis-cache_1 docker-entrypoint.sh sh -c ... Up 6379/tcp netbox-docker_redis_1 docker-entrypoint.sh sh -c ... Up 6379/tcp
Netbox DockerはNginx, PostgreSQL, Redis, NetBoxApp(Django App)が動作しています。
詳細なApplication Stackはドキュメント[4]を参照してください。
今回、重要になってくるコンテナはNetBoxApp(Django App)であるnetbox-docker_netbox1
とnetbox-docker_netbox-worker_1
になります。
この2つのコンテナにPluginをInstallすることによって、Pluginが動作するようになります。
PluginをInstallする方法として、2つのコンテナに直接PluginをInstallする方法があります。しかし、この方法は2つのコンテナを直接変更する必要があるためあまりスマートではありません。
またNetboxのバージョンをUpdateするときなどに管理が大変になります。
そのため公式Wikiで紹介されている方法はPlugin用のコンテナを新たに作成し、まずそこへPluginをInstallします。
Pluginはrequirements.txt
を利用してpipでinstallします。
その後docker-composeのoverride機能[5]を使用して、netbox-docker_netbox1
とnetbox-docker_netbox-worker_1
にPluginをInstallしたコンテナをOverrideします。
3. PluginのInstall
このセクションでは実際にPluginをInstallする方法について説明します。
今回はNetBox Onboarding plugin
[6]をInstallしたいと思います。
3.1 Requirements
Netbox DockerでPluginをInstallするには4つのファイルを作成または変更する必要があります。
新たに作成するファイルは以下の3つになります。
- plugin_requirements.txt
- Dockerfile-Plugins
- docker-compose.override.yml
また、変更が必要なファイルは以下になります。
- configuraiton.py
3.2 Install
まずNetbox DockerをGithubからCloneしてきます。
$ git clone https://github.com/netbox-community/netbox-docker.git && cd $(basename $_ .git)
3.1で説明した3つのファイルを作成します。
$ touch plugin_requirements.txt Dockerfile-Plugins docker-compose.override.yml
plugin_requirements.txt
にinstallしたいplugin名を記載します。
ntc-netbox-plugin-onboarding
Dockerfile-Plugins
に以下の内容を記載します。
FROM netboxcommunity/netbox:latest copy ./plugin_requirements.txt / RUN pip install --no-warn-script-location -r /plugin_requirements.txt
docker-compose.override.yml
に以下の内容を記載します。
version: '3.4' services: nginx: ports: - 8000:8080 netbox: build: context: . dockerfile: Dockerfile-Plugins image: netbox:latest-plugins netbox-worker: image: netbox:latest-plugins
configuraiton.py
の一番に下にinstallしたいPlugin名とPluginのConfig(今回は書いてない)を以下のように記載します。
PLUGINS = ["netbox_onboarding"] # PLUGINS_CONFIG = { # "netbox_onboarding": { # ADD YOUR SETTINGS HERE # } # }
コンテナをBuildして、Deployします。
$ docker-compose build --no-cache $ docker-compose up -d
http://localhost:8000/plugins/onboarding/にアクセスして以下のような画面が表示されると、Installは成功です。
Pluginの使い方やConfigはドキュメントを参照してください。
4. まとめ
NetBox v2.8で追加されたPluginをNetBox Dockerで使用してみました。
現在、リリースされているPlugin[7]はまだ少ないですが今後増えていくことに期待したいですね。
次回はNetBox Pluginの開発方法について書きたいと思います。
5. 参考
[1] NetBox v2.8 Release Notes : https://netbox.readthedocs.io/en/stable/release-notes/version-2.8/
[2] NetBox Docker : https://github.com/netbox-community/netbox-docker
[3] Using Netbox Plugins : https://github.com/netbox-community/netbox-docker/wiki/Using-Netbox-Plugins
[4] Application Stack : https://netbox.readthedocs.io/en/stable/
[5] docker-compose.override.yml : https://docs.docker.jp/compose/extends.html#id12
[6] NetBox Onboarding plugin : https://github.com/networktocode/ntc-netbox-plugin-onboarding
[7] Plugin List : https://github.com/topics/netbox-plugin