Help us understand the problem. What is going on with this article?

Juniper JUNOS PyEz (python library)を試すメモ 1 ~PyEz概要~

More than 3 years have passed since last update.

1.概要

近年、AI、ロボット、自動化などの注目が高まっており、ネットワークでもオートメーション/自動化、スクリプティングというのが注目されている。メジャーネットワークベンダーのひとつであるJuniper Networksは、ネットワークOSのJUNOSにて、以下のようなオートメーションスタックにより様々なツールやAPIを公開し、多様なオートメーション要求に対応できる環境を提供している。

image

今回は、その中で、あまり日本語の情報が検索できなかった、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*2 
 PyEz Techwiki
 Python EZ Google

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away