てくなべ (tekunabe)

ansible / network / automation / StackStorm

[Batfish] allinone イメージの Jupyter Notebook から自前のコンフィグディレクトリを利用可能にする方法



これは Batfish Advent Calendar 2018 の8日目の記事です。



■ はじめに

ネットワークコンフィグ分析ツール Batfish には公式 Docker イメージが2つあります。

  • イメージ1: batfish/batfish
    • batfish 本体の イメージ
  • イメージ2: batfish/allinone
    • batfish 本体と Python ライブラリ、かんたんにお試しできる Jupyter Notebook やサンプルコンフィグ入りイメージ

オールインワンな batfish/allinone は便利ですが、公式のコンテナ起動手順例ではデフォルトではあらかじめ用意されたサンプルコンフィグしか利用できません。もちろん Jupyter Notebook 経由でアップロードや、新規作成もできますが、少々手間に感じます。

そこで、本記事では batfish/allinone の環境の Jupyter Notebook から自前のコンフィグディレクトリを利用可能にする方法を説明します。

■ 公式のコンテナ起動手順例では、用意されたコンフィグのみ利用可能

公式のコンテナ起動手順例は以下のとおりです。

docker run -p 8888:8888 batfish/allinone

この手順で起動した Notebook では、以下のようなディレクトリ構造が見えます。

notebooks ディレクトリあらかじめ用意されたサンプルコンフィグファイルが格納されたディレクトリです。

f:id:akira6592:20181208185848p:plain
公式手順例ではサンプルコンフィグのみ

■ /notebooks ディレクトリ配下にマウントすると、自前コンフィグ利用可能になる

Notebook に表示されるディレクトリは、コンテナ側の /notebooks です。 そのため、Notebook 上で、自前コンフィグがある別のディレクトリをマウントするには、/notebooks ディレクトリ配下にマウントすれば良いことになります。

例えば、自前コンフィグがあるディレクトリが mynetworks であれば、以下のコマンドでコンテナを起動します。

docker run -p 8888:8888 -v $(pwd)/mynetworks:/notebooks/mynetworks batfish/allinone

この手順で起動した Notebook では、以下のようなディレクトリ構造が見えます。

f:id:akira6592:20181208185941p:plain
自前コンフィグディレクトリ mynetworks をマウントして利用可能に

mynetworks ディレクトリが自前コンフィグのディレクトリです。

もし、batfish/allinone イメージにもともとある、.ipynb ファイルや networks ディレクトリなどさえも不要の場合は、以下のようにします。

docker run -p 8888:8888 -v $(pwd)/mynetworks:/notebooks batfish/allinone

■ まとめ

  • batfish/allinone イメージの Jupyter Notebook は、コンテナ側の /notebooks ディレクトリを表示する
  • -v $(pwd)/mynetworks:/notebooks/mynetworks のようにマウントすると自前コンフィグも Notebook から利用できるようになる

参考

tekunabe.hatenablog.jp