1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pythonからCMLを操作する

Posted at

シスコのCMLをpythonから操作するための環境設定に苦戦したのでメモを残します。
結論から言えば、なぜ動作しないのかよく分からなかったけど、
コードが動作するバージョンの組み合わせを確認しました、という内容です。

CMLについて

シスコのルータについて勉強したいけど、実機を買うのは高いしかさばる。
そんな人はシミュレータCML(Cisco Modeling Labs)を使うことを考えてみてはいかがでしょうか。

最近無料ライセンスが登場したので、手軽に試せるようになりました。
導入方法は本題ではないので、別のドキュメントにゆだねます。

いくつかの方法

CMLをpythonから操作する方法は複数あります。

  • virl2_clientを使う
    CMLをpythonから操作するのに用意されたライブラリです。

APIからノードを起動/停止したり、リンクを起動/停止したり、インタフェイスを起動/停止したり、できます。
しかし、装置にコマンドを投入して応答を取得する、みたいなことができなくて、以下の方法を探索することになりました。(ネットワーク運用の実務では、装置に直接コマンドを投入することも多いですので。。)

  • netmikoを使う
    netmikoとは、ネットワーク機器にSSHで接続し、コマンドを実行できるライブラリの一つです。
    virl2_clientのドキュメントでも以下のように言及されていたので、
    便利なのかなと思ったけど、netmikoに関する情報が少ないのと、とりあえず後述するpyATSで動作したので、深掘りは保留中です。
The following example shows how the VIRL2 client library can be combined with Netmiko.
  • pyATSを使う
    今回のトラブルの主役です。

ネットワーク運用の自動化に対応するために、割と力を入れて開発されているみたいです。

動かしたいサンプルコード

ネットで見かけたサンプルコードを加工して作成しました。

from virl2_client import ClientLibrary

VIRL_CONTROLLER = "XX.XX.XX.XX"
VIRL_USERNAME = "username"
VIRL_PASSWORD = "password"
LAB_NAME = "lab_name"
TARGET_NODE = "target_node"

client = ClientLibrary(VIRL_CONTROLLER,
                    VIRL_USERNAME,
                    VIRL_PASSWORD,
                    ssl_verify=False)

our_lab = client.find_labs_by_title(LAB_NAME)[0]
our_lab.pyats.sync_testbed(VIRL_USERNAME, VIRL_PASSWORD)
node = our_lab.get_node_by_label(TARGET_NODE)
result = node.run_pyats_command("ping YY.YY.YY.YY timeout 1 rep 2") # タイムアウト1秒、繰り返し2回
print(result)

1行目の通り、virl2_clientを使っているのですが、
装置へのコマンドにはrun_pyats_commandを使っていて、
これを実行する前にsync_testbedをしておかないといけなくて、
その前提としてpyatsをインストールしておく必要があります。

結局バージョンが大事

以下のバージョンの組み合わせで動作しました。

CML==2.7.2
python==3.12.3
pyats==24.10
virl2_client==2.7.1

参考文献

参考にしたのは以下のページです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?