はじめに
本ドキュメントでは、CML ( Cisco Modeling Labs ) に対して使用可能なサンプルスクリプトを紹介します。本ドキュメント上のスクリプトは、サンプルスクリプトとなるため、使用の際は内容の確認・動作検証を行った上でご使用ください。
※本ドキュメントは、バージョン 2.0.0-b13 で検証しています。
CML の ユースケース
CML のユースケースは多くあるとは思いますが、1 つのユースケースとして、以下の図のようにラボの作成と、複製や破棄を繰り返すライフサイクルが想定されます。
本ドキュメントでは、Cisco Modeling Labs (CML) API Demo for simulation lifecycle や、Cisco Modeling Labs (CML)を使ってネットワークを学ぼう! で紹介されているサンプルスクリプト( hellocml.py や import.py )について簡単に紹介します。
Demo を動かしてみる
準備
Cisco Modeling Labs (CML) API Demo for simulation lifecycle に記載されているサンプルスクリプトを動かすため、CML に対するアクセスする情報を env_lab.py に記述する必要があります。
# env_lab.py
CML = {
"host": "<cml_ip_address>",
"username": "<username>",
"password": "<password>"
}
例1 hellocml.py
Cisco Modeling Labs (CML) API Demo for simulation lifecycle に記載されているサンプルコードの hellocml.py を使用します。
hellocml.py と env_lab.py が同じ Directory に存在する状態で、
hellocml.py を使用すると、今 CML に存在するラボとそのステータス一覧が確認することができます。
% python hellocml.py
#################################################################################################################
# Simulated labs on CML: 19 at CML Lab <cml_ip_address>
#################################################################################################################
Test by tatsaito 2020-06-11 13:33:46 STOPPED https://<cml_ip_address>/lab/866cb6
test by rmaruyam 2020-06-11 09:17:08 DEFINED_ON_CORE https://<cml_ip_address>/lab/b3a6eb
To DNAC96 2020-06-17 05:01:40 STARTED https://<cml_ip_address>/lab/2ba4d1
snip
#################################################################################################################
例えば、”To DNAC96 ”というタイトルのラボは、今 STARTED ステータスです。つまりこのラボ内の機器は動いていると判断できます。また、STOPPED ステータスの場合は、一度ラボ内の機器を起動させたが、今はすべての機器が停止していると判断できます。
例2 import.py
以下のドキュメントで紹介していますが、CML ではラボ情報を、Yaml ファイルとして Download することができます。
import.py は 、
ラボ情報が記述された Yaml ファイルから、新しいラボを作成することができます。例として、test-topology.yaml をインポートし、test-topo2 という名前のラボを作成した場合が以下となります。
% python import.py test-topology.yaml
Please input an lab title [type q to quit]: test-topo2
test-topology.yaml
<Response [200]>
例3 delete.py
最後に
ラボの削除を行うスクリプト、
delete.py を試します。各ラボにはユニーク ID として、ラボ ID が付与されています。ラボ ID は、各ラボの URL から確認することが可能です。
もしくは、先程の hellocml.py でも確認できます。
% python hellocml.py
#################################################################################################################
# Simulated labs on CML: 19 at CML Lab <cml_ip_address>
#################################################################################################################
vxlan-Multisite 2021-07-31 10:23:10 STOPPED https://<cml_ip_address>/lab/15b2a1
略
ラボ ID が、
15b2a1 であることが確認できたため、Stop ステータスの vxlan-Multisite というタイトルのラボを delete.py で削除します。
% python delete.py
Please input lab ID to be deleted? [type q to quit]: 15b2a1
<Response [200]>
なおこの
delete.py は、ラボ内の機器を停止し、かつ Wipe した上で削除することができます。
以上がサンプルスクリプトの実行例の紹介となります。
CML に対する API やクライアントライブラリが公開されているため、検証工程で何度も行うような操作に関しては、自作してみてはいかがでしょうか。
参考情報
Cisco Modeling Labs
Cisco Modeling Labs Release Notes
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!
Cisco Modeling Labs : CML で使用できる API と programmability について
停止しているラボを開始するスクリプトを作成した例
Cisco Modeling Labs : CML に対するスクリプト作成例1
動いているラボを強制的に停止し、削除するスクリプトの作成例
Cisco Modeling Labs : CML に対するスクリプト作成例2