#1.概要
近年、AI、ロボット、自動化などの注目が高まっており、ネットワークでもオートメーション/自動化、スクリプティングというのが注目されている。メジャーネットワークベンダーのひとつであるJuniper Networksは、ネットワークOSのJUNOSにて、以下のようなオートメーションスタックにより様々なツールやAPIを公開し、多様なオートメーション要求に対応できる環境を提供している。
今回は、その中で、あまり日本語の情報が検索できなかった、PythonのフレームワークであるPyEz(パイイージー)というのを試してみる。
PyEzとはPythonをEasyに使用できるというものらしく、熟練のプログラマでなくても簡単にpythonでリモートからの情報取得/抽出や設定変更が可能となる。
Juniperのドキュメントには、PyEzにより、以下が提供されるとある。※1
- デバイスからオペレーション情報やfactsを取り出したり、Junos XML APIにより、RPC(remote procedure call)を実行可能
- Junos OSのインストール、再起動、シャットダウンのようなソフトウェアユーティリティを提供
- コンフィグレーションの比較、レスキューコンフィグレーション設定、コンフィグ変更のアップロードなどのマネージメントユーティリティの提供
- コンフィグ変更のアップロードに関しては、ASCII text, Junos XML elements,Junos OS setコマンドに加え、 Jinja2テンプレートや柔軟にカスタマイズ可能なテンプレートがサポート
- ファイルコピーやチェックサム計算などの共通的な管理者タスクをシステムユーティリティで提供
- Tables and Viewsを使用し、オペレーション情報やコンフィグレーション情報を稼働しているJunos OSから効率的に取得
- Tables and Viewsにより、RPCに相当するJunos OSコマンドが利用でき、情報の抽出やカスタマイズも可能
- これらを活用することで、show routeやshow intefaceなどの組み込まれたコマンドの出力結果から、必要なフィールドのみを抽出することが可能
尚、検索できるドキュメントは英語ばかりになるが、PyEz Techwikiや、Python EZ Googleなどもあるため、そちらで確認や質問もできそう。
#2.環境準備
今回は無償で試せるvSRX ※2 とAWS EC2の無償枠で使用できるサーバー(Amazon Linux AMI 2016.03.3)を利用し、PyEzで設定確認や設定変更を試してみる。
PyEzを使うには、junos-ezncというパッケージをインストールする必要があるが、そのために、Junos PyEZ Dependenciesを参考に、使用するOSに応じてパッケージをインストール。
AWS Linux AMIはRHELをベースにしたAWS独自提供のLinux OSのためCentOSに必要なパッケージをインストール。
しかし、pipコマンド(# pip install junos-eznc)によりPyEzのパッケージをインストールしようとしたが、"fatal error: openssl/opensslv.h: No such file or directory"となった。よって、openssl-develもインストールしたら、junos-ezncもインストール可能となった。
尚、現在のPyEzは、python 2.6 または 2.7がサポートされており、AWS Linux AMIにはPython2.7がプリインストールされている。
正常にインストールできた場合は、pytyonで以下のようなPyEz関連のモジュールのインポートが可能となる。
$ python
>>> from jnpr.junos import Device
>>>
正常にインストールできていない場合は、例えば、以下のようなエラー。
>>> from jnpr.junos import Device
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named jnpr.junos
各モジュールは、こちらを参照。
実際のコネクションはnetconf over SSHを使用するため、JUNOSもあらかじめ設定が必要となる。
user@host# set system services netconf ssh port 22
user@host# commit
これで、環境準備ができたため、次回は、JUNOSの情報取得や設定変更を試してみる。
#参考リンク:
Juniper Tech Library: Junos PyEZ*1
[slide share:PCではじめるvSRX] (http://www.slideshare.net/JuniperJapan/vsrx-laptop-201505)*2
PyEz Techwiki
Python EZ Google