Python で CML 上のラボを定期的に自動停止する
以前に以下のメモを書きました。
現状の CML には定期的にラボを自動停止する機能は無く、気がつくと「起動したままのラボ」が乱立している場合があります。 今回は Python + cron で定期的に CML 上のラボを自動停止する方法をメモします。
以前に以下のメモを書きました。
現状の CML には定期的にラボを自動停止する機能は無く、気がつくと「起動したままのラボ」が乱立している場合があります。 今回は Python + cron で定期的に CML 上のラボを自動停止する方法をメモします。
Cisco CML には Tools Menu の中に Sample Labs
という機能があります。 予め所定のディレクトリにワークスペースの構成ファイル (YAML) を配置しておくことで Sample Labs
の一覧画面に表示され、それを Import
するだけですぐにワークスペースを用意出来ます。 また、CML 自体に「サンプルラボをロードする」という API は実装されています。
CML の操作を自動化するには cmlutils や virl2-client を利用することが出来ます。 ですが、Sample Labs
の機能は cmlutils や virl2-client には実装されていないようです。 その為、今回は直接、Python から Sample Labs
機能を利用する REST API を呼び出すサンプルスクリプトをメモしておきます。
virl2_client を使って CML 上のノードを全て停止するサンプルスクリプトをメモしておきます。
以前に下記のメモを書きました。
改めて CML 上での利用を想定した「各機器の検証用コンフィグ・テンプレート」をメモしておきます。
Cisco CML のバージョン情報を取得するスクリプトサンプルをメモしておきます。
Cisco CML 上のノード一覧を表示するスクリプトサンプルをメモしておきます。
Cisco CML 2.8.1 がリリースされていました。 既存環境からのアップグレード手順は CML 2.7.2 へアップグレードする にまとめてあります。
最近の CML は主に以下の 3 要素から構成されています。 Cisco SD-WAN を利用しないのであれば必ずしも Supplemental Reference Platform は必要ありません。 今回の 2.8.1 リリースタイミングでは Supplemental Reference Platform の更新はありませんが、Reference Platform は更新されています。 但し、Reference Platform の変更点は「TRex イメージの差し替え」のみです。 もし TRex イメージを利用していないのであれば、Reference Platform を更新する必要はありません。
今回の更新 | 項目 | 説明 |
---|---|---|
有り | CML 本体 | - |
有り | Reference Platform | TRex イメージのみ、更新されている |
- | Supplemental Reference Platform | 変更無し |
Cisco CML 上で動作する IOL (IOL L2) を使って VXLAN EVPN を設定した際のコンフィグをメモしておきます。 IOL は軽量で起動が早い為、気軽に検証することが出来ます。
以前に CML でノードライセンスを消費するノード・消費しないノード というメモを書きました。 CML は「同時に起動出来るノード数」は「インストールされているノードライセンス数」で決定されます。 これはあくまで「同時起動数」であり、起動しなければ無制限にノードを配置出来ます。 ライセンスがインストールされていない場合の挙動はバージョンによって異なります。
バージョン | ライセンス未インストール時の挙動 |
---|---|
2.8.0 未満 | ノードは 1 台も起動出来ない (サードパーティノードであっても起動出来ない) |
2.8.0 以降 | ノードは 5 台まで起動出来る (6 台以上起動するとエラーになる) |
ノードライセンスを超過した場合、Web UI では以下のようなエラーが表示されます。
今回は API アクセスしている場合のエラーをメモしておきます。 API アクセスには Python + virl2-client を用います。
Cisco CML のライセンス状態を Python から取得するサンプルコードをメモしておきます。 virl2_client.models.licensing の features() を利用することでライセンス状態を取得出来ます。