はじめに

以前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でしか提供されていないようです。

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のディレクトリ上でビルドします。
docker build ./ -t jupyter-inet
    • ビルドしたDockerImageをデプロイします。

 

    • ※ホスト側のポートが重複する場合は任意のポート番号にそれぞれ置き換えてください。

 

    例:-p 18000:8000など
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で動く

Screenshot-2019-3-19 demo(1).png
HTML(r'<iframe width="1024" height="560" src="http://localhost:8000/example/" frameborder="0" allowfullscreen></iframe>')

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

广告
将在 10 秒后关闭
bannerAds