LoginSignup
4
1

More than 5 years have passed since last update.

Jupyter(Ansible Kernel)で無理矢理inet-henge表示させてみた

Posted at

はじめに

以前nwdiagをJupyter Notebookに表示させる記事を書きましたが、
nwdiag × Ansible plugin × Jupyter でNWトポ図の生成
NW自動化で自動構成図生成を進めるにつれてL3のNWトポロジー図だけでは表現できないユースケース(BGPトポロジなど)があり、
そこでinet-hengeを使ってBGPトポロジを表現して補完するようにしてみました。

また、Jupyter NotebookのAnsible Kernel上で実行することで、
NWトポロジー図の作図した構成情報を流用して、NW機器への設定投入自動化も可能にしました。

Inet-hengeについて

Nwdiagとは違い、InteropのShowNetのトポロジー図のようなノード間の繋がりの表現に特化したトポロジーが描けるjsライブラリです。
https://github.com/codeout/inet-henge

git cloneして、pythonなどで簡易httpサーバを立てるとexampleのトポロジー図が確認できます。

Jupyter Notebook(Ansible Kernel)について

Juputer Notebookは通常はPythonかShellでの対話式プログラム実行となりますが、
Jupyter Notebook(Ansible Kernel)は
ansibleのPlaybookにおけるtaskごとに対話式に実行できるようになっています。

詳しい使い方は公式のgithubページを参照ください。
https://github.com/ansible/ansible-jupyter-kernel

Dockerfile

Inet-henge + nwdiag(おまけ)をJupyter Notebook(Ansible kernel)のコンテナ上に構築するDockerfileは以下になります。
残念ながら、配布されているDockerImangeはまだPython2.7でしか提供されていないようです。

shell
FROM benthomasson/ansible-jupyter-kernel

USER root
RUN yum install -y git ansible
RUN pip install nwdiag runipy textfsm jmespath
RUN git clone https://gist.github.com/a8e8269d4331b6b93e7ef90744fe0b3b.git
RUN git clone https://github.com/t-tkgh/nwdiag_filter.git
USER notebook
RUN git clone https://github.com/codeout/inet-henge.git

Dockerの構築

  • 作成したDockerfileのディレクトリ上でビルドします。
shell
docker build ./ -t jupyter-inet
  • ビルドしたDockerImageをデプロイします。 ※ホスト側のポートが重複する場合は任意のポート番号にそれぞれ置き換えてください。 例:-p 18000:8000など
shell
docker run -idt --name notebook -p 8888:8888 -p 8000:8000 jupyter-inet
  • 作成したDockerインスタンスへログインして、jupyter notebookのtoken情報を取得する。 bash:shell docker exec -it notebook /bin/bash jupyter-notebook --list

demoについて

※nwdiagもAnsible Kernelで動く

  • inet-hengeを表示するJupyter Notebookのデモを公開しています。
    以下のgistのipynbをJupyter Notebook上にUploadして実行してください。
    https://gist.github.com/t-tkgh/cd777a3423f995295b6ca49858b2e83c
    以下のような図が生成されます。

    • inet-hengeで自動生成したBGPトポロジ図 Screenshot-2019-3-19 demo.png
    • nwdiagで自動生成したL3トポロジ図 Screenshot-2019-3-19 demo(1).png
  • コンテナデプロイ時に-p 8000:8000からホストのポートを変更している場合は、
    In [9]: の以下のlocalhost:8000の部分を変更したポート番号へ変更してください。

shell
HTML(r'<iframe width="1024" height="560" src="http://localhost:8000/example/" frameborder="0" allowfullscreen></iframe>')

時間が作れたらpy_d3で直接inet-henge実行して、svgファイルで保存して参照する形にしてみます。

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