Junos デバイスの Python 自動化スクリプトについて
Python スクリプトの概要
SLAX および XSLT の代わりに、ソフトウェア イメージの Python 拡張パッケージをサポートする Junos デバイスで Python スクリプトを作成して実行できます。Python は実用的で機能が豊富な言語で、ライブラリを幅広くサポートしており、カスタム スクリプトを作成できます。 表 1 では、Junos デバイスで使用可能な Python バージョンの概要を示し、特定のタイプのスクリプトに対してそのバージョンのサポートが追加または削除されたリリースをメモしています。
Python バージョン |
リリース |
変更 |
影響を受けるスクリプトタイプ |
---|---|---|---|
Python 2.7.x |
Junos OS リリース 16.1R1 以降 |
サポートを追加しました |
コミット、イベント、運用、SNMP スクリプト Juniper Extension Toolkit(JET)スクリプト YANG アクションおよび翻訳スクリプト |
Junos OS リリース 20.2R1 以降 |
サポートが削除されました |
YANG アクションおよび翻訳スクリプト |
|
Junos OS リリース 21.1R1 以降 |
サポートが削除されました |
コミット、イベント、運用、SNMP スクリプト Juniper Extension Toolkit(JET)スクリプト |
|
Junos OS Evolved リリース 22.3R1 以降 |
サポートが削除されました |
コミット、イベント、運用、SNMP スクリプト Juniper Extension Toolkit(JET)スクリプト YANG アクションおよび翻訳スクリプト |
|
Python 3.x |
Junos OS リリース 19.4R1 以降 |
サポートを追加しました |
コミット、イベント、運用、SNMP スクリプト |
Junos OS リリース 20.2R1 以降 |
サポートを追加しました |
Juniper Extension Toolkit(JET)スクリプト YANG アクションおよび翻訳スクリプト |
|
Junos OS Evolved リリース 21.1R1 以降 |
サポートを追加しました サポートされているプラットフォームについては、 機能エクスプローラー を参照してください。 |
コミット、イベント、運用、SNMP スクリプト Juniper Extension Toolkit(JET)スクリプト YANG アクションおよび翻訳スクリプト |
Python 2.7 のサポート終了およびサポート終了日は 2020 年 1 月 1 日でした。Python 2.7 の正式なアップグレード パスは Python 3 です。オンボックス スクリプトの種類に応じて Junos OS を実行するデバイスに Python 3 のサポートが追加されるため、サポートされているスクリプト タイプを Python 2 から Python 3 に移行することをお勧めします。
Python スクリプトは、Python 言語のすべての機能と構成要素を活用できます。この Python 言語は、SLAX と XSLT よりも柔軟性が高く、SLAX と XSLT では実行が困難または不可能な操作を実行できます。SLAX と XSLT は XML データ処理用に設計されていますが、Python はあらゆる形式の処理に適しています。Python は、リスト、辞書、セット、タプルなど、幅広いデータ型のリストをサポートしており、ほとんどの SLAX や XSLT 変数とは異なり、多くの Python 変数は変更可能です。SLAX および XSLT スクリプトではループ制御は制限されますが、Python スクリプトは、 などのbreak
continue
ステートメントを使用して、ループの動作を正確に制御できます。Python はファイル操作も幅広くサポートしており、コマンド ラインで標準の Python デバッガを呼び出して、Python op スクリプトをデバッグできます。
さらに、Junos OS は Python スクリプトで以下をサポートしています。
Junos PyEZ ライブラリ:RPC の実行と、Junos OS を実行するデバイスでの運用および設定タスクの実行を簡素化します。
lxml
ライブラリ:XPath の処理を簡素化します。Jinja2ライブラリ:定義済みのテンプレートからコンテンツを生成できるテンプレートエンジンで、Junos OS設定データの生成に役立ちます。
IPv6 — Junos OS リリース 19.3R1 以降、Python 自動化スクリプトで IPv6 を使用して Junos OS とアップグレードされた FreeBSD を実行するデバイス。詳細については、 Python 自動化スクリプトでの IPv6 サポートを参照してください。
非デフォルトルーティングインスタンス-Junos OSリリース19.3R1以降、サポートされているデバイス上のPythonスクリプトは、 set_routing_instance() 拡張機能を使用して、非デフォルトのルーティングインスタンスを介してリモートデバイスに接続できます。
その他の Python モジュール — Junos OS を実行するデバイス上の Python スクリプトで使用可能なモジュールについては、「 Junos OS を 実行するデバイス上の Python モジュールの概要」を参照してください。
Junos OS を実行しているデバイスで不正な Python コードが実行されないようにするには、符号なし Python スクリプトがデバイス上でスクリプトを実行する前に特定の要件を満たす必要があります。Junos OS を実行するデバイスで Python 自動化スクリプトを実行するための要件の詳細については、「 Junos デバイスで Python 自動化スクリプトを実行するための要件」を参照してください。
Python 2.7またはPython 3のいずれかを使用して符号なしPythonスクリプトを実行するには、 階層レベルで、 または language python3
ステートメントをそれぞれ設定language python
する[edit system scripts]
必要があります。ステートメントをlanguage python3
設定した場合、デバイスはこのPythonバージョンをサポートするスクリプトを実行するためにPython 3を使用し、表1に記載されているように、Python 2.7を使用して、特定のJunos OSリリースでPython 3をサポートしていないスクリプトを実行します。
JET スクリプトの場合、スクリプトがサポートする Python バージョンに対応する ステートメントのバージョンを設定する必要があります。たとえば、Python 2.7 のみをサポートする JET スクリプトに ステートメントを設定 language python3
すると、スクリプトの実行時にランタイム エラーが発生します。
コミット、イベント、Op、SNMPスクリプトのPythonスクリプト入力
Python 自動化スクリプトをサポートする Junos OS を実行するデバイスには、コミット、イベント、op、SNMP スクリプトにインポートできる次のモジュールが含まれています。
jcs
モジュール — SLAX および XSLT スクリプトで使用可能な拡張機能関数とテンプレートのサブセットへのアクセスを提供します。Junos OS 拡張機能とテンプレートの詳細については、 Junos OS 自動化スクリプトの拡張機能についてと Junos OS 自動化スクリプトの名前付きテンプレートについてを参照してください。
junos
モジュール—表 2 にJunos
概説されているクラスとスクリプトの入力が含まれています。
Python オブジェクト |
型 |
スクリプト タイプ |
説明 |
XSLT/SLAX 同等品 |
---|---|---|---|---|
|
辞書 |
コミット イベント Op |
デバイスホスト名、スクリプトタイプ、スクリプトを実行するユーザーなど、スクリプト実行環境に関するデバイス固有の情報。 |
commit-script-input/junos-context event-script-input/junos-context op-script-input/junos-context |
|
lxml.etree _Element |
コミット |
継承後の候補構成(Junos XML 形式)。 |
commit-script-input/configuration |
|
lxml.etree _Element |
イベント |
対応するイベント ポリシーをトリガーしたイベントの詳細。 |
event-script-input/trigger-event |
|
lxml.etree _Element |
イベント |
トリガー・イベントの前に発生した相関イベントの詳細。 |
event-script-input/received-events |
|
一連のリモート デバイスを生成するジェネレータ機能。 |
イベント |
階層レベルでイベントスクリプトに設定されたローカルまたはリモートホストの |
event-script-input/remote-execution-details |
さまざまなスクリプト入力と、自動化スクリプトにインポートして使用する方法の詳細については、以下を参照してください。
Python スクリプト リソース
表 3 は、Junos OS を実行するデバイス上で Python スクリプトを作成および実行するのに役立つリソースを示しています。 表 4 は、さまざまなタイプのスクリプトごとにリソースを提供します。
リソース |
ドキュメント |
---|---|
Python スクリプトの実行要件 |
|
Junos OS を実行するデバイス上の Python モジュール |
|
Python スクリプトでの IPv6 サポート |
|
Junos PyEZのドキュメント |
|
Python プログラミング言語のマニュアル |
スクリプト タイプ |
ドキュメント |
---|---|
Junos OS コミット、イベント、op、SNMP スクリプト |
|
Juniper Extension Toolkit(JET)スクリプト |
|
YANG アクションおよび翻訳スクリプト |