今お仕事させていただいている国立情報学研究所では Literate Computing for Reproducible Infrastructureと銘打って、仮想環境の整備をするNotebookとかHadoopクラスタを構築するNotebookとかを公開しているわけですが、最初のとっかかりとしてJupyterとAnsibleがインストールされた環境を用意するところがちょっと考えどころになります。
Macを使っておられる方はいずれもpipでさっくり入るわけですが、Windowsだと色々悩みどころが出てきます。
まあ、インフラ系ツールを積極的に使うんならLinuxとかMacとか使えよという話はあるわけですが、今回はその悩みどころを我らがニューカマーBash on Ubuntu on Windows(以下BoW)で何とかしてみることにします。
BoWに取り組む前に・・・
個人的感想ではありますが、BoWはまだまだ発展途上感は否めないので、それなりに苦労する覚悟が必要そうという感じです。他にも、WindowsでJupyterを触るやり方はいくつかあるかなと・・・
Anacondaを使う?
Jupyterからデータサイエンス分野のツールを使うのであれば、Anacondaが最も楽なんじゃないかと思います。
AnacondaはWindows向けのインストーラも用意されていて、Anacondaをインストールした後 conda install jupyter
とかすればさっくりjupyter.exeがインストールされます。あとはjupyter notebook
とか実行するとちゃんと動きます。便利。
ただ、悩みどころがAnsibleで、Windows Support での記述の通り、ansibleのクライアントとしてはLinuxマシンのみが想定されていて(操作ターゲットとしてはWindowsもいけるわけですが)、Windows上でansibleをクライアントとして使うには結局BoWとかCygwinとかが必要になります。
Dockerを使う?
WindowsでのDockerもHyper-V統合されたりして結構こなれてきたと個人的には思っています。
やり方の概観は、ローカル環境でJupyter Notebookを動かすときの俺的ベストプラクティスを参照してください。最新はもっと楽になっていると思います。(編集しなきゃ・・・)
BoWでJupyter+Ansibleを動かす
で、本題。BoWでJupyterとAnsibleを動かしてみることにします。
BoWでJupyterを動かそうとした場合、2016/11/13現在、Insider Previewのリリース プレビュー版では(たぶんリリース版も)、WSL(Windows Subsystem for Linux)のシステムコール実装の問題でZeroMQが正常に動作しません。
この問題を回避するため、Issue Cannot connect to jupyter/ipython instance で紹介されているパッチをあてたバージョンのZeroMQを利用する必要があります。手順としては以下のイメージ。
-
Bash on Ubuntu on Windowsをインストールする
-
BoW上でJupyterをインストールする
以下のコマンドを実行すればOK。$ sudo apt-get update $ sudo add-apt-repository ppa:aseering/wsl $ sudo apt-get update $ sudo apt-get install python-pip python-zmq libzmq3 $ sudo pip install jupyter
-
BoW上でAnsibleをインストールする
$ sudo pip install ansible
-
Jupyter Notebookを実行する
$ jupyter notebook --no-browser
とかすればOK。
Notebookのディレクトリやポート番号などの設定はjupyter notebook --generate-config
して、生成されたconfigファイルを変更すればよい。
という感じ。これで、ブラウザから http://localhost:8888
でNotebookを開いて、NotebookからAnsibleを実行できるようになります。
ポイントは、add-apt-repository ppa:aseering/wsl
した後に sudo apt-get install python-zmq libzmq3
すること。この手順によりBoW対応のパッチがあたったバージョンのlibzmq3と、それを使う形でコンパイルされたPython用のZMQモジュールをインストールすることができます。
aptからでなくpipなどでpyzmqを個別にインストールしていたりすると、バンドル版の(パッチがあたっていない)ZMQが動いたりするので要注意。どうにも動かない場合はlxrun /uninstall /full
した後にlxrun /install
してBoWをいったん再インストールして再現性をみるのがよいかもしれません。
これで、BoWを介しているとは言え比較的素直にWindows上でもjupyterとansibleが使えるようになります。具体的に各Notebookの使い方を解説していきたいところなんですが、それはまた別の機会に。